75 lines
2.5 KiB
Python
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
|