def get_by_numbers(self, numbers): try: return LottoTicket.objects.get(numbers=numbers) except LottoTicket.DoesNotExist: encoded_ticket_data = get_bob_ticket_by_numbers(numbers) decoded_ticket_data = json.loads(encoded_ticket_data) ticket = LottoTicket.objects.create(**decoded_ticket_data) return ticket
def test_service(self, mocked_request, mocked_urlopen): expected_data = json.dumps({'numbers': [1, 2]}) response = get_bob_ticket_by_numbers([1, 2]) self.assertTrue(mocked_request.called_once_with(settings.CURRENT_BOB_API_URL)) self.assertTrue(mocked_request().add_header.called_once_with('Content-Type', 'application/json')) self.assertTrue(mocked_urlopen.called_once_with(mocked_request(), expected_data)) self.assertEqual(response, mocked_urlopen().read())