X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=tests%2Fspecs%2Fmodel%2Fprojects_spec.py;fp=tests%2Fspecs%2Fmodel%2Fprojects_spec.py;h=8c8f41458356bbff0fd1007825cf762abcd101c5;hb=826cc2e9923c858d3c6a86c04f371cfb326e1728;hp=0000000000000000000000000000000000000000;hpb=44f7fa2ef41d54548aa800b2bb71a886261c5046;p=matthijs%2Fupstream%2Fmobilegtd.git diff --git a/tests/specs/model/projects_spec.py b/tests/specs/model/projects_spec.py new file mode 100644 index 0000000..8c8f414 --- /dev/null +++ b/tests/specs/model/projects_spec.py @@ -0,0 +1,53 @@ +import unittest +from model.projects import Projects +from mock import Mock + +class ProjectsBehaviour(unittest.TestCase): + def setUp(self): + self.projects = Projects() + self.observer = Mock() + self.projects.observers.append(self.observer) + + def create_project(self,name=None,status=None): + p = Mock() + if name != None: + p.name = name + if status != None: + p.status = status + return p + + def assert_observed(self,attribute,new=None,old=None): + self.observer.notify.assert_called_with(self.projects,attribute,new=new,old=old) + + def test_should_notify_observers_when_project_is_added(self): + p = self.create_project() + self.projects.append(p) + self.assert_observed('add_item',new=p,old=None) + + +class EmptyProjectsBehaviour(ProjectsBehaviour): + def test_should_not_contain_any_projects(self): + self.assertEqual(self.projects,[]) + +class NonEmptyProjectsBehaviour(ProjectsBehaviour): + + def setUp(self): + super(NonEmptyProjectsBehaviour,self).setUp() + self.searched_projects = [self.create_project(status=0),self.create_project(status=0)] + for p in self.searched_projects: + self.projects.append(p) + self.not_searched_projects = [self.create_project(status=1),self.create_project(status=2)] + for p in self.not_searched_projects: + self.projects.append(p) + + def test_should_remember_all_added_projects(self): + for p in self.searched_projects+self.not_searched_projects: + self.assertTrue(p in self.projects) + + def test_should_be_able_to_filter_projects_by_status(self): + self.assertEqual(self.projects.with_status(0),self.searched_projects) + + def test_should_notify_observers_when_project_is_removed(self): + p = self.projects[0] + self.projects.remove(p) + self.assert_observed('remove_item',new=p,old=None)