Skip to content

Commit a73a054

Browse files
author
fkromer
committed
add: test for Provider.update()
1 parent 21ec095 commit a73a054

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

test_publish_subscribe.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
else:
1111
import unittest
1212

13+
from unittest.mock import patch, call
14+
1315
class TestProvider(unittest.TestCase):
1416
"""
1517
Integration tests ~ provider class with as little mocking as possible.
@@ -40,6 +42,32 @@ def test_publisher_shall_append_message(cls):
4042
cls.assertEqual(len(pro.msg_queue), 1)
4143
cls.assertEqual(pro.msg_queue[0], expected_msg)
4244

45+
def test_provider_shall_update_affected_subscribers_with_published_messages(cls):
46+
pro = Provider()
47+
pub = Publisher(pro)
48+
sub1 = Subscriber('sub 1 name', pro)
49+
sub1.subscribe('sub 1 msg 1')
50+
sub1.subscribe('sub 1 msg 2')
51+
sub2 = Subscriber('sub 2 name', pro)
52+
sub2.subscribe('sub 2 msg 1')
53+
sub2.subscribe('sub 2 msg 2')
54+
with patch.object(sub1, 'run') as mock_subscriber1_run,\
55+
patch.object(sub2, 'run') as mock_subscriber2_run:
56+
pro.update()
57+
cls.assertEqual(mock_subscriber1_run.call_count, 0)
58+
cls.assertEqual(mock_subscriber2_run.call_count, 0)
59+
pub.publish('sub 1 msg 1')
60+
pub.publish('sub 1 msg 2')
61+
pub.publish('sub 2 msg 1')
62+
pub.publish('sub 2 msg 2')
63+
with patch.object(sub1, 'run') as mock_subscriber1_run,\
64+
patch.object(sub2, 'run') as mock_subscriber2_run:
65+
pro.update()
66+
expected_sub1_calls = [call('sub 1 msg 1'), call('sub 1 msg 2')]
67+
mock_subscriber1_run.assert_has_calls(expected_sub1_calls)
68+
expected_sub2_calls = [call('sub 2 msg 1'), call('sub 2 msg 2')]
69+
mock_subscriber2_run.assert_has_calls(expected_sub2_calls)
70+
4371
if __name__ == "__main__":
4472
unittest.main()
4573

0 commit comments

Comments
 (0)