Author: jprantan
Date: Thu Jul  2 06:14:29 2009
New Revision: 103

Modified:
   trunk/src/mabot/model/model.py
   trunk/utest/test_model_tags.py

Log:
Fixed the problem that tags were not added to test in case keywords was modified. See issue 41 for more details.

Modified: trunk/src/mabot/model/model.py
==============================================================================
--- trunk/src/mabot/model/model.py      (original)
+++ trunk/src/mabot/model/model.py      Thu Jul  2 06:14:29 2009
@@ -111,6 +111,7 @@

         Works also with changes done to Robot Framework 2.0.3.
         """
+        #TODO: Move to robotapi
         status = getattr(item, 'status', 'FAIL')
         return status == 'PASS' and 'PASS' or 'FAIL'

@@ -434,8 +435,11 @@
     def _mark_data_modified(self, executed=True):
         AbstractManualModel._mark_data_modified(self)
         if executed:
- self.add_tags(SETTINGS["tags_added_to_modified_tests"], mark_modified=False)
-
+            self._add_tags_added_to_modified_tests(mark_modified=False)
+
+    def _add_tags_added_to_modified_tests(self, mark_modified):
+        self.add_tags(SETTINGS["tags_added_to_modified_tests"],
+                      mark_modified=mark_modified)

     def _get_items(self):
         return self.keywords
@@ -559,6 +563,11 @@
         else:
             self.visible = False
         return self.visible
+
+    def _child_status_updated(self):
+        self._add_tags_added_to_modified_tests(mark_modified=True)
+        AbstractManualTestOrKeyword._child_status_updated(self)
+

 class ManualKeyword (AbstractManualTestOrKeyword):


Modified: trunk/utest/test_model_tags.py
==============================================================================
--- trunk/utest/test_model_tags.py      (original)
+++ trunk/utest/test_model_tags.py      Thu Jul  2 06:14:29 2009
@@ -26,7 +26,7 @@
     def setUp(self):
         data = normcase(join(dirname(__file__), 'data', 'root_suite'))
         self.suite = IO().load_data(data)
-        self.test = self.suite.suites[0].tests[0]
+        self.test = self.suite.suites[1].tests[0]
         self.orig_settings = deepcopy(model.SETTINGS)

     def tearDown(self):
@@ -140,21 +140,42 @@
         self.assertFalse(self.test.is_modified)


-class TestMarkDataModified(_TestAddAndRemoveTags):
+class TestTagsAddedToModifiedTests(_TestAddAndRemoveTags):

     def setUp(self):
         _TestAddAndRemoveTags.setUp(self)
-        model.SETTINGS["tags_added_to_modified_tests"] = ['foo', 'tag-1']
+        model.SETTINGS['tags_added_to_modified_tests'] = ['foo', 'tag-1']
         self.test.tags = ['bar']
+        self.kw = self.test.keywords[0].keywords[0]

- def test_if_test_is_executed_tags_added_to_modified_tests_are_added(self):
+    def test_if_test_is_executed_tags_are_added(self):
         self.test._mark_data_modified(executed=True)
-        self.assertEquals(self.test.tags, ['bar', 'foo', 'tag-1'])
+        self._tags_are_added_to_test()

- def test_if_test_is_not_executed_tags_added_to_modified_tests_are_not_added(self):
+    def test_if_test_is_not_executed_tags_are_not_added(self):
         self.test._mark_data_modified(executed=False)
         self.assertEquals(self.test.tags, ['bar'])
+        self.assertTrue(self.test.is_modified)
+
+    def test_if_keyword_message_is_changed_tags_are_added(self):
+        self.kw.set_message('New message')
+        self._tags_are_added_to_test()
+
+ def test_if_only_keyword_message_and_not_status_is_changed_tags_are_added(self):
+        self.kw.update_status_and_message(message='New message')
+        self._tags_are_added_to_test()
+
+    def test_if_keyword_status_is_changed_tags_are_added(self):
+        self.kw.update_status_and_message(status='PASS')
+        self._tags_are_added_to_test()
+
+ def test_if_keyword_status_and_message_are_changed_tags_are_added(self): + self.kw.update_status_and_message(status='PASS', message='New message')
+        self._tags_are_added_to_test()

+    def _tags_are_added_to_test(self):
+        self.assertEquals(self.test.tags, ['bar', 'foo', 'tag-1'])
+        self.assertTrue(self.test.is_modified)

 if __name__ == "__main__":
     unittest.main()

Reply via email to