Organizer-level bank import

This commit is contained in:
Raphael Michel
2017-06-19 13:43:13 +02:00
parent ea2557274f
commit d446191cf4
14 changed files with 444 additions and 94 deletions

View File

@@ -208,3 +208,68 @@ def test_retry_paid(env, client):
assert trans.state == BankTransaction.STATE_ERROR
env[3].refresh_from_db()
assert env[3].status == Order.STATUS_PAID
@pytest.mark.django_db
def test_assign_order_organizer(env, client):
job = BankImportJob.objects.create(organizer=env[0].organizer)
trans = BankTransaction.objects.create(organizer=env[0].organizer, import_job=job, payer='Foo',
state=BankTransaction.STATE_NOMATCH,
amount=23, date='unknown')
client.login(email='dummy@dummy.dummy', password='dummy')
r = json.loads(client.post('/control/organizer/{}/banktransfer/action/'.format(env[0].organizer.slug), {
'action_{}'.format(trans.pk): 'assign:{}'.format(env[2].code),
}).content.decode('utf-8'))
assert r['status'] == 'ok'
trans.refresh_from_db()
assert trans.state == BankTransaction.STATE_VALID
env[2].refresh_from_db()
assert env[2].status == Order.STATUS_PAID
@pytest.mark.django_db
def test_assign_order_organizer_full_code(env, client):
job = BankImportJob.objects.create(organizer=env[0].organizer)
trans = BankTransaction.objects.create(organizer=env[0].organizer, import_job=job, payer='Foo',
state=BankTransaction.STATE_NOMATCH,
amount=23, date='unknown')
client.login(email='dummy@dummy.dummy', password='dummy')
r = json.loads(client.post('/control/organizer/{}/banktransfer/action/'.format(env[0].organizer.slug), {
'action_{}'.format(trans.pk): 'assign:{}-{}'.format(env[0].slug.upper(), env[2].code),
}).content.decode('utf-8'))
assert r['status'] == 'ok'
trans.refresh_from_db()
assert trans.state == BankTransaction.STATE_VALID
env[2].refresh_from_db()
assert env[2].status == Order.STATUS_PAID
@pytest.mark.django_db
def test_assign_order_organizer_no_permission(env, client):
job = BankImportJob.objects.create(organizer=env[0].organizer)
trans = BankTransaction.objects.create(organizer=env[0].organizer, import_job=job, payer='Foo',
state=BankTransaction.STATE_NOMATCH,
amount=23, date='unknown')
team = env[1].teams.first()
team.can_change_orders = False
team.save()
client.login(email='dummy@dummy.dummy', password='dummy')
r = client.post('/control/organizer/{}/banktransfer/action/'.format(env[0].organizer.slug), {
'action_{}'.format(trans.pk): 'assign:{}-{}'.format(env[0].slug.upper(), env[2].code),
})
assert r.status_code == 403
@pytest.mark.django_db
def test_assign_order_organizer_no_permission_for_event(env, client):
job = BankImportJob.objects.create(organizer=env[0].organizer)
trans = BankTransaction.objects.create(organizer=env[0].organizer, import_job=job, payer='Foo',
state=BankTransaction.STATE_NOMATCH,
amount=23, date='unknown')
team = env[1].teams.first()
team.limit_events.clear()
client.login(email='dummy@dummy.dummy', password='dummy')
r = json.loads(client.post('/control/organizer/{}/banktransfer/action/'.format(env[0].organizer.slug), {
'action_{}'.format(trans.pk): 'assign:{}-{}'.format(env[0].slug.upper(), env[2].code),
}).content.decode('utf-8'))
assert r['status'] == 'error'

View File

@@ -90,9 +90,14 @@ def job(env):
return BankImportJob.objects.create(event=env[0]).pk
@pytest.fixture
def orga_job(env):
return BankImportJob.objects.create(organizer=env[0].organizer).pk
@pytest.mark.django_db
def test_mark_paid(env, job):
process_banktransfers(env[0].pk, job, [{
process_banktransfers(job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellung DUMMY1234S',
'date': '2016-01-26',
@@ -104,7 +109,7 @@ def test_mark_paid(env, job):
@pytest.mark.django_db
def test_check_amount(env, job):
process_banktransfers(env[0].pk, job, [{
process_banktransfers(job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellung DUMMY1Z3AS',
'date': '2016-01-26',
@@ -116,7 +121,7 @@ def test_check_amount(env, job):
@pytest.mark.django_db
def test_ignore_canceled(env, job):
process_banktransfers(env[0].pk, job, [{
process_banktransfers(job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellung DUMMY6789Z',
'date': '2016-01-26',
@@ -128,7 +133,7 @@ def test_ignore_canceled(env, job):
@pytest.mark.django_db
def test_autocorrection(env, job):
process_banktransfers(env[0].pk, job, [{
process_banktransfers(job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellung DUMMY12345',
'amount': '23.00',
@@ -142,7 +147,7 @@ def test_autocorrection(env, job):
def test_huge_amount(env, job):
env[2].total = Decimal('23000.00')
env[2].save()
process_banktransfers(env[0].pk, job, [{
process_banktransfers(job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellung DUMMY12345',
'amount': '23.000,00',
@@ -150,3 +155,45 @@ def test_huge_amount(env, job):
}])
env[2].refresh_from_db()
assert env[2].status == Order.STATUS_PAID
@pytest.mark.django_db
def test_mark_paid_organizer(env, orga_job):
process_banktransfers(orga_job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellung DUMMY-1234S',
'date': '2016-01-26',
'amount': '23.00'
}])
env[2].refresh_from_db()
assert env[2].status == Order.STATUS_PAID
@pytest.mark.django_db
def test_mark_paid_organizer_weird_slug(env, orga_job):
env[0].slug = 'du.m-y'
env[0].save()
process_banktransfers(orga_job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellung DU.M-Y-1234S',
'date': '2016-01-26',
'amount': '23.00'
}])
env[2].refresh_from_db()
assert env[2].status == Order.STATUS_PAID
@pytest.mark.django_db
def test_wrong_event_organizer(env, orga_job):
Event.objects.create(
organizer=env[0].organizer, name='Wrong', slug='wrong',
date_from=now(), plugins='pretix.plugins.banktransfer'
)
process_banktransfers(orga_job, [{
'payer': 'Karla Kundin',
'reference': 'Bestellung WRONG-1234S',
'date': '2016-01-26',
'amount': '23.00'
}])
env[2].refresh_from_db()
assert env[2].status == Order.STATUS_PENDING