]> rtime.felk.cvut.cz Git - hubacji1/coffee-getter.git/blob - ut/test_bot.py
Restructure the project
[hubacji1/coffee-getter.git] / ut / test_bot.py
1 # -*- coding: utf-8 -*-
2 """Test Coffeebot Getter."""
3 from requests import Response
4 from unittest import TestCase
5 from cbdb import ArgCountError
6 from cbgetter import CoffeebotGetter
7
8 class SuccessInit(TestCase):
9     def test_not_blank(self):
10         g = CoffeebotGetter()
11         self.assertIsNotNone(g.cfg)
12         self.assertIsNotNone(g.db)
13         self.assertEqual(g.msg, "")
14         self.assertEqual(g.top, [])
15
16     def test_msg_getter_is_blank_by_default(self):
17         g = CoffeebotGetter()
18         self.assertEqual(g.getMsg(), "")
19
20     def test_msg_sent_to_slack(self):
21         g = CoffeebotGetter()
22         r = g.sendMsgToSlack()
23         self.assertIsInstance(r, Response)
24
25 class TopDrinks(TestCase):
26     def setUp(self):
27         self.g = CoffeebotGetter()
28
29     def test_top_drinks(self):
30         top = self.g.load_top_drinks()
31         self.assertIsNotNone(self.g.top)
32         self.assertTrue(len(self.g.top) >= 0)
33         self.assertNotEqual(self.g.msg, "")
34         self.assertTrue(len(self.g.msg) >= 0)
35
36     def test_drink_smile(self):
37         smiles = {
38             "tea": ":tea:",
39             "espresso": ":coffee:",
40             "espresso lungo": ":owl:",
41             "cappuccino": ":flara:",
42             "latte macchiato": ":baby_bottle:",
43             "Club-Mate 0,5 l": ":club-mate:",
44             "Club-Mate 0,33 l": ":club-mate_cola:",
45         }
46         for (d, s) in smiles.items():
47             assert self.g.get_drink_smile(d) == s
48
49 class TopMateDrinkers(TestCase):
50     def test_top_mate_drinkers(self):
51         g = CoffeebotGetter()
52         g.loadTopMateDrinkers()
53         self.assertIsNotNone(g.top)
54         self.assertTrue(len(g.top) >= 0)
55         self.assertNotEqual(g.msg, "")
56         self.assertTrue(len(g.msg) >= 0)
57
58     def test_get_hero_comment(self):
59         g = CoffeebotGetter()
60         self.assertNotEqual(g.getHeroComment(), "")
61
62     def test_get_some_smile(self):
63         g = CoffeebotGetter()
64         self.assertNotEqual(g.getSomeSmile(), "")
65         self.assertEqual(g.getSomeSmile()[0], ":")
66         self.assertEqual(g.getSomeSmile()[-1], ":")
67
68 class TopTeaDrinkers(TestCase):
69     def setUp(self):
70         self.g = CoffeebotGetter()
71
72     def test_top_tea_drinkers(self):
73         top = self.g.load_top_tea_drinkers()
74         self.assertIsNotNone(self.g.top)
75         self.assertTrue(len(self.g.top) >= 0)
76         self.assertNotEqual(self.g.msg, "")
77         self.assertTrue(len(self.g.msg) >= 0)
78
79 class EqualDrinkers(TestCase):
80     TOP = [
81         ("tester", 4*0.5 + 4*0.33),
82         ("newer", 2*0.33),
83         ("clone", 2*0.33),
84     ]
85     def test_strict_drinkers_order(self):
86         g = CoffeebotGetter()
87         g.top = self.TOP
88         g.computeEqualDrinkers()
89         for i in range(len(g.topeq) - 1):
90             for (un1, c1) in g.topeq[i]:
91                 for (un2, c2) in g.topeq[i + 1]:
92                     self.assertTrue(c1 > c2)
93
94     def test_equal_drinkers(self):
95         g = CoffeebotGetter()
96         g.top = self.TOP
97         g.computeEqualDrinkers()
98         for l in g.topeq:
99             cc = l[0][1]
100             for (un, c) in l:
101                self.assertEqual(cc, c)
102
103     def test_equal_drinkers_len(self):
104         g = CoffeebotGetter()
105         g.top = self.TOP
106         g.computeEqualDrinkers()
107         self.assertEqual(len(g.topeq), 2)
108
109 class DrunkSum(TestCase):
110     def test_nof_args(self):
111         g = CoffeebotGetter()
112         self.assertRaises(ArgCountError, g.loadDrunkSum)
113         self.assertRaises(ArgCountError, g.loadDrunkSum, ["espresso"])
114         self.assertRaises(
115             ArgCountError,
116             g.loadDrunkSum,
117             ["espresso", "2010-10-20"]
118         )
119         self.assertRaises(
120             ArgCountError,
121             g.loadDrunkSum,
122             ["espresso", "lungo", "2010-10-20", "2020-10-20"]
123         )
124
125 class DrunkList(TestCase):
126     def test_nof_args(self):
127         g = CoffeebotGetter()
128         self.assertRaises(ArgCountError, g.loadDrunkList)
129         self.assertRaises(ArgCountError, g.loadDrunkList, ["espresso"])
130         self.assertRaises(
131             ArgCountError,
132             g.loadDrunkList,
133             ["espresso", "2010-10-20"]
134         )
135         self.assertRaises(
136             ArgCountError,
137             g.loadDrunkList,
138             ["espresso", "lungo", "2010-10-20", "2020-10-20"]
139         )