lingo/tests/api/test_invoicing.py

75 lines
2.5 KiB
Python

import datetime
import pytest
from lingo.invoicing.models import InjectedLine, Regie
pytestmark = pytest.mark.django_db
def test_regies_empty(app, user):
app.authorization = ('Basic', ('john.doe', 'password'))
resp = app.get('/api/regies/')
data = resp.json
assert data['data'] == []
def test_regies(app, user):
app.authorization = ('Basic', ('john.doe', 'password'))
Regie.objects.create(label='Bar')
Regie.objects.create(label='Foo')
resp = app.get('/api/regies/')
data = resp.json
assert data['data'] == [
{'id': 'bar', 'text': 'Bar', 'slug': 'bar'},
{'id': 'foo', 'text': 'Foo', 'slug': 'foo'},
]
def test_add_injected_line(app, user):
app.post('/api/invoicing/injected-lines/', status=403)
app.authorization = ('Basic', ('john.doe', 'password'))
resp = app.post('/api/invoicing/injected-lines/', status=400)
assert resp.json['err']
assert resp.json['errors'] == {
'event_date': ['This field is required.'],
'slug': ['This field is required.'],
'label': ['This field is required.'],
'quantity': ['This field is required.'],
'unit_amount': ['This field is required.'],
'total_amount': ['This field is required.'],
'user_external_id': ['This field is required.'],
'payer_external_id': ['This field is required.'],
'regie': ['This field is required.'],
}
params = {
'event_date': '2023-01-17',
'slug': 'foobar',
'label': 'Foo Bar',
'quantity': 42,
'unit_amount': 2,
'total_amount': 64,
'user_external_id': 'user:1',
'payer_external_id': 'payer:1',
'regie': 'foo',
}
resp = app.post('/api/invoicing/injected-lines/', params=params, status=400)
assert resp.json['err']
assert resp.json['errors'] == {'regie': ['Object with slug=foo does not exist.']}
regie = Regie.objects.create(slug='foo')
resp = app.post('/api/invoicing/injected-lines/', params=params)
assert resp.json['err'] == 0
injected_line = InjectedLine.objects.get(pk=resp.json['id'])
assert injected_line.event_date == datetime.date(2023, 1, 17)
assert injected_line.slug == 'foobar'
assert injected_line.label == 'Foo Bar'
assert injected_line.quantity == 42
assert injected_line.unit_amount == 2
assert injected_line.total_amount == 64
assert injected_line.user_external_id == 'user:1'
assert injected_line.payer_external_id == 'payer:1'
assert injected_line.regie == regie