55import time
66
77
8- def request_limit_decorator (test_method ):
9- def wrapper (self , * args , ** kwargs ):
10- for _ in range (20 ):
11- try :
12- result = test_method (self , * args , ** kwargs )
13- break
14- except RequestsLimitError :
15- time .sleep (5 )
16- else :
17- raise RequestsLimitError ()
18-
19- return result
20- return wrapper
21-
22-
238class TestWallhavenApiV1 (unittest .TestCase ):
249 @classmethod
2510 def setUpClass (self ):
2611 self .wallhaven_api = WallhavenApiV1 (api_key = os .getenv ('APIKEY' , None ), verify_connection = False ,
27- base_url = "http://wallhaven.cc/api/v1" )
12+ base_url = "http://wallhaven.cc/api/v1" ,
13+ requestslimit_timeout = (15 , 5 ))
2814
2915 def test_search (self ):
3016 search_data = self .wallhaven_api .search ()
3117
3218 self .assertIn ("data" , search_data )
3319 self .assertIn ("meta" , search_data )
3420
35- @request_limit_decorator
3621 def test_search_categories (self ):
3722 for category in list (Category ):
3823 search_data = self .wallhaven_api .search (categories = category )
3924
4025 for wallpaper_data in search_data ["data" ]:
4126 self .assertEqual (category .value , wallpaper_data ["category" ])
4227
43- @request_limit_decorator
4428 def test_search_purities (self ):
4529 for purity in list (Purity ):
4630 search_data = self .wallhaven_api .search (purities = purity )
4731
4832 for wallpaper_data in search_data ["data" ]:
4933 self .assertEqual (purity .value , wallpaper_data ["purity" ])
5034
51- @request_limit_decorator
5235 def test_search_sorting (self ):
5336 for sorting_method in list (Sorting ):
5437 search_data = self .wallhaven_api .search (sorting = sorting_method )
@@ -66,15 +49,12 @@ def parse_datetime(datetime_string):
6649 self .assertGreaterEqual (datetime_1 , datetime_2 ) \
6750 if order == Order .desc else self .assertLessEqual (datetime_1 , datetime_2 )
6851
69- @request_limit_decorator
7052 def test_search_sorting_dated_added_asc (self ):
7153 self .search_sorting_dated_added (Order .asc )
7254
73- @request_limit_decorator
7455 def test_search_sorting_dated_added_desc (self ):
7556 self .search_sorting_dated_added (Order .desc )
7657
77- @request_limit_decorator
7858 def search_sorting_views (self , order ):
7959 search_data = self .wallhaven_api .search (sorting = Sorting .views , order = order )
8060 for i in range (len (search_data ["data" ]) - 1 ):
@@ -83,12 +63,10 @@ def search_sorting_views(self, order):
8363 self .assertGreaterEqual (views_1 , views_2 ) \
8464 if order == Order .desc else self .assertLessEqual (views_1 , views_2 )
8565
86- @request_limit_decorator
8766 @unittest .skip ("May content unsorted results. Need help" )
8867 def test_search_sorting_views_asc (self ):
8968 self .search_sorting_views (Order .asc )
9069
91- @request_limit_decorator
9270 @unittest .skip ("May content unsorted results. Need help" )
9371 def test_search_sorting_views_desc (self ):
9472 self .search_sorting_views (Order .desc )
@@ -101,17 +79,14 @@ def search_sorting_favorites(self, order):
10179 self .assertGreaterEqual (favorites_1 , favorites_2 ) \
10280 if order == Order .desc else self .assertLessEqual (favorites_1 , favorites_2 )
10381
104- @request_limit_decorator
10582 @unittest .skip ("May content unsorted results. Need help" )
10683 def test_search_sorting_favorites_asc (self ):
10784 self .search_sorting_favorites (Order .asc )
10885
109- @request_limit_decorator
11086 @unittest .skip ("May content unsorted results. Need help" )
11187 def test_search_sorting_favorites_desc (self ):
11288 self .search_sorting_favorites (Order .desc )
11389
114- @request_limit_decorator
11590 @unittest .skip ("May content unsorted results. Need help" )
11691 def test_search_top_range (self ):
11792 for top_range in list (TopRange ):
@@ -132,35 +107,30 @@ def test_search_top_range(self):
132107
133108 self .assertGreaterEqual (created_at , datetime .datetime .now () - timedelta )
134109
135- @request_limit_decorator
136110 def test_search_atleast (self ):
137111 search_data = self .wallhaven_api .search (atleast = (1920 , 1080 ))
138112 for wallpaper in search_data ["data" ]:
139113 self .assertGreaterEqual (int (wallpaper ["dimension_x" ]), 1920 )
140114 self .assertGreaterEqual (int (wallpaper ["dimension_y" ]), 1080 )
141115
142- @request_limit_decorator
143116 def test_search_resolutions (self ):
144117 search_data = self .wallhaven_api .search (resolutions = (1920 , 1080 ))
145118 for wallpaper in search_data ["data" ]:
146119 self .assertEqual (int (wallpaper ["dimension_x" ]), 1920 )
147120 self .assertEqual (int (wallpaper ["dimension_y" ]), 1080 )
148121
149- @request_limit_decorator
150122 def test_search_ratios (self ):
151123 search_data = self .wallhaven_api .search (ratios = (16 , 10 ))
152124 for wallpaper in search_data ["data" ]:
153125 self .assertEqual (float (wallpaper ["ratio" ]), 1.6 )
154126
155- @request_limit_decorator
156127 def test_search_colors (self ):
157128 for color in list (Color ):
158129 search_data = self .wallhaven_api .search (colors = color )
159130 for wallpaper in search_data ["data" ]:
160131 self .assertIn ("colors" , wallpaper )
161132 self .assertIn ("#{}" .format (color .value ), wallpaper ["colors" ])
162133
163- @request_limit_decorator
164134 def test_search_page (self ):
165135 search_data = self .wallhaven_api .search ()
166136
@@ -174,7 +144,6 @@ def test_search_page(self):
174144 self .assertIn ("current_page" , search_data ["meta" ])
175145 self .assertEqual (2 , int (search_data ["meta" ]["current_page" ]))
176146
177- @request_limit_decorator
178147 def test_wallpaper (self ):
179148 search_data = self .wallhaven_api .search ()
180149
@@ -187,7 +156,6 @@ def test_wallpaper(self):
187156 wallpaper = self .wallhaven_api .wallpaper (search_data ["data" ][0 ]["id" ])
188157 self .assertIn ("data" , wallpaper )
189158
190- @request_limit_decorator
191159 def test_tag (self ):
192160 search_data = self .wallhaven_api .search ()
193161
@@ -209,7 +177,6 @@ def test_tag(self):
209177
210178 break
211179
212- @request_limit_decorator
213180 def test_search_query_uploader (self ):
214181 search_data = self .wallhaven_api .search ()
215182
@@ -230,7 +197,6 @@ def test_search_query_uploader(self):
230197
231198 self .assertGreater (len (search_data ["data" ]), 0 )
232199
233- @request_limit_decorator
234200 def test_search_query_id (self ):
235201 search_data = self .wallhaven_api .search ()
236202
@@ -252,7 +218,6 @@ def test_search_query_id(self):
252218 self .assertGreater (len (search_data ["data" ]), 0 )
253219 break
254220
255- @request_limit_decorator
256221 def test_search_query_like (self ):
257222 search_data = self .wallhaven_api .search ()
258223
@@ -264,7 +229,6 @@ def test_search_query_like(self):
264229 self .assertIn ("data" , search_data )
265230 self .assertIn ("meta" , search_data )
266231
267- @request_limit_decorator
268232 def test_search_query_type (self ):
269233 for image_type in Type :
270234 search_data = self .wallhaven_api .search (q = "type:{}" .format (image_type .value ))
@@ -280,13 +244,11 @@ def test_search_query_type(self):
280244 else :
281245 self .assertTrue (str (wallpaper ["file_type" ]).endswith (image_type .value ))
282246
283- @request_limit_decorator
284247 def test_settings (self ):
285248 result = self .wallhaven_api .settings ()
286249
287250 assert result is None if self .wallhaven_api .api_key is None else result is not None
288251
289- @request_limit_decorator
290252 def test_collections (self ):
291253 # Just a random user, who has a collection with wallpapers
292254 result = self .wallhaven_api .collections ("ThorRagnarok" )
@@ -297,7 +259,6 @@ def test_collections(self):
297259
298260 return result
299261
300- @request_limit_decorator
301262 def test_collection_wallpapers (self , page = None ):
302263 collections = self .test_collections ()
303264
@@ -308,11 +269,9 @@ def test_collection_wallpapers(self, page=None):
308269 assert "meta" in collections_wallpapers
309270 assert len (collections_wallpapers ["data" ])
310271
311- @request_limit_decorator
312272 def test_collection_wallpapers_page (self ):
313273 self .test_collection_wallpapers (2 )
314274
315- @request_limit_decorator
316275 def test_my_collections (self ):
317276 result = self .wallhaven_api .my_collections ()
318277
0 commit comments