Пример #1
0
class RapidProFacadeTestWithRapidProLive(TestCase):
    def setUp(self):
        self.original_rapid_pro_live_setting = settings.RAPIDPRO_LIVE
        settings.RAPIDPRO_LIVE = True
        self.flow = FlowFactory()

        self.expected_payload = '{' \
                                '"phone": ["+256 772 123456"],' \
                                ' "flow": 1234, ' \
                                '"extra": {' \
                                '"product": "Plumpynut",' \
                                ' "sender": "Save the Children",' \
                                ' "contactName": "Test User"' \
                                '}' \
                                '}'

        self.runs_url = settings.RAPIDPRO_URLS['RUNS']
        self.fake_json = [{"run": 1, "phone": contact['phone']}]

    @patch('eums.rapid_pro.rapid_pro_facade.logger.info')
    @patch('requests.post')
    def test_should_start_a_flow_run_for_a_contact(self, mock_post, *_):
        mock_post.return_value = FakeResponse(self.fake_json, 201)
        expected_headers = {'Authorization': 'Token %s' % settings.RAPIDPRO_API_TOKEN,
                            'Content-Type': 'application/json'}
        start_delivery_run(contact_person=contact, item_description=item_description, sender=sender,
                           flow=self.flow.rapid_pro_id)
        mock_post.assert_called_with(settings.RAPIDPRO_URLS['RUNS'], data=self.expected_payload,
                                     headers=expected_headers)

    def tearDown(self):
        settings.RAPIDPRO_LIVE = self.original_rapid_pro_live_setting
        self.flow.delete()
Пример #2
0
class RapidProFacadeTestWithRapidProNotLive(TestCase):
    def setUp(self):
        self.original_rapid_pro_live_setting = settings.RAPIDPRO_LIVE
        settings.RAPIDPRO_LIVE = False
        self.flow = FlowFactory()

    @patch('eums.rapid_pro.fake_endpoints.runs.post')
    def test_should_post_to_fake_rapid_pro_when_starting_a_run(self, mock_post):
        mock_post.return_value = None
        start_delivery_run(contact_person=contact, item_description=item_description, sender=sender,
                           flow=self.flow.rapid_pro_id)
        mock_post.assert_called()

    def tearDown(self):
        settings.RAPIDPRO_LIVE = self.original_rapid_pro_live_setting
        self.flow.delete()