X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/ddaa580dc2b2051c80bb6bd1de9c999c46f9ee12..ae7397e43578a8adcff05714ea6aa5960af13145:/tasklib/tests.py diff --git a/tasklib/tests.py b/tasklib/tests.py index d498f09..3a3f25d 100644 --- a/tasklib/tests.py +++ b/tasklib/tests.py @@ -2,6 +2,7 @@ import datetime import itertools +import json import six import shutil import tempfile @@ -30,7 +31,7 @@ TASK_STANDARD_ATTRS = ( 'priority', 'depends', 'tags', - 'annotation', + 'annotations', ) class TasklibTest(unittest.TestCase): @@ -477,6 +478,22 @@ class TaskTest(TasklibTest): t.save() self.assertEqual(t['tags'], ['test']) + def test_serializers_returning_empty_string_for_none(self): + # Test that any serializer returns '' when passed None + t = Task(self.tw) + serializers = [getattr(t, serializer_name) for serializer_name in + filter(lambda x: x.startswith('serialize_'), dir(t))] + for serializer in serializers: + self.assertEqual(serializer(None), '') + + def test_deserializer_returning_empty_value_for_empty_string(self): + # Test that any deserializer returns empty value when passed '' + t = Task(self.tw) + deserializers = [getattr(t, deserializer_name) for deserializer_name in + filter(lambda x: x.startswith('deserialize_'), dir(t))] + for deserializer in deserializers: + self.assertTrue(deserializer('') in (None, [], set())) + class TaskFromHookTest(TasklibTest): @@ -570,6 +587,23 @@ class AnnotationTest(TasklibTest): task.save() self.assertEqual(task['project'], 'test') + def test_serialize_annotations(self): + # Test that serializing annotations is possible + t = Task(self.tw, description="test") + t.save() + + t.add_annotation("annotation1") + t.add_annotation("annotation2") + + data = t._serialize('annotations', t._data['annotations']) + + self.assertEqual(len(data), 2) + self.assertEqual(type(data[0]), dict) + self.assertEqual(type(data[1]), dict) + + self.assertEqual(data[0]['description'], "annotation1") + self.assertEqual(data[1]['description'], "annotation2") + class UnicodeTest(TasklibTest):