diff options
| -rw-r--r-- | src/funcs_worklogger.py | 6 | ||||
| -rw-r--r-- | test/test_args.py | 55 | ||||
| -rw-r--r-- | test/test_functions.py | 45 |
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 |
