Пример #1
0
 def test_provider_shall_update_affected_subscribers_with_published_subscription(
         cls):
     pro = Provider()
     pub = Publisher(pro)
     sub1 = Subscriber('sub 1 name', pro)
     sub1.subscribe('sub 1 msg 1')
     sub1.subscribe('sub 1 msg 2')
     sub2 = Subscriber('sub 2 name', pro)
     sub2.subscribe('sub 2 msg 1')
     sub2.subscribe('sub 2 msg 2')
     with patch.object(sub1, 'run') as mock_subscriber1_run,\
          patch.object(sub2, 'run') as mock_subscriber2_run:
         pro.update()
         cls.assertEqual(mock_subscriber1_run.call_count, 0)
         cls.assertEqual(mock_subscriber2_run.call_count, 0)
     pub.publish('sub 1 msg 1')
     pub.publish('sub 1 msg 2')
     pub.publish('sub 2 msg 1')
     pub.publish('sub 2 msg 2')
     with patch.object(sub1, 'run') as mock_subscriber1_run,\
          patch.object(sub2, 'run') as mock_subscriber2_run:
         pro.update()
         expected_sub1_calls = [call('sub 1 msg 1'), call('sub 1 msg 2')]
         mock_subscriber1_run.assert_has_calls(expected_sub1_calls)
         expected_sub2_calls = [call('sub 2 msg 1'), call('sub 2 msg 2')]
         mock_subscriber2_run.assert_has_calls(expected_sub2_calls)
Пример #2
0
 def test_subscriber_shall_be_attachable_to_subscriptions(cls):
     subscription = 'sub msg'
     pro = Provider()
     cls.assertEqual(len(pro.subscribers), 0)
     sub = Subscriber('sub name', pro)
     sub.subscribe(subscription)
     cls.assertEqual(len(pro.subscribers[subscription]), 1)
Пример #3
0
 def test_publisher_shall_append_subscription_message_to_queue(cls):
     ''' msg_queue ~ Provider.notify(msg) ~ Publisher.publish(msg) '''
     expected_msg = 'expected msg'
     pro = Provider()
     pub = Publisher(pro)
     sub = Subscriber('sub name', pro)
     cls.assertEqual(len(pro.msg_queue), 0)
     pub.publish(expected_msg)
     cls.assertEqual(len(pro.msg_queue), 1)
     cls.assertEqual(pro.msg_queue[0], expected_msg)