Skip to content

Commit 56f502f

Browse files
Add unit tests for parse_providers_response
1 parent 6482f19 commit 56f502f

1 file changed

Lines changed: 74 additions & 48 deletions

File tree

test/simplejustwatchapi/test_parser.py

Lines changed: 74 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
parse_episodes_response,
66
parse_offers_for_countries_response,
77
parse_popular_response,
8+
parse_providers_response,
89
parse_search_response,
910
parse_seasons_response,
1011
)
@@ -21,6 +22,57 @@
2122
DETAILS_URL = "https://justwatch.com"
2223
IMAGES_URL = "https://images.justwatch.com"
2324

25+
RESPONSE_PACKAGE_1 = {
26+
"id": "id1",
27+
"packageId": 1,
28+
"clearName": "Service 1",
29+
"technicalName": "service1",
30+
"shortName": "sr1",
31+
"icon": "/icon/url/service1",
32+
}
33+
PARSED_PACKAGE_1 = OfferPackage(
34+
"id1",
35+
1,
36+
"Service 1",
37+
"service1",
38+
"sr1",
39+
IMAGES_URL + "/icon/url/service1",
40+
)
41+
42+
RESPONSE_PACKAGE_2 = {
43+
"id": "id2",
44+
"packageId": 2,
45+
"clearName": "Service 2",
46+
"technicalName": "service2",
47+
"shortName": "sr2",
48+
"icon": "/icon/url/service2",
49+
}
50+
PARSED_PACKAGE_2 = OfferPackage(
51+
"id2",
52+
2,
53+
"Service 2",
54+
"service2",
55+
"sr2",
56+
IMAGES_URL + "/icon/url/service2",
57+
)
58+
59+
RESPONSE_PACKAGE_3 = {
60+
"id": "id3",
61+
"packageId": 3,
62+
"clearName": "Service 3",
63+
"technicalName": "service3",
64+
"shortName": "sr3",
65+
"icon": "/icon/url/service3",
66+
}
67+
PARSED_PACKAGE_3 = OfferPackage(
68+
"id3",
69+
3,
70+
"Service 3",
71+
"service3",
72+
"sr3",
73+
IMAGES_URL + "/icon/url/service3",
74+
)
75+
2476
RESPONSE_OFFERS_1 = [
2577
{
2678
"id": "OFFER ID 1",
@@ -31,14 +83,7 @@
3183
"currency": "USD",
3284
"lastChangeRetailPriceValue": 9.99,
3385
"type": "SOME_TYPE_1",
34-
"package": {
35-
"id": "id1",
36-
"packageId": 1,
37-
"clearName": "Service 1",
38-
"technicalName": "service1",
39-
"shortName": "sr1",
40-
"icon": "/icon/url/service1",
41-
},
86+
"package": RESPONSE_PACKAGE_1,
4287
"standardWebURL": "www.service1.com/offer/url/1/",
4388
"elementCount": 123,
4489
"availableTo": "2100-07-15",
@@ -57,14 +102,7 @@
57102
"currency": "USD",
58103
"lastChangeRetailPriceValue": 4.99,
59104
"type": "SOME_TYPE_2",
60-
"package": {
61-
"id": "id2",
62-
"packageId": 2,
63-
"clearName": "Service 2",
64-
"technicalName": "service2",
65-
"shortName": "sr2",
66-
"icon": "/icon/url/service2",
67-
},
105+
"package": RESPONSE_PACKAGE_2,
68106
"standardWebURL": "www.service1.com/offer/url/2/",
69107
"elementCount": 456,
70108
"availableTo": "2100-04-12",
@@ -85,14 +123,7 @@
85123
"USD",
86124
9.99,
87125
"SOME_TYPE_1",
88-
OfferPackage(
89-
"id1",
90-
1,
91-
"Service 1",
92-
"service1",
93-
"sr1",
94-
IMAGES_URL + "/icon/url/service1",
95-
),
126+
PARSED_PACKAGE_1,
96127
"www.service1.com/offer/url/1/",
97128
123,
98129
"2100-07-15",
@@ -111,14 +142,7 @@
111142
"USD",
112143
4.99,
113144
"SOME_TYPE_2",
114-
OfferPackage(
115-
"id2",
116-
2,
117-
"Service 2",
118-
"service2",
119-
"sr2",
120-
IMAGES_URL + "/icon/url/service2",
121-
),
145+
PARSED_PACKAGE_2,
122146
"www.service1.com/offer/url/2/",
123147
456,
124148
"2100-04-12",
@@ -140,14 +164,7 @@
140164
"currency": "GBP",
141165
"lastChangeRetailPriceValue": 399.99,
142166
"type": "SOME_TYPE_3",
143-
"package": {
144-
"id": "id3",
145-
"packageId": 3,
146-
"clearName": "Service 3",
147-
"technicalName": "service3",
148-
"shortName": "sr3",
149-
"icon": "/icon/url/service3",
150-
},
167+
"package": RESPONSE_PACKAGE_3,
151168
"standardWebURL": "www.service3.com/offer/url/1/",
152169
"elementCount": 0,
153170
"availableTo": None,
@@ -168,14 +185,7 @@
168185
"GBP",
169186
399.99,
170187
"SOME_TYPE_3",
171-
OfferPackage(
172-
"id3",
173-
3,
174-
"Service 3",
175-
"service3",
176-
"sr3",
177-
IMAGES_URL + "/icon/url/service3",
178-
),
188+
PARSED_PACKAGE_3,
179189
"www.service3.com/offer/url/1/",
180190
0,
181191
None,
@@ -624,3 +634,19 @@ def test_parse_offers_for_countries_response(
624634
):
625635
parsed_entries = parse_offers_for_countries_response(response_json, countries)
626636
assert parsed_entries == expected_output
637+
638+
639+
@mark.parametrize(
640+
argnames=("response_json", "expected_output"),
641+
argvalues=[
642+
(
643+
{"data": {"packages": [RESPONSE_PACKAGE_1, RESPONSE_PACKAGE_2, RESPONSE_PACKAGE_3]}},
644+
[PARSED_PACKAGE_1, PARSED_PACKAGE_2, PARSED_PACKAGE_3],
645+
),
646+
({"data": {"packages": [RESPONSE_PACKAGE_1]}}, [PARSED_PACKAGE_1]),
647+
({"data": {"packages": []}}, []),
648+
],
649+
)
650+
def test_parse_providers_response(response_json: dict, expected_output: list[OfferPackage]):
651+
parsed_packages = parse_providers_response(response_json)
652+
assert parsed_packages == expected_output

0 commit comments

Comments
 (0)