]> ToastFreeware Gitweb - philipp/winterrodeln/wradmin.git/blob - tests/test_wradmin.py
7264e8489157d19d9ca03f1562d848dc4b9eae41
[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     def test_coordtool(self):
25         result = self.app.get('/coordtool/index')
26         self.assertEqual(result.status_code, 200)
27         self.assertTrue(result.data.startswith(b'<!DOCTYPE html'))
28         soup = bs4.BeautifulSoup(result.data, 'html.parser')
29         self.assertEqual(soup.title.text, 'Koordinaten-Rechner')
30
31
32 class TestDbWradmin(WradminTestBase):
33     def setUp(self):
34         super().setUp()
35         with wradmin.app.app_context():
36             # fill database
37             with open('tests/testdb.sql', 'r') as f:
38                 sql = f.read()
39             with wradmin.model.meta.engine.begin() as con:
40                 con.execute(sql)
41
42                 # update dates
43                 seconds_diff, = con.execute("SELECT TIMESTAMPDIFF(SECOND, '2017-03-31 07:00', now())").fetchone()
44                 seconds_diff = int(seconds_diff)
45                 con.execute("UPDATE wrreport SET date_report = DATE(date_report + INTERVAL %s SECOND) WHERE time_report IS NULL", (seconds_diff,))
46                 con.execute("UPDATE wrreport SET date_report = DATE(TIMESTAMP(date_report, time_report) + INTERVAL %s SECOND) WHERE time_report IS NOT NULL", (seconds_diff,))
47                 con.execute("UPDATE wrreport SET time_report = TIME(TIMESTAMP(date_report, time_report) + INTERVAL %s SECOND) WHERE time_report IS NOT NULL", (seconds_diff,))
48                 con.execute("UPDATE wrreport SET date_entry = date_entry + INTERVAL %s SECOND", (seconds_diff,))
49                 con.execute("UPDATE wrreport SET date_invalid = date_invalid + INTERVAL %s SECOND", (seconds_diff,))
50                 con.execute("UPDATE wrreport SET delete_date = delete_date + INTERVAL %s SECOND", (seconds_diff,))
51
52     def test_bericht_list(self):
53         result = self.app.get('/bericht/list')
54         self.assertEqual(result.status_code, 200)
55         self.assertTrue(result.data.startswith(b'<!DOCTYPE html'))
56         soup = bs4.BeautifulSoup(result.data, 'html.parser')
57         self.assertEqual(soup.title.text, 'Rodelbahnberichte')