From e70da12872b9c9f64baf66f3cb509fe241d6d918 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pontus=20Pr=C3=BCzelius?= Date: Fri, 3 Mar 2023 16:53:49 +0100 Subject: [PATCH 1/5] fix:Removed unused commented out function --- evennia/scripts/tests.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/evennia/scripts/tests.py b/evennia/scripts/tests.py index d767cdf830..776ab722aa 100644 --- a/evennia/scripts/tests.py +++ b/evennia/scripts/tests.py @@ -129,15 +129,6 @@ class TestMonitorHandler(TestCase): self.handler.add(obj, fieldname, callback) self.assertNotIn(fieldname, self.handler.monitors[obj]) - """ def test_add_raise_exception(self): - obj = mock.Mock() - fieldname = "db_add" - callback = 1 - idstring = "test" - # self.assertEquals(inspect.isfunction(callback),True) - self.assertRaises(Exception,self.handler.add,obj, fieldname, callback, idstring=idstring) - """ - From 3de7ce7d416b367262474877d5aa33a03ebd9820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pontus=20Pr=C3=BCzelius?= Date: Fri, 3 Mar 2023 18:21:39 +0100 Subject: [PATCH 2/5] feat: added tests for all,clear #2 --- evennia/scripts/tests.py | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/evennia/scripts/tests.py b/evennia/scripts/tests.py index 41affece5f..8694a82057 100644 --- a/evennia/scripts/tests.py +++ b/evennia/scripts/tests.py @@ -12,6 +12,7 @@ from evennia.scripts.tickerhandler import TickerHandler from evennia.scripts.monitorhandler import MonitorHandler import inspect from evennia.scripts.manager import ScriptDBManager +from collections import defaultdict class TestScript(BaseEvenniaTest): def test_create(self): @@ -145,16 +146,16 @@ class TestExtendedLoopingCall(TestCase): def dummy_func(): return 0 + class TestMonitorHandler(TestCase): def setUp(self): self.handler = MonitorHandler() - + def test_add(self): obj = mock.Mock() fieldname = "db_add" callback = dummy_func idstring = "test" - self.assertEquals(inspect.isfunction(callback),True) self.handler.add(obj, fieldname, callback, idstring=idstring) @@ -183,6 +184,36 @@ class TestMonitorHandler(TestCase): self.handler.add(obj, fieldname, callback) self.assertNotIn(fieldname, self.handler.monitors[obj]) + def test_all(self): + obj = [mock.Mock(),mock.Mock()] + fieldname = ["db_all1","db_all2"] + callback = dummy_func + idstring = ["test_all1","test_all2"] + + self.handler.add(obj[0], fieldname[0], callback, idstring=idstring[0]) + self.handler.add(obj[1], fieldname[1], callback, idstring=idstring[1],persistent=True) + + output = self.handler.all() + self.assertEquals(output, + [(obj[0], fieldname[0], idstring[0], False, {}), + (obj[1], fieldname[1], idstring[1], True, {})]) + + def test_clear(self): + obj = mock.Mock() + fieldname = "db_add" + callback = dummy_func + idstring = "test" + + self.handler.add(obj, fieldname, callback, idstring=idstring) + self.assertIn(obj, self.handler.monitors) + + self.handler.clear() + self.assertNotIn(obj, self.handler.monitors) + self.assertEquals(defaultdict(lambda: defaultdict(dict)), self.handler.monitors) + + + + From d39a1d974ef91ad3c243c748ff7020cb681c4aee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pontus=20Pr=C3=BCzelius?= Date: Fri, 3 Mar 2023 18:31:12 +0100 Subject: [PATCH 3/5] doc: added documentation to added tests #2 --- evennia/scripts/tests.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/evennia/scripts/tests.py b/evennia/scripts/tests.py index 8694a82057..5120422f08 100644 --- a/evennia/scripts/tests.py +++ b/evennia/scripts/tests.py @@ -148,10 +148,15 @@ def dummy_func(): return 0 class TestMonitorHandler(TestCase): + """ + Test the MonitorHandler class. + """ + def setUp(self): self.handler = MonitorHandler() def test_add(self): + """Tests that adding an object to the monitor handler works correctly""" obj = mock.Mock() fieldname = "db_add" callback = dummy_func @@ -164,20 +169,20 @@ class TestMonitorHandler(TestCase): self.assertEqual(self.handler.monitors[obj][fieldname][idstring], (callback, False, {})) def test_remove(self): + """Tests that removing an object from the monitor handler works correctly""" obj = mock.Mock() fieldname = 'db_remove' callback = dummy_func idstring = 'test_remove' + """Add an object to the monitor handler and then remove it""" self.handler.add(obj,fieldname,callback,idstring=idstring) - self.assertIn(fieldname,self.handler.monitors[obj]) - self.assertEqual(self.handler.monitors[obj][fieldname][idstring], (callback, False, {})) - self.handler.remove(obj,fieldname,idstring=idstring) self.assertEquals(self.handler.monitors[obj][fieldname], {}) - def test_add_with_invalid_callback_does_not_work(self): + def test_add_with_invalid_function(self): obj = mock.Mock() + """Tests that add method rejects objects where callback is not a function""" fieldname = "db_key" callback = "not_a_function" @@ -185,6 +190,7 @@ class TestMonitorHandler(TestCase): self.assertNotIn(fieldname, self.handler.monitors[obj]) def test_all(self): + """Tests that all method correctly returns information about added objects""" obj = [mock.Mock(),mock.Mock()] fieldname = ["db_all1","db_all2"] callback = dummy_func @@ -199,6 +205,7 @@ class TestMonitorHandler(TestCase): (obj[1], fieldname[1], idstring[1], True, {})]) def test_clear(self): + """Tests that the clear function correctly clears the monitor handler""" obj = mock.Mock() fieldname = "db_add" callback = dummy_func From cff9f7e2c43e93a8eb128cc27c37f5c4b6cafc52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pontus=20Pr=C3=BCzelius?= Date: Fri, 3 Mar 2023 19:49:14 +0100 Subject: [PATCH 4/5] feat: tests for add/remove attributes from monitorhandler --- evennia/scripts/tests.py | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/evennia/scripts/tests.py b/evennia/scripts/tests.py index 5120422f08..c4aec37a41 100644 --- a/evennia/scripts/tests.py +++ b/evennia/scripts/tests.py @@ -13,6 +13,7 @@ from evennia.scripts.monitorhandler import MonitorHandler import inspect from evennia.scripts.manager import ScriptDBManager from collections import defaultdict +from evennia.utils.dbserialize import dbserialize class TestScript(BaseEvenniaTest): def test_create(self): @@ -218,11 +219,26 @@ class TestMonitorHandler(TestCase): self.assertNotIn(obj, self.handler.monitors) self.assertEquals(defaultdict(lambda: defaultdict(dict)), self.handler.monitors) + def test_add_remove_attribute(self): + """Tests that adding and removing an object attribute to the monitor handler works correctly""" + obj = mock.Mock() + obj.name = "testaddattribute" + fieldname = "name" + callback = dummy_func + idstring = "test" + category = "testattribute" - - - - + """Add attribute to handler and assert that it has been added""" + self.handler.add(obj, fieldname, callback, idstring=idstring,category=category) + index = obj.attributes.get(fieldname, return_obj=True) + name = "db_value[testattribute]" + self.assertIn(name, self.handler.monitors[index]) + self.assertIn(idstring, self.handler.monitors[index][name]) + self.assertEqual(self.handler.monitors[index][name][idstring], (callback, False, {})) + """Remove attribute from the handler and assert that it is gone""" + self.handler.remove(obj,fieldname,idstring=idstring,category=category) + self.assertEquals(self.handler.monitors[index][name], {}) + \ No newline at end of file From 5dac82db7ee4810004022952f84092e5c27458db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pontus=20Pr=C3=BCzelius?= Date: Mon, 6 Mar 2023 21:54:18 +0100 Subject: [PATCH 5/5] doc: dummy_func explained --- evennia/scripts/tests.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/evennia/scripts/tests.py b/evennia/scripts/tests.py index c4aec37a41..a97cfb1c47 100644 --- a/evennia/scripts/tests.py +++ b/evennia/scripts/tests.py @@ -144,7 +144,10 @@ class TestExtendedLoopingCall(TestCase): loopcall.__call__.assert_not_called() self.assertEqual(loopcall.interval, 20) loopcall._scheduleFrom.assert_called_with(121) - + +""" +Dummy function used as callback parameter +""" def dummy_func(): return 0