Added error messages and tests to event settings pages

This commit is contained in:
Raphael Michel
2016-10-02 19:12:33 +02:00
parent 58f7ddb13d
commit 197178fc52
3 changed files with 93 additions and 3 deletions

View File

@@ -1,14 +1,16 @@
import datetime
from decimal import Decimal
from tests.base import SoupTest, extract_form_fields
from pretix.base.models import (
Event, EventPermission, Organizer, OrganizerPermission, User,
)
from pretix.presale.style import regenerate_css
from pretix.testutils.mock import mocker_context
class EventsTest(SoupTest):
def setUp(self):
super().setUp()
self.user = User.objects.create_user('dummy@dummy.dummy', 'dummy')
@@ -17,7 +19,7 @@ class EventsTest(SoupTest):
self.event1 = Event.objects.create(
organizer=self.orga1, name='30C3', slug='30c3',
date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc),
plugins='pretix.plugins.banktransfer'
plugins='pretix.plugins.banktransfer,tests.testdummy'
)
self.event2 = Event.objects.create(
organizer=self.orga1, name='31C3', slug='31c3',
@@ -47,7 +49,6 @@ class EventsTest(SoupTest):
doc = self.post_doc('/control/event/%s/%s/settings/' % (self.orga1.slug, self.event1.slug),
extract_form_fields(doc.select('.container-fluid form')[0]))
print(doc)
assert len(doc.select(".alert-success")) > 0
assert doc.select("[name=date_to]")[0]['value'] == "2013-12-30 17:00:00"
assert doc.select("[name=settings-max_items_per_order]")[0]['value'] == "12"
@@ -102,3 +103,79 @@ class EventsTest(SoupTest):
self.event1.settings.set('payment_banktransfer__enabled', True)
doc = self.get_doc('/control/event/%s/%s/live/' % (self.orga1.slug, self.event1.slug))
assert len(doc.select(".btn-primary")) == 0
def test_payment_settings(self):
self.get_doc('/control/event/%s/%s/settings/payment' % (self.orga1.slug, self.event1.slug))
self.post_doc('/control/event/%s/%s/settings/payment' % (self.orga1.slug, self.event1.slug), {
'payment_banktransfer__enabled': 'true',
'payment_banktransfer__fee_abs': '12.23',
'payment_banktransfer_bank_details_0': 'Test',
'settings-payment_term_days': '2',
'settings-tax_rate_default': '19.00',
})
self.event1.settings._flush()
assert self.event1.settings.get('payment_banktransfer__enabled', as_type=bool)
assert self.event1.settings.get('payment_banktransfer__fee_abs', as_type=Decimal) == Decimal('12.23')
def test_payment_settings_dont_require_fields_of_inactive_providers(self):
doc = self.post_doc('/control/event/%s/%s/settings/payment' % (self.orga1.slug, self.event1.slug), {
'settings-tax_rate_default': '19.00',
'settings-payment_term_days': '2'
}, follow=True)
assert doc.select('.alert-success')
def test_payment_settings_require_fields_of_active_providers(self):
doc = self.post_doc('/control/event/%s/%s/settings/payment' % (self.orga1.slug, self.event1.slug), {
'payment_banktransfer__enabled': 'true',
'payment_banktransfer__fee_abs': '12.23',
'settings-payment_term_days': '2',
'settings-tax_rate_default': '19.00',
})
assert doc.select('.alert-danger')
def test_invoice_settings(self):
doc = self.get_doc('/control/event/%s/%s/settings/invoice' % (self.orga1.slug, self.event1.slug))
data = extract_form_fields(doc.select("form")[0])
data['invoice_address_required'] = 'on'
doc = self.post_doc('/control/event/%s/%s/settings/invoice' % (self.orga1.slug, self.event1.slug),
data, follow=True)
assert doc.select('.alert-success')
self.event1.settings._flush()
assert self.event1.settings.get('invoice_address_required', as_type=bool)
def test_display_settings(self):
with mocker_context() as mocker:
mocked = mocker.patch('pretix.presale.style.regenerate_css.apply_async')
doc = self.get_doc('/control/event/%s/%s/settings/display' % (self.orga1.slug, self.event1.slug))
data = extract_form_fields(doc.select("form")[0])
data['primary_color'] = '#FF0000'
doc = self.post_doc('/control/event/%s/%s/settings/display' % (self.orga1.slug, self.event1.slug),
data, follow=True)
assert doc.select('.alert-success')
self.event1.settings._flush()
assert self.event1.settings.get('primary_color') == '#FF0000'
mocked.assert_any_call(args=(self.event1.pk,))
def test_email_settings(self):
with mocker_context() as mocker:
mocked = mocker.patch('pretix.base.email.CustomSMTPBackend.test')
doc = self.get_doc('/control/event/%s/%s/settings/email' % (self.orga1.slug, self.event1.slug))
data = extract_form_fields(doc.select("form")[0])
data['test'] = '1'
doc = self.post_doc('/control/event/%s/%s/settings/email' % (self.orga1.slug, self.event1.slug),
data, follow=True)
assert doc.select('.alert-success')
self.event1.settings._flush()
assert mocked.called
def test_ticket_settings(self):
doc = self.get_doc('/control/event/%s/%s/settings/tickets' % (self.orga1.slug, self.event1.slug))
data = extract_form_fields(doc.select("form")[0])
data['ticket_download'] = 'on'
data['ticketoutput_testdummy__enabled'] = 'on'
doc = self.post_doc('/control/event/%s/%s/settings/tickets' % (self.orga1.slug, self.event1.slug),
data, follow=True)
self.event1.settings._flush()
assert self.event1.settings.get('ticket_download', as_type=bool)