|
4 | 4 |
|
5 | 5 | if sys.version_info < (2, 7): |
6 | 6 | import unittest2 as unittest |
| 7 | + |
7 | 8 | else: |
8 | 9 | import unittest |
9 | | - |
| 10 | + |
| 11 | +from unittest.mock import patch |
10 | 12 |
|
11 | 13 | class TestSubject(unittest.TestCase): |
12 | 14 |
|
@@ -39,27 +41,26 @@ class TestData(unittest.TestCase): |
39 | 41 |
|
40 | 42 | @classmethod |
41 | 43 | def setUpClass(self): |
42 | | - dec_obs = DecimalViewer() |
43 | | - hex_obs = HexViewer() |
44 | | - self.sub1 = Data('Data 1') |
45 | | - self.sub2 = Data('Data 2') |
| 44 | + self.dec_obs = DecimalViewer() |
| 45 | + self.hex_obs = HexViewer() |
| 46 | + self.sub = Data('Data') |
46 | 47 | #inherited behavior already tested with TestSubject |
47 | | - self.sub1.attach(dec_obs) |
48 | | - self.sub1.attach(hex_obs) |
49 | | - self.sub2.attach(dec_obs) |
50 | | - self.sub2.attach(hex_obs) |
| 48 | + self.sub.attach(self.dec_obs) |
| 49 | + self.sub.attach(self.hex_obs) |
51 | 50 |
|
52 | | - def setUp(self): |
53 | | - self.output = StringIO() |
54 | | - self.saved_stdout = sys.stdout |
55 | | - sys.stdout = self.output |
| 51 | + def test_data_change_shall_notify_all_observers_once(self): |
| 52 | + with patch.object(self.dec_obs, 'update') as mock_dec_obs_update, patch.object(self.hex_obs, 'update') as mock_hex_obs_update: |
| 53 | + self.sub.data = 10 |
| 54 | + self.assertEqual(mock_dec_obs_update.call_count, 1) |
| 55 | + self.assertEqual(mock_hex_obs_update.call_count, 1) |
56 | 56 |
|
57 | | -# def test_observers_shall_be_notified(self): |
58 | | -# self.sub1.data = 10 |
| 57 | + def test_data_value_shall_be_changeable(self): |
| 58 | + self.sub.data = 20 |
| 59 | + self.assertEqual(self.sub._data, 20) |
59 | 60 |
|
60 | | - def tearDown(self): |
61 | | - self.output.close() |
62 | | - sys.stdout = self.saved_stdout |
| 61 | + def test_data_name_shall_be_changeable(self): |
| 62 | + self.sub.name = 'New Data Name' |
| 63 | + self.assertEqual(self.sub.name, 'New Data Name') |
63 | 64 |
|
64 | 65 | if __name__ == "__main__": |
65 | 66 | unittest.main() |
0 commit comments