|
5 | 5 | parse_episodes_response, |
6 | 6 | parse_offers_for_countries_response, |
7 | 7 | parse_popular_response, |
| 8 | + parse_providers_response, |
8 | 9 | parse_search_response, |
9 | 10 | parse_seasons_response, |
10 | 11 | ) |
|
21 | 22 | DETAILS_URL = "https://justwatch.com" |
22 | 23 | IMAGES_URL = "https://images.justwatch.com" |
23 | 24 |
|
| 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 | + |
24 | 76 | RESPONSE_OFFERS_1 = [ |
25 | 77 | { |
26 | 78 | "id": "OFFER ID 1", |
|
31 | 83 | "currency": "USD", |
32 | 84 | "lastChangeRetailPriceValue": 9.99, |
33 | 85 | "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, |
42 | 87 | "standardWebURL": "www.service1.com/offer/url/1/", |
43 | 88 | "elementCount": 123, |
44 | 89 | "availableTo": "2100-07-15", |
|
57 | 102 | "currency": "USD", |
58 | 103 | "lastChangeRetailPriceValue": 4.99, |
59 | 104 | "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, |
68 | 106 | "standardWebURL": "www.service1.com/offer/url/2/", |
69 | 107 | "elementCount": 456, |
70 | 108 | "availableTo": "2100-04-12", |
|
85 | 123 | "USD", |
86 | 124 | 9.99, |
87 | 125 | "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, |
96 | 127 | "www.service1.com/offer/url/1/", |
97 | 128 | 123, |
98 | 129 | "2100-07-15", |
|
111 | 142 | "USD", |
112 | 143 | 4.99, |
113 | 144 | "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, |
122 | 146 | "www.service1.com/offer/url/2/", |
123 | 147 | 456, |
124 | 148 | "2100-04-12", |
|
140 | 164 | "currency": "GBP", |
141 | 165 | "lastChangeRetailPriceValue": 399.99, |
142 | 166 | "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, |
151 | 168 | "standardWebURL": "www.service3.com/offer/url/1/", |
152 | 169 | "elementCount": 0, |
153 | 170 | "availableTo": None, |
|
168 | 185 | "GBP", |
169 | 186 | 399.99, |
170 | 187 | "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, |
179 | 189 | "www.service3.com/offer/url/1/", |
180 | 190 | 0, |
181 | 191 | None, |
@@ -624,3 +634,19 @@ def test_parse_offers_for_countries_response( |
624 | 634 | ): |
625 | 635 | parsed_entries = parse_offers_for_countries_response(response_json, countries) |
626 | 636 | 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