Пример #1
0
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
Пример #2
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
Пример #3
0
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'