def test_atol_fetch_receipt_report_check_receipt_status(): uuid = str(uuid4()) receipt = Receipt.objects.create(uuid=uuid) with mock.patch.object(AtolAPI, 'report') as report_mock: atol_receive_receipt_report(receipt.id) assert len(report_mock.mock_calls) == 0
def test_retry_created_receipt_for_not_processed_receipt(): uuid = str(uuid4()) now = timezone.now() receipt = Receipt.objects.create(status='initiated', uuid=uuid, purchase_price=1234.5, user_phone='+79991234567') responses.add(responses.POST, ATOL_BASE_URL + '/getToken', status=200, json={ 'code': 0, 'token': 'foobar' }) responses.add(responses.GET, ATOL_BASE_URL + '/ATOL-ProdTest-1/report/%s' % uuid, status=400, json={'error': { 'code': 1 }}) with mock.patch.object(AtolAPI, 'sell', wraps=AtolAPI.sell) as sell_mock: sell_mock.return_value = NewReceipt( uuid='42ee0a7a-2b30-42f1-951f-1c131e2ab322', data=None) with mock.patch.object(atol_receive_receipt_report, 'apply_async'): atol_receive_receipt_report(receipt.id) assert len(sell_mock.mock_calls) == 1 receipt.refresh_from_db() assert receipt.uuid == '42ee0a7a-2b30-42f1-951f-1c131e2ab322' assert receipt.status == ReceiptStatus.retried assert receipt.retried_at > now
def test_atol_fetch_receipt_report_stopped_on_unrecoverable_error(): uuid = str(uuid4()) receipt = Receipt.objects.create(status='initiated', uuid=uuid) responses.add(responses.POST, ATOL_BASE_URL + '/getToken', status=200, json={'code': 0, 'token': 'foobar'}) responses.add(responses.GET, ATOL_BASE_URL + '/ATOL-ProdTest-1/report/%s' % uuid, status=400, json={'error': {'code': 3}}) atol_receive_receipt_report(receipt.id) receipt.refresh_from_db() assert receipt.status == 'failed'