self.assertRaises(Task.DeletedTask, t.done)
+ def test_modify_simple_attribute_without_space(self):
+ t = Task(self.tw, description="test")
+ t.save()
+
+ self.assertEquals(t['description'], "test")
+
+ t['description'] = "test-modified"
+ t.save()
+
+ self.assertEquals(t['description'], "test-modified")
+
+ def test_modify_simple_attribute_with_space(self):
+ # Space can pose problems with parsing
+ t = Task(self.tw, description="test task")
+ t.save()
+
+ self.assertEquals(t['description'], "test task")
+
+ t['description'] = "test task modified"
+ t.save()
+
+ self.assertEquals(t['description'], "test task modified")
+
def test_empty_dependency_set_of_unsaved_task(self):
t = Task(self.tw, description="test task")
self.assertEqual(t['depends'], set())
self.assertEqual(t['depends'], set([dependency1, dependency2]))
+ def test_simple_dependency_set_save_repeatedly(self):
+ # Adds only one dependency to task with no dependencies
+ t = Task(self.tw, description="test task")
+ dependency = Task(self.tw, description="needs to be done first")
+ dependency.save()
+
+ t['depends'] = set([dependency])
+ t.save()
+
+ # We taint the task, but keep depends intact
+ t['description'] = "test task modified"
+ t.save()
+
+ self.assertEqual(t['depends'], set([dependency]))
+
+ # We taint the task, but assign the same set to the depends
+ t['depends'] = set([dependency])
+ t['description'] = "test task modified again"
+ t.save()
+
+ self.assertEqual(t['depends'], set([dependency]))
+
def test_compare_different_tasks(self):
# Negative: compare two different tasks
t1 = Task(self.tw, description="test task")
# Assert that due timestamp is no longer there
self.assertEqual(t['due'], None)
+ def test_modified_fields_new_task(self):
+ t = Task(self.tw)
+
+ # This should be empty with new task
+ self.assertEqual(set(t._modified_fields), set())
+
+ # Modify the task
+ t['description'] = "test task"
+ self.assertEqual(set(t._modified_fields), set(['description']))
+
+ t['due'] = datetime.datetime(2014, 2, 14, 14, 14, 14) # <3
+ self.assertEqual(set(t._modified_fields), set(['description', 'due']))
+
+ t['project'] = "test project"
+ self.assertEqual(set(t._modified_fields),
+ set(['description', 'due', 'project']))
+
+ # List of modified fields should clear out when saved
+ t.save()
+ self.assertEqual(set(t._modified_fields), set())
+
+ # Reassigning the fields with the same values now should not produce
+ # modified fields
+ t['description'] = "test task"
+ t['due'] = datetime.datetime(2014, 2, 14, 14, 14, 14) # <3
+ t['project'] = "test project"
+ self.assertEqual(set(t._modified_fields), set())
+
+ def test_modified_fields_loaded_task(self):
+ t = Task(self.tw)
+
+ # Modify the task
+ t['description'] = "test task"
+ t['due'] = datetime.datetime(2014, 2, 14, 14, 14, 14) # <3
+ t['project'] = "test project"
+
+ dependency = Task(self.tw, description="dependency")
+ dependency.save()
+ t['depends'] = set([dependency])
+
+ # List of modified fields should clear out when saved
+ t.save()
+ self.assertEqual(set(t._modified_fields), set())
+
+ # Get the task by using a filter by UUID
+ t2 = self.tw.tasks.get(uuid=t['uuid'])
+
+ # Reassigning the fields with the same values now should not produce
+ # modified fields
+ t['description'] = "test task"
+ t['due'] = datetime.datetime(2014, 2, 14, 14, 14, 14) # <3
+ t['project'] = "test project"
+ t['depends'] = set([dependency])
+ self.assertEqual(set(t._modified_fields), set())
class AnnotationTest(TasklibTest):