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')
 |