summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/funcs_worklogger.py6
-rw-r--r--test/test_args.py55
-rw-r--r--test/test_functions.py45
3 files changed, 75 insertions, 31 deletions
diff --git a/src/funcs_worklogger.py b/src/funcs_worklogger.py
index ccf0b69..9c076e3 100644
--- a/src/funcs_worklogger.py
+++ b/src/funcs_worklogger.py
@@ -1,5 +1,5 @@
#!/opt/homebrew/bin/python3
-
+# Thinking of modifiying parse() to .replace() any , or protected chars and send it down then reconvert them later
"""
IMPLEMENTATION FILE FOR WORKLOGGER
author: Wacky404 <wacky404@dev.com>
@@ -60,7 +60,7 @@ def _prep_write(format, s_log, p_settings, _dt, k_args):
}
for key, val in k_args.items():
if key == 'message':
- cp_kwargs['desc'] = val
+ cp_kwargs['desc'] = f'"{val}"'
continue
elif key == 'proj' and val is not None and p_settings is not None:
job_projects = p_settings[str(
@@ -79,6 +79,8 @@ def _prep_write(format, s_log, p_settings, _dt, k_args):
elif key == 'end' and val == 'now':
cp_kwargs['end'] = f"{dt.strftime("'%H:%M'")}"
continue
+ elif key == 'job':
+ cp_kwargs['job'] = f'"{val}"'
cp_kwargs[key] = val
diff --git a/test/test_args.py b/test/test_args.py
index 9ca0110..ff492ac 100644
--- a/test/test_args.py
+++ b/test/test_args.py
@@ -1,12 +1,15 @@
# TODO: Don't forget to strftime the fake dates for my TIME_FORMAT
from src.args_worklogger import parser
from argparse import Namespace
+from pprint import pprint
import subprocess
import os
import unittest
import random
+import json
+# 2024-11-29T02:45:40UTC
TIME_FORMAT = "%Y-%m-%dT%H:%M:%S%Z"
FIELDS = ["timestamp", "job", "proj", "loc", "time", "start", "end", "desc"]
@@ -14,33 +17,46 @@ FIELDS = ["timestamp", "job", "proj", "loc", "time", "start", "end", "desc"]
class TestArgs(unittest.TestCase):
fields = ''
for x in FIELDS:
- if x == 'start' or x == 'end':
- continue
fields += f'{x},'
- cmd = f'fake -n {random.randint(50, 100)} date,job,word,word,time,sentence -f json -c ' + fields
- print(cmd)
+ cmd = f'fake -n {random.randint(50, 100)} date_time,job,word,word,time,time,time,sentence -f json -c ' + fields
data = subprocess.getoutput(cmd)
- print(data)
+ json_data: dict = {"logs": []}
+ for line in data.split('}'):
+ if not line:
+ continue
+
+ _propjson = line + '}'
+ json_data["logs"].append(json.loads(_propjson))
+
+ for log in json_data["logs"]:
+ _ts = log["timestamp"].split()
+ _tscorrect = ''
+ for i, ele in enumerate(_ts):
+ if i == 1:
+ _tscorrect += 'T'
+ _tscorrect += ele
+ log["timestamp"] = _tscorrect + 'UTC'
def test_argsbase(self):
- _flags = parser.parse_args(
- [
- 'not so great company',
- '-p', 'govwork',
- '-loc', 'remote',
- '-t', '1',
- '-s', 'now',
- '-m', 'testing again, does this work'
- ]
- )
- self.assertIsInstance(_flags, Namespace)
- _flagsDict = vars(_flags)
- self.assertIsInstance(_flagsDict, dict)
+ for log in self.json_data["logs"]:
+ _flags = parser.parse_args(
+ [
+ f'{log["job"]}',
+ '-p', f'{log["proj"]}',
+ '-loc', f'{log["loc"]}',
+ '-t', f'{log["time"]}',
+ '-s', f'{log["start"]}',
+ '-m', f'{log["desc"]}'
+ ]
+ )
+ self.assertIsInstance(_flags, Namespace)
+ _flagsDict = vars(_flags)
+ self.assertIsInstance(_flagsDict, dict)
def test_argsmerge(self):
_filetypes = ['csv', 'text', 'json']
for file in _filetypes:
- _flags = _flags = parser.parse_args(
+ _flags = parser.parse_args(
[
'test_job',
'merge', f'{file}',
@@ -48,7 +64,6 @@ class TestArgs(unittest.TestCase):
]
)
- print(_flags)
self.assertIsInstance(_flags, Namespace)
_flagsDict = vars(_flags)
self.assertIsInstance(_flagsDict, dict)
diff --git a/test/test_functions.py b/test/test_functions.py
index 97f80fb..b5aa25a 100644
--- a/test/test_functions.py
+++ b/test/test_functions.py
@@ -1,19 +1,46 @@
-from funcs_worklogger import configure, parse, add_log, combine_log, send_email
+# TODO: ADD in fake text data then start writing tests for functions, want to change some things with the functions first
+from src.funcs_worklogger import configure, parse, add_log, combine_log, send_email
+from pprint import pprint
import unittest
import subprocess
import csv
import json
+import random
+
+
+TIME_FORMAT = "%Y-%m-%dT%H:%M:%S%Z"
+FIELDS = ["timestamp", "job", "proj", "loc", "time", "start", "end", "desc"]
class TestFunctions(unittest.TestCase):
- data_csv = subprocess.getoutput(
- ["fake -n 50 'date_this_year, company, user_name, address, pyint, text' -f csv -c timestamp,job,proj,loc,time,message"]
- )
- print(data_csv)
- data_json = subprocess.getoutput(
- ["fake -n 50 'date_this_year, company, user_name, address, pyint, text' -f json -c timestamp,job,proj,loc,time,message"]
- )
- print(data_json)
+ fields = ''
+ for x in FIELDS:
+ fields += f'{x},'
+
+ json_cmd = f'fake -n {random.randint(50, 100)} date_time,job,word,word,time,time,time,sentence -f json -c ' + fields
+ data = subprocess.getoutput(json_cmd)
+
+ json_data: dict = {"logs": []}
+ for line in data.split('}'):
+ if not line:
+ continue
+
+ _propjson = line + '}'
+ json_data["logs"].append(json.loads(_propjson))
+
+ csv_data: list[list] = [[k for k in json_data["logs"][0].keys()]]
+ for log in json_data["logs"]:
+ _ts = log["timestamp"].split()
+ _tscorrect = ''
+ for i, ele in enumerate(_ts):
+ if i == 1:
+ _tscorrect += 'T'
+ _tscorrect += ele
+ log["timestamp"] = _tscorrect + 'UTC'
+
+ csv_data.append([v for v in log.values()])
+
+ pprint(csv_data)
def test_configure(self):
pass