Add Observer tests
[osm/N2VC.git] / tests / unit / test_model.py
1 import unittest
2
3
4 class TestObserver(unittest.TestCase):
5 def _make_observer(self, *args):
6 from juju.model import _Observer
7 return _Observer(*args)
8
9 def _make_delta(self, entity, type_, data=None):
10 from juju.delta import ApplicationDelta
11 return ApplicationDelta([entity, type_, data])
12
13 def test_cares_about_id(self):
14 id_ = 'foo'
15
16 o = self._make_observer(
17 None, None, None, id_, None)
18
19 delta = self._make_delta(
20 'application', 'change', dict(name=id_))
21
22 self.assertTrue(o.cares_about(delta))
23
24 def test_cares_about_type(self):
25 type_ = 'application'
26
27 o = self._make_observer(
28 None, type_, None, None, None)
29
30 delta = self._make_delta(
31 type_, 'change', dict(name='foo'))
32
33 self.assertTrue(o.cares_about(delta))
34
35 def test_cares_about_action(self):
36 action = 'change'
37
38 o = self._make_observer(
39 None, None, action, None, None)
40
41 delta = self._make_delta(
42 'application', action, dict(name='foo'))
43
44 self.assertTrue(o.cares_about(delta))
45
46 def test_cares_about_predicate(self):
47 def predicate(delta):
48 return delta.data.get('fizz') == 'bang'
49
50 o = self._make_observer(
51 None, None, None, None, predicate)
52
53 delta = self._make_delta(
54 'application', 'change', dict(fizz='bang'))
55
56 self.assertTrue(o.cares_about(delta))