forked from beba/foerderbarometer
				
			
		
			
				
	
	
		
			160 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
from datetime import date
 | 
						|
 | 
						|
from django.test import TestCase, Client
 | 
						|
from django.conf import settings
 | 
						|
from django.contrib.auth.models import User
 | 
						|
from django.http import HttpResponse
 | 
						|
 | 
						|
from input.forms import LibraryForm
 | 
						|
from input.models import HonoraryCertificate, Project, Account, Literature
 | 
						|
 | 
						|
from .views import ViewTestCase
 | 
						|
 | 
						|
 | 
						|
class TestWithoutLogin(TestCase):
 | 
						|
 | 
						|
    def setUp(self):
 | 
						|
        #this setting supress an unwanted warning about missing root dir
 | 
						|
        settings.WHITENOISE_AUTOREFRESH = True
 | 
						|
        self.client = Client()
 | 
						|
 | 
						|
    def test_set_granted(self):
 | 
						|
        '''test if the model function set_granted() works as intended'''
 | 
						|
        obj = HonoraryCertificate.objects.create(realname='hurzel',email='hurzel@web.de')
 | 
						|
        self.assertEqual(obj.granted,None)
 | 
						|
        HonoraryCertificate.set_granted(obj.pk, True)
 | 
						|
        obj2 = HonoraryCertificate.objects.get(pk=obj.pk)
 | 
						|
        self.assertEqual(obj2.granted,True)
 | 
						|
 | 
						|
    def test_source_link(self):
 | 
						|
        '''test if link to source code is included in main page'''
 | 
						|
        response = self.client.get('', follow=True)
 | 
						|
        #print (response.content)
 | 
						|
        self.assertContains(response,'<a href="https://srcsrv.wikimedia.de/beba/foerderbarometer">Sourcecode</a>')
 | 
						|
 | 
						|
    def test_access_denied(self):
 | 
						|
        '''test if /intern redirects to login page if not logged in'''
 | 
						|
        response = self.client.get('/intern', follow=True)
 | 
						|
        self.assertContains(response,'password')
 | 
						|
 | 
						|
    def _postform(self, data, expected_form):
 | 
						|
        '''helper function to manage the Wizzard'''
 | 
						|
        response = self.client.post('/', data, follow=False)
 | 
						|
        self.assertEqual(200, self.response.status_code)
 | 
						|
        if not type(response) == HttpResponse:
 | 
						|
            if 'form' in response.context:
 | 
						|
                print('CONTENT')
 | 
						|
                print(response.content)
 | 
						|
                print('ITEMS')
 | 
						|
                print(response.items())
 | 
						|
                print('DATA')
 | 
						|
                print(data)
 | 
						|
                self.assertFalse(response.context['form'].errors)
 | 
						|
            else:
 | 
						|
                if expected_form:
 | 
						|
                    print(response.context)
 | 
						|
                    raise BaseException("NO FORM FOUND")
 | 
						|
                else:
 | 
						|
                    self.assertContains(response,"Deine Anfrage wurde gesendet.")
 | 
						|
            self.assertEqual(
 | 
						|
                 type(response.context['wizard']['form']),
 | 
						|
                 expected_form
 | 
						|
            )
 | 
						|
        return response
 | 
						|
 | 
						|
    def _notest_bib(self): # renamed because not working
 | 
						|
        '''full run through the forms to check Bibliotheksstipendium'''
 | 
						|
        self.response = self.client.get('/')
 | 
						|
        self.assertEqual(200, self.response.status_code)
 | 
						|
 | 
						|
        print("\n\nEINS EINS\n\n")
 | 
						|
 | 
						|
        response = self._postform({
 | 
						|
            'extern_view-current_step': '0',
 | 
						|
            '0-realname': 'vladimir reiherzehe',
 | 
						|
            '0-email': 'vlre@wikimedia.de',
 | 
						|
            '0-username': 'stoffel',
 | 
						|
            '0-choice': 'BIB',
 | 
						|
            '0-check': True
 | 
						|
        }, LibraryForm)
 | 
						|
 | 
						|
        print("\n\nZWEI ZWEI\n\n")
 | 
						|
 | 
						|
        response = self._postform({
 | 
						|
            'extern_view-current_step': '1',
 | 
						|
            '1-cost': 'teuroooo!',
 | 
						|
            '1-duration': 'looooong',
 | 
						|
            '1-library': 'of congress',
 | 
						|
        }, None)
 | 
						|
 | 
						|
 | 
						|
 | 
						|
class TestWithLogin(TestCase):
 | 
						|
 | 
						|
    def setUp(self):
 | 
						|
        User.objects.create_superuser('testuser', 'nomail@nomail.com', 'testpasswd')
 | 
						|
        self.client = Client()
 | 
						|
        self.user = User.objects.create_user('vladimir', 'vladimir@reiherzehe.com', 'reiherzehe')
 | 
						|
 | 
						|
    def test_access(self):
 | 
						|
        '''test if /intern gives an answer'''
 | 
						|
        self.assertEqual(self.client.login(username='testuser', password='testpasswd'), True)
 | 
						|
        response = self.client.get('/intern')
 | 
						|
        self.assertContains(response,'Übersicht aller Förderangebote')
 | 
						|
 | 
						|
    def test_project_of_year(self):
 | 
						|
        ''' test if the finance id is resettet ad start of year'''
 | 
						|
        acc = Account.objects.create()
 | 
						|
        acc.code='1234'
 | 
						|
        acc.description='blabla'
 | 
						|
        acc.save()
 | 
						|
        startdate = date(2022,1,1)
 | 
						|
        obj = Project.objects.create(account= acc, name='testproject', start=startdate)
 | 
						|
        self.assertEqual(obj.project_of_year,1)
 | 
						|
 | 
						|
        obj2 = Project.objects.create(account= acc, name='testproject2', start=startdate)
 | 
						|
        self.assertEqual(obj2.project_of_year,2)
 | 
						|
 | 
						|
        olddate = date(2021,12,31)
 | 
						|
        obj4 = Project.objects.create(account= acc, name='testproject2', start=olddate)
 | 
						|
 | 
						|
        obj3 = Project.objects.create(account= acc, name='testproject2', start=startdate)
 | 
						|
        self.assertEqual(obj3.project_of_year,3)
 | 
						|
 | 
						|
    def test_finance_id(self):
 | 
						|
        ''' test if the finance counting is correct'''
 | 
						|
        acc = Account.objects.create(code='1234', description='blabla')
 | 
						|
        startdate = date(2022,1,1)
 | 
						|
        obj = Project.objects.create(account= acc, name='testproject', start=startdate)
 | 
						|
        self.assertEqual(obj.finance_id,"1234001")
 | 
						|
 | 
						|
        obj2 = Project.objects.create(account= acc, name='testproject2', start=startdate)
 | 
						|
        self.assertEqual(obj2.finance_id,"1234002")
 | 
						|
 | 
						|
        olddate = date(2021,12,31)
 | 
						|
        obj4 = Project.objects.create(account= acc, name='testproject2', start=olddate)
 | 
						|
 | 
						|
        obj3 = Project.objects.create(account= acc, name='testproject2', start=startdate)
 | 
						|
        self.assertEqual(obj3.finance_id,"1234003")
 | 
						|
 | 
						|
    # def test_pid(self):
 | 
						|
    #     ''' test if the pid counting is correct '''
 | 
						|
    #     acc = Account.objects.create(code='1234', description='blabla')
 | 
						|
    #     startdate = date(2022,1,1)
 | 
						|
    #     obj = Project.objects.create(account= acc, name='testproject', start=startdate)
 | 
						|
    #     self.assertEqual(obj.pid,"1234001")
 | 
						|
    #     self.assertEqual(obj.account.code,"1234")
 | 
						|
    #
 | 
						|
    #     obj2 = Project.objects.create(account= acc, name='testproject2', start=startdate)
 | 
						|
    #     self.assertEqual(obj2.pid,"1234002")
 | 
						|
    #
 | 
						|
    #     olddate = date(2021,12,31)
 | 
						|
    #     obj4 = Project.objects.create(account= acc, name='testproject2', start=olddate)
 | 
						|
    #
 | 
						|
    #     obj3 = Project.objects.create(account= acc, name='testproject2', start=startdate)
 | 
						|
    #     self.assertEqual(obj3.pid,"1234004")
 | 
						|
 | 
						|
    def test_literature(self):
 | 
						|
        obj = Literature.objects.create(cost='100', notes='jolo', selfbuy_give_data=False)
 | 
						|
        self.assertEqual(obj.service_id,'Literature1')
 |