Skip to content

Commit a6ca99a

Browse files
committed
Add unit tests
1 parent 83c6ff3 commit a6ca99a

File tree

1 file changed

+160
-0
lines changed

1 file changed

+160
-0
lines changed

tests.py

+160
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
from unittest import TestCase
2+
3+
import src.aggregate_utils
4+
import src.download_utils
5+
import src.filter_utils
6+
import src.io_utils
7+
import src.print_utils
8+
9+
10+
class TestAggregateUtilsMethods(TestCase):
11+
def test_extract_upcoming_promotions(self):
12+
store_data = {"elements": []}
13+
self.assertEqual(
14+
src.aggregate_utils.extract_upcoming_promotions(store_data), []
15+
)
16+
17+
def test_extract_num_promos_from_metadata(self):
18+
store_data = {"paging": {"total": -1}}
19+
self.assertEqual(
20+
src.aggregate_utils.extract_num_promos_from_metadata(store_data), -1
21+
)
22+
23+
def test_download_all_promos(self):
24+
all_promos = src.aggregate_utils.download_all_promos(verbose=True)
25+
self.assertGreater(len(all_promos), 0)
26+
27+
28+
class TestDownloadUtilsMethods(TestCase):
29+
def test_get_egs_url(self):
30+
self.assertEqual(
31+
src.download_utils.get_egs_url(), "https://www.epicgames.com/graphql"
32+
)
33+
34+
def test_get_default_params(self):
35+
params = src.download_utils.get_default_params()
36+
self.assertEqual(params["category"], '"games"')
37+
self.assertEqual(params["count"], 1000)
38+
39+
def test_get_egs_query(self):
40+
query = src.download_utils.get_egs_query()
41+
self.assertIn("{Catalog {searchStore", query)
42+
self.assertIn("paging {count total}", query)
43+
44+
def test_download_store_data(self):
45+
store_data = src.download_utils.download_store_data(
46+
cursor=0, step=1, verbose=True
47+
)
48+
self.assertIn("elements", store_data)
49+
self.assertIn("paging", store_data)
50+
51+
52+
class TestFilterUtilsMethods(TestCase):
53+
def test_has_upcoming_promo(self):
54+
element = {
55+
"promotions": {"upcomingPromotionalOffers": ["this will be discounted!"]}
56+
}
57+
self.assertTrue(src.filter_utils.has_upcoming_promo(element))
58+
element = {"promotions": None}
59+
self.assertFalse(src.filter_utils.has_upcoming_promo(element))
60+
element = {"promotions": {"upcomingPromotionalOffers": []}}
61+
self.assertFalse(src.filter_utils.has_upcoming_promo(element))
62+
63+
def test_filter_promos(self):
64+
promos = [
65+
{"promotions": {"upcomingPromotionalOffers": ["this will be discounted!"]}},
66+
{"promotions": None},
67+
{"promotions": {"upcomingPromotionalOffers": []}},
68+
]
69+
expected_filtered_promos = [
70+
{"promotions": {"upcomingPromotionalOffers": ["this will be discounted!"]}}
71+
]
72+
self.assertListEqual(
73+
src.filter_utils.filter_promos(promos), expected_filtered_promos
74+
)
75+
76+
77+
class TestIOUtilsMethods(TestCase):
78+
def test_get_output_filename(self):
79+
self.assertEqual(src.io_utils.get_output_filename(), "data/promos.json")
80+
81+
def test_load_promos(self):
82+
promos = src.io_utils.load_promos()
83+
self.assertGreater(len(promos), 0)
84+
85+
def test_save_promos(self):
86+
promos = src.io_utils.load_promos()
87+
88+
dummy_fname = "data/dummy_promos.json"
89+
src.io_utils.save_promos(promos, dummy_fname)
90+
dummy_promos = src.io_utils.load_promos(dummy_fname)
91+
92+
self.assertListEqual(promos, dummy_promos)
93+
94+
95+
class TestPrintUtilsMethods(TestCase):
96+
def test_get_sorted_promos(self):
97+
dummy_promos = [
98+
{
99+
"promotions": {
100+
"upcomingPromotionalOffers": [
101+
{"promotionalOffers": [{"startDate": 0, "endDate": 0}]}
102+
]
103+
}
104+
},
105+
{
106+
"promotions": {
107+
"upcomingPromotionalOffers": [
108+
{"promotionalOffers": [{"startDate": 0, "endDate": 1}]}
109+
]
110+
}
111+
},
112+
{
113+
"promotions": {
114+
"upcomingPromotionalOffers": [
115+
{"promotionalOffers": [{"startDate": 1, "endDate": 0}]}
116+
]
117+
}
118+
},
119+
{
120+
"promotions": {
121+
"upcomingPromotionalOffers": [
122+
{"promotionalOffers": [{"startDate": 1, "endDate": 1}]}
123+
]
124+
}
125+
},
126+
]
127+
128+
sorted_promos = src.print_utils.get_sorted_promos(dummy_promos)
129+
130+
s = ""
131+
for i in range(len(sorted_promos)):
132+
s += str(
133+
sorted_promos[i]["promotions"]["upcomingPromotionalOffers"][0][
134+
"promotionalOffers"
135+
][0]["startDate"]
136+
)
137+
s += str(
138+
sorted_promos[i]["promotions"]["upcomingPromotionalOffers"][0][
139+
"promotionalOffers"
140+
][0]["endDate"]
141+
)
142+
143+
self.assertEqual(s, "00100111")
144+
145+
def test_get_meta_data(self):
146+
element = {
147+
"promotions": {
148+
"upcomingPromotionalOffers": [{"promotionalOffers": ["hello"]}]
149+
}
150+
}
151+
self.assertEqual(src.print_utils.get_meta_data(element), "hello")
152+
153+
def test_trim_date(self):
154+
dummy_date = "2021-12-18-hello"
155+
self.assertEqual(src.print_utils.trim_date(dummy_date), "2021-12-18")
156+
157+
def test_print_promos(self):
158+
promos = src.io_utils.load_promos()
159+
filtered_promos = src.filter_utils.filter_promos(promos)
160+
self.assertTrue(src.print_utils.print_promos(filtered_promos))

0 commit comments

Comments
 (0)