From 5104eb7b33c386b6df7508405917408855e1468c Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Sun, 5 May 2024 06:00:43 +0200 Subject: [PATCH] Improve Todo tests. --- tests/__pycache__/__init__.cpython-311.pyc | Bin 159 -> 0 bytes tests/__pycache__/conditions.cpython-311.pyc | Bin 7905 -> 0 bytes tests/__pycache__/days.cpython-311.pyc | Bin 9381 -> 0 bytes tests/__pycache__/misc.cpython-311.pyc | Bin 12040 -> 0 bytes tests/__pycache__/processes.cpython-311.pyc | Bin 23173 -> 0 bytes tests/__pycache__/test_days.cpython-311.pyc | Bin 10170 -> 0 bytes tests/__pycache__/todos.cpython-311.pyc | Bin 31699 -> 0 bytes tests/__pycache__/utils.cpython-311.pyc | Bin 20337 -> 0 bytes .../versioned_attributes.cpython-311.pyc | Bin 10579 -> 0 bytes tests/todos.py | 72 +++++++++--------- tests/utils.py | 2 +- 11 files changed, 36 insertions(+), 38 deletions(-) delete mode 100644 tests/__pycache__/__init__.cpython-311.pyc delete mode 100644 tests/__pycache__/conditions.cpython-311.pyc delete mode 100644 tests/__pycache__/days.cpython-311.pyc delete mode 100644 tests/__pycache__/misc.cpython-311.pyc delete mode 100644 tests/__pycache__/processes.cpython-311.pyc delete mode 100644 tests/__pycache__/test_days.cpython-311.pyc delete mode 100644 tests/__pycache__/todos.cpython-311.pyc delete mode 100644 tests/__pycache__/utils.cpython-311.pyc delete mode 100644 tests/__pycache__/versioned_attributes.cpython-311.pyc diff --git a/tests/__pycache__/__init__.cpython-311.pyc b/tests/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 61bbc59d28896b1aae02ae323b761c1ce9c15bbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmZ3^%ge<81k55#X(0MBh=2h`DC095kTIPhg&~+hlhJP_LlF~@{~09t%Sb;XKQ~ps zASXXpzo0ZJCo?&|D77HJ7%WnfSe&h2l3H9+tREkrnU`4-AFo$X`HRCQH$SB`C)KWq a6=(#=l45=!@qw909ya!R#5->&V0`*CL1 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 diff --git a/tests/__pycache__/days.cpython-311.pyc b/tests/__pycache__/days.cpython-311.pyc deleted file mode 100644 index fcbd24a8309518e462ded2f8f38b8981e01aaaad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9381 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 YQ6;{E$9-uI&Hd0iq8{x+z_#pv04pE)&j0`b diff --git a/tests/__pycache__/misc.cpython-311.pyc b/tests/__pycache__/misc.cpython-311.pyc deleted file mode 100644 index edb0671070f8533567c22209a9bc8388e42685d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12040 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 diff --git a/tests/__pycache__/processes.cpython-311.pyc b/tests/__pycache__/processes.cpython-311.pyc deleted file mode 100644 index 4f4c7f10e1ab4079c040f28cc6c0a605611825e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23173 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

7e`R3rXt1YHPB73ydBir~M) zzjPdcmD4{idycPp>b)mGyXb)Z9>gQvzsJV8Nr|I{IzI97T*2nN3biN+M1d5$BDF zn{loNzqg8CSB>aeI51M-Ua6U+kiX7tGLjfnU!r6)pbuu*EYm16jalZDT>6(~j>)Be zStcyoe_3W&F80eZEwcT$=Br@g8$3?17aRPbsj>j1MRgpM4k^T>IWeUIm diff --git a/tests/__pycache__/test_days.cpython-311.pyc b/tests/__pycache__/test_days.cpython-311.pyc deleted file mode 100644 index 61f606c8ea11be55fda957102ade132d9fd3a76d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10170 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 F{vWShvq}H} diff --git a/tests/__pycache__/todos.cpython-311.pyc b/tests/__pycache__/todos.cpython-311.pyc deleted file mode 100644 index 6aa08151a43688a894e37888188609077b68efdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31699 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 diff --git a/tests/__pycache__/versioned_attributes.cpython-311.pyc b/tests/__pycache__/versioned_attributes.cpython-311.pyc deleted file mode 100644 index 7a33722119492d1373fd69099c33e3a4370e313e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10579 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 None: super().setUp() @@ -21,13 +22,40 @@ class TestsWithDB(TestCaseWithDB): self.cond2 = Condition(None) self.cond2.save(self.db_conn) - def test_Todo_by_id(self) -> None: - """Test creation and findability of Todos.""" - process_unsaved = Process(None) + def test_Todo_init(self) -> None: + """Test creation of Todo and what they default to.""" + process = Process(None) with self.assertRaises(NotFoundException): - todo = Todo(None, process_unsaved, False, self.date1) - process_unsaved.save(self.db_conn) - todo = Todo(None, process_unsaved, False, self.date1) + Todo(None, process, False, self.date1) + process.save(self.db_conn) + assert isinstance(self.cond1.id_, int) + assert isinstance(self.cond2.id_, int) + process.set_conditions(self.db_conn, [self.cond1.id_, self.cond2.id_]) + process.set_enables(self.db_conn, [self.cond1.id_]) + process.set_disables(self.db_conn, [self.cond2.id_]) + todo_no_id = Todo(None, process, False, self.date1) + self.assertEqual(todo_no_id.conditions, [self.cond1, self.cond2]) + self.assertEqual(todo_no_id.enables, [self.cond1]) + self.assertEqual(todo_no_id.disables, [self.cond2]) + todo_yes_id = Todo(5, process, False, self.date1) + self.assertEqual(todo_yes_id.conditions, []) + self.assertEqual(todo_yes_id.enables, []) + self.assertEqual(todo_yes_id.disables, []) + + def test_Todo_saving_and_caching(self) -> None: + """Test .save.""" + kwargs = {'id_': 1, + 'process': self.proc, + 'is_done': False, + 'date': self.date1} + self.check_saving_and_caching(**kwargs) + todo = Todo(None, self.proc, False, self.date1) + todo.save(self.db_conn) + self.assertEqual(todo.id_, 2) + + def test_Todo_by_id(self) -> None: + """Test findability of Todos.""" + todo = Todo(1, self.proc, False, self.date1) todo.save(self.db_conn) self.assertEqual(Todo.by_id(self.db_conn, 1), todo) with self.assertRaises(NotFoundException): @@ -45,29 +73,6 @@ class TestsWithDB(TestCaseWithDB): self.assertEqual(Todo.by_date(self.db_conn, self.date2), []) self.assertEqual(Todo.by_date(self.db_conn, 'foo'), []) - def test_Todo_from_process(self) -> None: - """Test spawning of Todo attributes from Process.""" - assert isinstance(self.cond1.id_, int) - assert isinstance(self.cond2.id_, int) - self.proc.set_conditions(self.db_conn, [self.cond1.id_]) - todo = Todo(None, self.proc, False, self.date1) - self.assertEqual(todo.conditions, [self.cond1]) - todo.set_conditions(self.db_conn, [self.cond2.id_]) - self.assertEqual(todo.conditions, [self.cond2]) - self.assertEqual(self.proc.conditions, [self.cond1]) - self.proc.set_enables(self.db_conn, [self.cond1.id_]) - todo = Todo(None, self.proc, False, self.date1) - self.assertEqual(todo.enables, [self.cond1]) - todo.set_enables(self.db_conn, [self.cond2.id_]) - self.assertEqual(todo.enables, [self.cond2]) - self.assertEqual(self.proc.enables, [self.cond1]) - self.proc.set_disables(self.db_conn, [self.cond1.id_]) - todo = Todo(None, self.proc, False, self.date1) - self.assertEqual(todo.disables, [self.cond1]) - todo.set_disables(self.db_conn, [self.cond2.id_]) - self.assertEqual(todo.disables, [self.cond2]) - self.assertEqual(self.proc.disables, [self.cond1]) - def test_Todo_on_conditions(self) -> None: """Test effect of Todos on Conditions.""" assert isinstance(self.cond1.id_, int) @@ -257,14 +262,7 @@ class TestsWithDB(TestCaseWithDB): def test_Todo_singularity(self) -> None: """Test pointers made for single object keep pointing to it.""" - todo = Todo(None, self.proc, False, self.date1) - todo.save(self.db_conn) - retrieved_todo = Todo.by_id(self.db_conn, 1) - todo.is_done = True - self.assertEqual(retrieved_todo.is_done, True) - retrieved_todo = Todo.by_date(self.db_conn, self.date1)[0] - retrieved_todo.is_done = False - self.assertEqual(todo.is_done, False) + self.check_singularity('is_done', True, self.proc, False, self.date1) def test_Todo_remove(self) -> None: """Test removal.""" diff --git a/tests/utils.py b/tests/utils.py index bb37270..fb7e227 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -68,7 +68,7 @@ class TestCaseWithDB(TestCase): row)] self.assertEqual(sorted(content), sorted(db_found)) - def check_saving_and_caching(self, **kwargs: Any) -> Any: + def check_saving_and_caching(self, **kwargs: Any) -> None: """Test instance.save in its core without relations.""" obj = self.checked_class(**kwargs) # pylint: disable=not-callable # check object init itself doesn't store anything yet -- 2.30.2