X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/ef4e6774912c7170239ed559bc215acdfe9d28db..98a743d061642076562b8054aa2b5a0c25eefec7:/tasklib/tests.py diff --git a/tasklib/tests.py b/tasklib/tests.py index f3edd61..35979a8 100644 --- a/tasklib/tests.py +++ b/tasklib/tests.py @@ -7,6 +7,29 @@ import unittest from .task import TaskWarrior, Task +# http://taskwarrior.org/docs/design/task.html , Section: The Attributes +TASK_STANDARD_ATTRS = ( + 'status', + 'uuid', + 'entry', + 'description', + 'start', + 'end', + 'due', + 'until', + 'wait', + 'modified', + 'scheduled', + 'recur', + 'mask', + 'imask', + 'parent', + 'project', + 'priority', + 'depends', + 'tags', + 'annotation', +) class TasklibTest(unittest.TestCase): @@ -245,6 +268,18 @@ class TaskTest(TasklibTest): self.assertEqual(t['depends'], set([dependency1, dependency2])) + def test_add_to_empty_dependency_set(self): + # Adds dependency to task with one dependencies + t = Task(self.tw, description="test task") + dependency = Task(self.tw, description="needs to be done first") + + dependency.save() + + t['depends'].add(dependency) + t.save() + + self.assertEqual(t['depends'], set([dependency])) + def test_simple_dependency_set_save_repeatedly(self): # Adds only one dependency to task with no dependencies t = Task(self.tw, description="test task") @@ -399,6 +434,14 @@ class TaskTest(TasklibTest): t['depends'] = set([dependency]) self.assertEqual(set(t._modified_fields), set()) + def test_modified_fields_not_affected_by_reading(self): + t = Task(self.tw) + + for field in TASK_STANDARD_ATTRS: + value = t[field] + + self.assertEqual(set(t._modified_fields), set()) + def test_setting_read_only_attrs_through_init(self): # Test that we are unable to set readonly attrs through __init__ for readonly_key in Task.read_only_fields: @@ -416,7 +459,6 @@ class TaskTest(TasklibTest): def test_saving_unmodified_task(self): t = Task(self.tw, description="test task") t.save() - t.refresh() t.save() def test_adding_tag_by_appending(self): @@ -424,9 +466,15 @@ class TaskTest(TasklibTest): t.save() t['tags'].append('test2') t.save() - t.refresh() self.assertEqual(t['tags'], ['test1', 'test2']) + def test_adding_tag_by_appending_empty(self): + t = Task(self.tw, description="test task") + t.save() + t['tags'].append('test') + t.save() + self.assertEqual(t['tags'], ['test']) + class AnnotationTest(TasklibTest): @@ -461,6 +509,14 @@ class AnnotationTest(TasklibTest): task.remove_annotation(ann) self.assertEqual(len(task['annotations']), 0) + def test_annotation_after_modification(self): + task = self.tw.tasks.get() + task['project'] = 'test' + task.add_annotation('I should really do this task') + self.assertEqual(task['project'], 'test') + task.save() + self.assertEqual(task['project'], 'test') + class UnicodeTest(TasklibTest):