3 from model.observable import ObservableList
5 class ObservableListBehaviour(unittest.TestCase):
7 self.list = ObservableList()
9 self.list.observers.append(self.observer)
16 def assert_observed(self,name,new=None,old=None):
17 self.observer.notify.assert_called_with(self.list,name,new=new,old=old)
19 def test_should_be_iterable(self):
20 for item in self.list:
23 def test_should_notify_observers_if_item_was_added(self):
25 self.assert_observed('add_item',new=p,old=None)
27 def test_should_remember_added_items(self):
29 self.assertTrue(p in self.list)
33 class EmptyObservableListBehaviour(ObservableListBehaviour):
35 def test_should_be_empty(self):
36 self.assertEqual(len(self.list),0)
38 def test_should_raise_exception_when_trying_to_remove_a_item(self):
39 self.assertRaises(ValueError,self.list.remove,Mock())
43 class NotEmptyObservableListBehaviour(ObservableListBehaviour):
46 super(NotEmptyObservableListBehaviour,self).setUp()
49 def test_should_notify_observers_if_item_was_removed(self):
52 self.assert_observed('remove_item', i, None)