+
+
+class LazyUUIDTaskTest(TasklibTest):
+
+ def setUp(self):
+ super(LazyUUIDTaskTest, self).setUp()
+
+ self.stored = Task(self.tw, description="this is test task")
+ self.stored.save()
+
+ self.lazy = LazyUUIDTask(self.tw, self.stored['uuid'])
+
+ def test_uuid_non_conversion(self):
+ assert self.stored['uuid'] == self.lazy['uuid']
+ assert type(self.lazy) is LazyUUIDTask
+
+ def test_lazy_explicit_conversion(self):
+ assert type(self.lazy) is LazyUUIDTask
+ self.lazy.replace()
+ assert type(self.lazy) is Task
+
+ def test_conversion_key(self):
+ assert self.stored['description'] == self.lazy['description']
+ assert type(self.lazy) is Task
+
+ def test_conversion_attribute(self):
+ assert type(self.lazy) is LazyUUIDTask
+ assert self.lazy.completed is False
+ assert type(self.lazy) is Task
+
+ def test_normal_to_lazy_equality(self):
+ assert self.stored == self.lazy
+ assert not self.stored != self.lazy
+ assert type(self.lazy) is LazyUUIDTask
+
+ def test_lazy_to_lazy_equality(self):
+ lazy1 = LazyUUIDTask(self.tw, self.stored['uuid'])
+ lazy2 = LazyUUIDTask(self.tw, self.stored['uuid'])
+
+ assert lazy1 == lazy2
+ assert not lazy1 != lazy2
+ assert type(lazy1) is LazyUUIDTask
+ assert type(lazy2) is LazyUUIDTask
+
+ def test_normal_to_lazy_inequality(self):
+ # Create a different UUID by changing the last letter
+ wrong_uuid = self.stored['uuid']
+ wrong_uuid = wrong_uuid[:-1] + ('a' if wrong_uuid[-1] != 'a' else 'b')
+
+ wrong_lazy = LazyUUIDTask(self.tw, wrong_uuid)
+
+ assert not self.stored == wrong_lazy
+ assert self.stored != wrong_lazy
+ assert type(wrong_lazy) is LazyUUIDTask
+
+ def test_lazy_to_lazy_inequality(self):
+ # Create a different UUID by changing the last letter
+ wrong_uuid = self.stored['uuid']
+ wrong_uuid = wrong_uuid[:-1] + ('a' if wrong_uuid[-1] != 'a' else 'b')
+
+ lazy1 = LazyUUIDTask(self.tw, self.stored['uuid'])
+ lazy2 = LazyUUIDTask(self.tw, wrong_uuid)
+
+ assert not lazy1 == lazy2
+ assert lazy1 != lazy2
+ assert type(lazy1) is LazyUUIDTask
+ assert type(lazy2) is LazyUUIDTask
+
+ def test_lazy_in_queryset(self):
+ tasks = self.tw.tasks.filter(uuid=self.stored['uuid'])
+
+ assert self.lazy in tasks
+ assert type(self.lazy) is LazyUUIDTask
+
+ def test_lazy_saved(self):
+ assert self.lazy.saved is True
+
+ def test_lazy_modified(self):
+ assert self.lazy.modified is False
+
+ def test_lazy_modified_fields(self):
+ assert self.lazy._modified_fields == set()
+
+
+class LazyUUIDTaskSetTest(TasklibTest):
+
+ def setUp(self):
+ super(LazyUUIDTaskSetTest, self).setUp()
+
+ self.task1 = Task(self.tw, description="task 1")
+ self.task2 = Task(self.tw, description="task 2")
+ self.task3 = Task(self.tw, description="task 3")
+
+ self.task1.save()
+ self.task2.save()
+ self.task3.save()
+
+ self.uuids = (
+ self.task1['uuid'],
+ self.task2['uuid'],
+ self.task3['uuid']
+ )
+
+ self.lazy = LazyUUIDTaskSet(self.tw, self.uuids)
+
+ def test_length(self):
+ assert len(self.lazy) == 3
+ assert type(self.lazy) is LazyUUIDTaskSet
+
+ def test_contains(self):
+ assert self.task1 in self.lazy
+ assert self.task2 in self.lazy
+ assert self.task3 in self.lazy
+ assert type(self.lazy) is LazyUUIDTaskSet
+
+ def test_eq_lazy(self):
+ new_lazy = LazyUUIDTaskSet(self.tw, self.uuids)
+ assert self.lazy == new_lazy
+ assert not self.lazy != new_lazy
+ assert type(self.lazy) is LazyUUIDTaskSet
+
+ def test_eq_real(self):
+ assert self.lazy == self.tw.tasks.all()
+ assert self.tw.tasks.all() == self.lazy
+ assert not self.lazy != self.tw.tasks.all()
+
+ assert type(self.lazy) is LazyUUIDTaskSet
+
+ def test_union(self):
+ taskset = set([self.task1])
+ lazyset = LazyUUIDTaskSet(
+ self.tw,
+ (self.task2['uuid'], self.task3['uuid'])
+ )
+
+ assert taskset | lazyset == self.lazy
+ assert lazyset | taskset == self.lazy
+ assert taskset.union(lazyset) == self.lazy
+ assert lazyset.union(taskset) == self.lazy
+
+ lazyset |= taskset
+ assert lazyset == self.lazy
+
+ def test_difference(self):
+ taskset = set([self.task1, self.task2])
+ lazyset = LazyUUIDTaskSet(
+ self.tw,
+ (self.task2['uuid'], self.task3['uuid'])
+ )
+
+ assert taskset - lazyset == set([self.task1])
+ assert lazyset - taskset == set([self.task3])
+ assert taskset.difference(lazyset) == set([self.task1])
+ assert lazyset.difference(taskset) == set([self.task3])
+
+ lazyset -= taskset
+ assert lazyset == set([self.task3])
+
+ def test_symmetric_difference(self):
+ taskset = set([self.task1, self.task2])
+ lazyset = LazyUUIDTaskSet(
+ self.tw,
+ (self.task2['uuid'], self.task3['uuid'])
+ )
+
+ assert taskset ^ lazyset == set([self.task1, self.task3])
+ assert lazyset ^ taskset == set([self.task1, self.task3])
+ assert taskset.symmetric_difference(lazyset) == set([self.task1, self.task3])
+ assert lazyset.symmetric_difference(taskset) == set([self.task1, self.task3])
+
+ lazyset ^= taskset
+ assert lazyset == set([self.task1, self.task3])
+
+ def test_intersection(self):
+ taskset = set([self.task1, self.task2])
+ lazyset = LazyUUIDTaskSet(
+ self.tw,
+ (self.task2['uuid'], self.task3['uuid'])
+ )
+
+ assert taskset & lazyset == set([self.task2])
+ assert lazyset & taskset == set([self.task2])
+ assert taskset.intersection(lazyset) == set([self.task2])
+ assert lazyset.intersection(taskset) == set([self.task2])
+
+ lazyset &= taskset
+ assert lazyset == set([self.task2])
+
+
+class TaskWarriorBackendTest(TasklibTest):
+
+ def test_config(self):
+ assert self.tw.config['nag'] == "You have more urgent tasks."
+ assert self.tw.config['debug'] == "no"