]> rtime.felk.cvut.cz Git - hubacji1/coffee-getter.git/blob - ut/test_db.py
Merge branch 'feature/refactor'
[hubacji1/coffee-getter.git] / ut / test_db.py
1 # -*- coding: utf-8 -*-
2 """Test database access."""
3 from os import path, remove
4 from sqlite3 import connect
5 from unittest import TestCase
6 from cbconf import Conf
7 from cbdb import Db
8
9 TESTDB_FILENAME = ".tmptest.db"
10
11 def create_test_db(fn):
12     con = connect(fn)
13     cur = con.cursor()
14     cur.executescript("""
15 pragma foreign_keys = ON;
16
17 create table if not exists users (
18 id varchar(24) primary key not null,
19 name varchar(255) default "human"
20 );
21
22 create table if not exists flavors (
23 name varchar(255) primary key not null,
24 ord integer not null default 999
25 );
26
27 insert or ignore into flavors values
28 ("espresso", 2),
29 ("espresso lungo", 3),
30 ("cappuccino", 1),
31 ("latte macchiato", 4),
32 ("Club-Mate 0,5 l", 5),
33 ("Club-Mate 0,33 l", 6)
34 ;
35
36 create table if not exists coffees (
37 num integer primary key,
38 id varchar(24) references users(id), -- id may be unknown
39 flavor varchar(255) not null references flavors(name),
40 time datetime default current_timestamp,
41 UNIQUE (id, flavor, time)
42 );
43
44
45 create table if not exists days (
46 num integer primary key not null
47 );
48
49 insert or ignore into days values
50 (0),(1),(2),(3),(4),(5),(6)
51 ;
52     """)
53     cur.executescript("""
54 INSERT INTO users VALUES('1111','tester');
55 INSERT INTO coffees VALUES(1,'1111','espresso lungo','2019-03-20 11:22:43');
56 INSERT INTO coffees VALUES(2,'1111','Club-Mate 0,5 l','2019-03-20 11:22:43');
57 INSERT INTO coffees VALUES(3,'1111','Club-Mate 0,33 l','2019-03-20 11:22:43');
58 INSERT INTO coffees VALUES(4,'1111','espresso lungo','2019-03-20 11:22:44');
59 INSERT INTO coffees VALUES(5,'1111','Club-Mate 0,5 l','2019-03-20 11:22:44');
60 INSERT INTO coffees VALUES(6,'1111','Club-Mate 0,33 l','2019-03-20 11:22:44');
61 INSERT INTO coffees VALUES(7,'1111','espresso lungo','2019-03-20 11:22:45');
62 INSERT INTO coffees VALUES(8,'1111','Club-Mate 0,5 l','2019-03-20 11:22:45');
63 INSERT INTO coffees VALUES(9,'1111','Club-Mate 0,33 l','2019-03-20 11:22:45');
64 INSERT INTO coffees VALUES(10,'1111','espresso lungo','2019-03-20 11:22:46');
65 INSERT INTO coffees VALUES(11,'1111','Club-Mate 0,5 l','2019-03-20 11:22:46');
66 INSERT INTO coffees VALUES(12,'1111','Club-Mate 0,33 l','2019-03-20 11:22:46');
67     """)
68     con.close()
69
70 def delete_test_db(fn):
71     remove(fn)
72
73 class CoffeesTable(TestCase):
74     def test_db_exists(self):
75         cfg = Conf()
76         self.assertTrue(path.isfile(cfg.getCoffeeDbPath()))
77         db = Db()
78         self.assertIsNotNone(db.con)
79         self.assertIsNotNone(db.cur)
80
81     def test_test_db_exists(self):
82         create_test_db(TESTDB_FILENAME)
83         try:
84             db = Db(TESTDB_FILENAME)
85             self.assertIsNotNone(db.con)
86             self.assertIsNotNone(db.cur)
87         finally:
88             delete_test_db(TESTDB_FILENAME)