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']
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]
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)
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)
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
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()
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'
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()
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')
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'
'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
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']
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']