forked from beba/foerderbarometer
134 lines
3.7 KiB
Python
134 lines
3.7 KiB
Python
from django.test import TestCase
|
|
|
|
from input.models import Library
|
|
from input.utils.testing import create_superuser, login, request
|
|
|
|
|
|
class AnonymousViewTestCase(TestCase):
|
|
|
|
def test_index(self):
|
|
response = request(self, 'index')
|
|
|
|
self.assertContains(response,'<a href="https://srcsrv.wikimedia.de/beba/foerderbarometer">Sourcecode</a>')
|
|
|
|
def test_extern(self):
|
|
request(self, 'extern')
|
|
|
|
@staticmethod
|
|
def get_step_data(step, data):
|
|
return {'extern_view-current_step': step, **data}
|
|
|
|
@classmethod
|
|
def get_first_step_data(cls, choice):
|
|
return cls.get_step_data(0, {
|
|
'0-realname': 'Test',
|
|
'0-email': 'test@example.com',
|
|
'0-choice': choice,
|
|
'0-check': True,
|
|
})
|
|
|
|
def helper_extern(self, choice, text, data):
|
|
first_step_data = self.get_first_step_data(choice)
|
|
|
|
response = request(self, 'extern', data=first_step_data)
|
|
|
|
self.assertContains(response, text)
|
|
|
|
second_step_data = self.get_step_data(1, data)
|
|
|
|
response = request(self, 'extern', data=second_step_data)
|
|
|
|
self.assertContains(response, 'Deine Anfrage wurde gesendet.')
|
|
|
|
def test_extern_first_steps(self):
|
|
types = [
|
|
('BIB', 'Bibliotheksausweis'),
|
|
('ELIT', 'Online-Ressource'),
|
|
('MAIL', 'Mailadresse beantragen'),
|
|
('IFG', 'gewonnenen Informationen'),
|
|
('LIT', 'Literatur verwenden'),
|
|
('LIST', 'Mailingliste beantragen'),
|
|
('TRAV', 'Transportmittel'),
|
|
('SOFT', 'Lizenz'),
|
|
('VIS', 'DIN 5008'),
|
|
]
|
|
|
|
for choice, text in types:
|
|
with self.subTest(type=choice):
|
|
self.client.session.clear()
|
|
|
|
data = self.get_first_step_data(choice)
|
|
response = request(self, 'extern', data=data)
|
|
|
|
self.assertContains(response, text)
|
|
|
|
def test_extern_travel(self):
|
|
self.helper_extern('TRAV', 'Transportmittel', {
|
|
'project_name': 'Test',
|
|
'transport': 'BAHN',
|
|
'travelcost': 10,
|
|
'checkin': '2025-01-01',
|
|
'checkout': '2025-01-02',
|
|
'hotel': 'TRUE',
|
|
'notes': '',
|
|
})
|
|
|
|
def test_extern_lit(self):
|
|
self.helper_extern('LIT', 'Literatur verwenden', {
|
|
'cost': 20,
|
|
'info': 'Test',
|
|
'source': 'Test',
|
|
'notes': '',
|
|
'selfbuy': 'TRUE',
|
|
'selfbuy_data': 'NONE',
|
|
'selfbuy_give_data': True,
|
|
'check': True,
|
|
})
|
|
|
|
def test_extern_bib(self):
|
|
self.helper_extern('BIB', 'Bibliotheksausweis', {
|
|
'cost': 20,
|
|
'library': 'Test',
|
|
'duration': 'Test',
|
|
'notes': '',
|
|
})
|
|
|
|
|
|
class AuthenticatedViewTestCase(TestCase):
|
|
|
|
@classmethod
|
|
def setUpTestData(cls):
|
|
cls.user = create_superuser('staff')
|
|
|
|
def setUp(self):
|
|
login(self)
|
|
|
|
def test_export(self):
|
|
request(self, 'export')
|
|
|
|
def helper_auth_deny(self, view, expected):
|
|
obj = Library.objects.create(library='Test')
|
|
|
|
request(self, view, args=[obj.type, obj.id])
|
|
|
|
obj.refresh_from_db(fields=['granted'])
|
|
|
|
self.assertEqual(obj.granted, expected)
|
|
|
|
def helper_auth_deny_error(self, view):
|
|
response = request(self, view, args=['TEST', 1])
|
|
|
|
self.assertContains(response, 'ERROR')
|
|
|
|
def test_authorize(self):
|
|
self.helper_auth_deny('authorize', True)
|
|
|
|
def test_authorize_error(self):
|
|
self.helper_auth_deny_error('authorize')
|
|
|
|
def test_deny(self):
|
|
self.helper_auth_deny('deny', False)
|
|
|
|
def test_deny_error(self):
|
|
self.helper_auth_deny_error('deny')
|