Exemple #1
0
def test_get_invoice(authenticated_api_client, settings, issued_invoice):
    invoice = issued_invoice
    customer = issued_invoice.customer

    issued_invoice.generate_pdf()

    with mute_signals(pre_save):
        [
            TransactionFactory.create(
                state=state,
                invoice=issued_invoice,
                payment_method=PaymentMethodFactory(customer=customer))
            for state in Transaction.States.as_list() if state not in [
                Transaction.States.Canceled, Transaction.States.Refunded,
                Transaction.States.Failed
            ]
        ]

    url = reverse('invoice-detail', kwargs={'pk': invoice.pk})

    response = authenticated_api_client.get(url, format='json')

    assert response.status_code == status.HTTP_200_OK, response.data

    # Cast IDs to UUID so the comparison check doesn't fail
    data = response.data
    data['transactions'][0]['id'] = UUID(data['transactions'][0]['id'])
    data['transactions'][1]['id'] = UUID(data['transactions'][1]['id'])
    data['transactions'][2]['id'] = UUID(data['transactions'][2]['id'])

    invoice_definition.check_response(invoice, response_data=response.data)
Exemple #2
0
def test_post_invoice_without_invoice_entries(authenticated_api_client,
                                              customer, provider):
    SubscriptionFactory.create()

    url = reverse('invoice-list')
    provider_url = build_absolute_test_url(
        reverse('provider-detail', [provider.pk]))
    customer_url = build_absolute_test_url(
        reverse('customer-detail', [customer.pk]))

    request_data = {
        'provider': provider_url,
        'customer': customer_url,
        'series': None,
        'number': None,
        'currency': 'RON',
        'invoice_entries': []
    }

    response = authenticated_api_client.post(url,
                                             data=request_data,
                                             format='json')
    assert response.status_code == status.HTTP_201_CREATED, response.data

    invoice = Invoice.objects.get(id=response.data['id'])
    invoice_definition.check_response(invoice, response.data, request_data)
Exemple #3
0
def test_post_invoice_with_invoice_entries_without_transaction_xe_rate(
    transaction_currency, authenticated_api_client
):
    customer = CustomerFactory.create()
    provider = ProviderFactory.create()
    SubscriptionFactory.create()

    url = reverse('invoice-list')
    provider_url = build_absolute_test_url(reverse('provider-detail', [provider.pk]))
    customer_url = build_absolute_test_url(reverse('customer-detail', [customer.pk]))

    request_data = {
        'provider': provider_url,
        'customer': customer_url,
        'series': None,
        'number': None,
        'currency': 'RON',
        'transaction_currency': transaction_currency,
        'invoice_entries': [{
            "description": "Page views",
            "unit_price": 10.0,
            "quantity": 20}]
    }

    response = authenticated_api_client.post(url, data=request_data, format='json')

    assert response.status_code == status.HTTP_201_CREATED, response.data

    invoice = Invoice.objects.get(id=response.data['id'])
    invoice_definition.check_response(invoice, response.data, request_data)
    assert response.data['invoice_entries']  # content already checked in previous assert