]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blob - tests/test_wradmin.py
ce2135c179f1eb9aca5c15ca257834037480cea1
[philipp/winterrodeln/wradmin.git] / tests / test_wradmin.py
1 """How to test wradmin:
2
3 WRADMIN_SETTINGS=../wradmin/test.cfg python3 -m unittest tests.test_wradmin
4 """
5 import unittest
6 import bs4  # beautiful soup
7 import wradmin
8
9
10 class WradminTestBase(unittest.TestCase):
11     def setUp(self):
12         wradmin.app.config['TESTING'] = True
13         self.app = wradmin.app.test_client()
14
15
16 class TestNoDbWradmin(WradminTestBase):
17     def test_root(self):
18         result = self.app.get('/')
19         self.assertEqual(result.status_code, 200)
20         self.assertTrue(result.data.startswith(b'<!DOCTYPE html'))
21         soup = bs4.BeautifulSoup(result.data, 'html.parser')
22         self.assertEqual(soup.title.text, 'Hauptmenü')
23
24
25 class TestDbWradmin(WradminTestBase):
26     def setUp(self):
27         super().setUp()
28         with wradmin.app.app_context():
29             # fill database
30             with open('tests/testdb.sql', 'r') as f:
31                 sql = f.read()
32             with wradmin.get_db() as con:
33                 con.execute(sql)
34
35                 # update dates
36                 seconds_diff, = con.execute("SELECT TIMESTAMPDIFF(SECOND, '2017-03-31 07:00', now())").fetchone()
37                 seconds_diff = int(seconds_diff)
38                 con.execute("UPDATE wrreport SET date_report = DATE(date_report + INTERVAL %s SECOND) WHERE time_report IS NULL", (seconds_diff,))
39                 con.execute("UPDATE wrreport SET date_report = DATE(TIMESTAMP(date_report, time_report) + INTERVAL %s SECOND) WHERE time_report IS NOT NULL", (seconds_diff,))
40                 con.execute("UPDATE wrreport SET time_report = TIME(TIMESTAMP(date_report, time_report) + INTERVAL %s SECOND) WHERE time_report IS NOT NULL", (seconds_diff,))
41                 con.execute("UPDATE wrreport SET date_entry = date_entry + INTERVAL %s SECOND", (seconds_diff,))
42                 con.execute("UPDATE wrreport SET date_invalid = date_invalid + INTERVAL %s SECOND", (seconds_diff,))
43                 con.execute("UPDATE wrreport SET delete_date = delete_date + INTERVAL %s SECOND", (seconds_diff,))
44
45     def test_reports(self):
46         result = self.app.get('/bericht/list')
47         self.assertEqual(result.status_code, 200)
48         self.assertTrue(result.data.startswith(b'<!DOCTYPE html'))
49         soup = bs4.BeautifulSoup(result.data, 'html.parser')
50         self.assertEqual(soup.title.text, 'Rodelbahnberichte')