Example #1
0
def test_eu_normalize_vat_company(intra_eu_vat_rate):
    invoice = factories.InvoiceFactory(seller_country='PL', buyer_country='DE')
    if intra_eu_vat_rate:
        invoice.normalize_vat(intra_eu_vat_rate=intra_eu_vat_rate)
    else:
        intra_eu_vat_rate = 'np'
        invoice.normalize_vat()
    for position in invoice.positions:
        assert intra_eu_vat_rate == position['tax']
Example #2
0
 def test_delete(self, api_client):
     invoice = factories.InvoiceFactory(api_client=api_client)
     invoice.post()
     assert invoice.status == 'issued'
     invoice.delete()
     assert invoice.id is not None
     with pytest.raises(HttpException,
                        match='404 Client Error: Not Found for url'):
         # noinspection PyStatementEffect
         api_client.invoices[invoice.id]
Example #3
0
 def test_dates_on_invoice(self):
     invoice = factories.InvoiceFactory()
     assert isinstance(invoice.sell_date, datetime.date)
     assert isinstance(invoice.issue_date, datetime.date)
     assert isinstance(invoice.payment_to, datetime.date)
     assert isinstance(invoice.get_raw_data()['sell_date'],
                       six.string_types)
     assert isinstance(invoice.get_raw_data()['issue_date'],
                       six.string_types)
     assert isinstance(invoice.get_raw_data()['payment_to'],
                       six.string_types)
Example #4
0
def test_invalid_tax_no_is_not_restricted(sandbox_api):
    i = factories.InvoiceFactory(
        api_client=sandbox_api,
        kind='proforma',
        use_moss=True,
        seller_country='PL',
        buyer_country='DE',
        buyer_tax_no='lorem',
    )
    i.normalize_vat().post()
    logging.debug("i.view_url: %s", i.view_url)
Example #5
0
    def test_discount_amount(self, sandbox_api, total_price_gross,
                             total_price_net, total_price_tax, quantity,
                             price_gross, price_net, price_tax, discount,
                             discount_kind, final_price_gross, final_price_net,
                             final_price_tax, tax):
        """This more an expectation validation test an actual unit test"""

        position = factories.InvoicePosition(
            total_price_gross=total_price_gross,
            tax=tax,
            quantity=quantity,
            discount=discount,
            discount_percent=discount,
        )
        invoice = factories.InvoiceFactory(api_client=sandbox_api,
                                           show_discount=1,
                                           discount_kind=discount_kind,
                                           positions=[position])
        invoice.post().get()
        position = invoice.positions[0]

        # Has discount
        if discount_kind == 'amount':
            assert discount == position['discount']
        else:
            assert discount == position['discount_percent']

        # No discount shown in totals of position
        assert total_price_gross == position['total_price_gross']
        assert total_price_net == position['total_price_net']
        assert total_price_tax == position['total_price_tax']

        # Quantity quantity * price == total_price
        assert price_gross == position['price_gross']
        assert price_net == position['price_net']
        assert price_tax == position['price_tax']
        assert tax == position['tax']

        # With discount
        assert final_price_gross == invoice.price_gross
        assert final_price_net == invoice.price_net
        assert final_price_tax == invoice.price_tax
Example #6
0
def test_send_invoice(api_client, buyer_email):
    invoice = factories.InvoiceFactory(api_client=api_client,
                                       buyer_email=buyer_email)
    invoice.post()
    invoice.send_by_email()
Example #7
0
 def test_mark_paid(self, api_client):
     invoice = factories.InvoiceFactory(api_client=api_client)
     invoice.post()
     assert invoice.status == 'issued'
     invoice.mark_paid()
     assert invoice.status == 'paid'
Example #8
0
 def test_send_by_email_failed_no_id(self):
     invoice = factories.InvoiceFactory()
     with pytest.raises(AssertionError,
                        match='Cannot send invoice without id'):
         invoice.send_by_email()
Example #9
0
 def test_send_by_email(self, mocker):
     post = mocker.patch('fakturownia.core.ApiClient.post')
     invoice = factories.InvoiceFactory(id='666')
     invoice.send_by_email()
     post.assert_called_with('invoices/666/send_by_email.json')
Example #10
0
 def test_set_datetime_str(self):
     invoice = factories.InvoiceFactory()
     invoice.sell_date = '1980-08-14'
     assert invoice.sell_date == datetime.date(1980, 8, 14)
     # noinspection PyProtectedMember
     assert invoice.get_raw_data()['sell_date'] == '1980-08-14'
Example #11
0
            'Requires an environment FAKTUROWNIA_EXISTING_PRODUCT_ID setting')
    return secrets['FAKTUROWNIA_EXISTING_PRODUCT_ID']


# noinspection PyShadowingNames
def test_create_invoice(endpoint, mocker):
    request = mocker.patch('requests.request')
    request.return_value = MagicMock()
    request.json.return_value = {}
    endpoint.create()
    assert request.called


@pytest.mark.parametrize("data", [
    INVOICE_CREATE,
    factories.InvoiceFactory().get_raw_data(),
])
def test_create_refresh_send_invoice_sandbox(api_client, data):
    invoice = api_client.invoices.create(**data)
    assert invoice
    invoice.get()
    log.debug("id: %s", invoice.id)
    log.debug("payment_url: %s", invoice.payment_url)
    assert invoice.id
    assert invoice.payment_url


@pytest.mark.parametrize("buyer_email", [
    '*****@*****.**',
    os.environ.get('FAKTUROWNIA_SANDBOX_EMAIL', '*****@*****.**')
])
def test_change_client_data_effect_on_history_invoices(sandbox_api):
    invoice = factories.InvoiceFactory(api_client=sandbox_api).post().get()
    client = sandbox_api.clients[invoice.client_id]
    client.name = 'Kabaret Starszych Panów'
    client.put()
    assert invoice.buyer_name == sandbox_api.invoices[invoice.id].get().buyer_name
Example #13
0
def test_normalize_vat_world():
    invoice = factories.InvoiceFactory(seller_country='PL', buyer_country='US')
    invoice.normalize_vat(23)
    for position in invoice.positions:
        assert 23 == position['tax']
Example #14
0
def test_eu_normalize_vat(country, vat):
    invoice = factories.InvoiceFactory(seller_country='PL', buyer_country=country, buyer_tax_no=None)
    invoice.normalize_vat()
    for position in invoice.positions:
        assert vat == position['tax']