55import requests
66import responses
77
8+ from roboflow .adapters import rfapi
89from roboflow .core .version import Version , unwrap_version_id
910from tests .helpers import get_version
1011
1112
13+ def mock_generating_url_response (generating_url ):
14+ """Helper function to mock the generating URL response that's repeated across tests."""
15+ responses .add (
16+ responses .GET ,
17+ generating_url ,
18+ json = {"version" : {"generating" : False , "progress" : 1.0 , "images" : 10 }},
19+ )
20+
21+
1222class TestDownload (unittest .TestCase ):
1323 def setUp (self ):
1424 super ().setUp ()
@@ -24,24 +34,15 @@ def setUp(self):
2434 @responses .activate
2535 def test_download_raises_exception_on_bad_request (self ):
2636 responses .add (responses .GET , self .api_url , status = 404 , json = {"error" : "Broken" })
27- responses .add (
28- responses .GET ,
29- self .generating_url ,
30- json = {"version" : {"generating" : False , "progress" : 1.0 }},
31- )
32-
33- with self .assertRaises (RuntimeError ):
37+ mock_generating_url_response (self .generating_url )
38+ with self .assertRaises (rfapi .RoboflowError ):
3439 self .version .download ("coco" )
3540
3641 @responses .activate
3742 def test_download_raises_exception_on_api_failure (self ):
3843 responses .add (responses .GET , self .api_url , status = 500 )
39- responses .add (
40- responses .GET ,
41- self .generating_url ,
42- json = {"version" : {"generating" : False , "progress" : 1.0 }},
43- )
44- with self .assertRaises (requests .exceptions .HTTPError ):
44+ mock_generating_url_response (self .generating_url )
45+ with self .assertRaises (rfapi .RoboflowError ):
4546 self .version .download ("coco" )
4647
4748 @responses .activate
@@ -50,11 +51,7 @@ def test_download_raises_exception_on_api_failure(self):
5051 @patch .object (Version , "_Version__reformat_yaml" )
5152 def test_download_returns_dataset (self , * _ ):
5253 responses .add (responses .GET , self .api_url , json = {"export" : {"link" : None }})
53- responses .add (
54- responses .GET ,
55- self .generating_url ,
56- json = {"version" : {"generating" : False , "progress" : 1.0 }},
57- )
54+ mock_generating_url_response (self .generating_url )
5855 dataset = self .version .download ("coco" , location = "/my-spot" )
5956 self .assertEqual (dataset .name , self .version .name )
6057 self .assertEqual (dataset .version , self .version .version )
@@ -76,12 +73,13 @@ def setUp(self):
7673
7774 @responses .activate
7875 def test_export_returns_true_on_api_success (self ):
79- responses .add (responses .GET , self .api_url , status = 200 )
8076 responses .add (
8177 responses .GET ,
82- self .generating_url ,
83- json = {"version" : {"generating" : False , "progress" : 1.0 }},
78+ self .api_url ,
79+ status = 200 ,
80+ json = {"export" : {"link" : "https://api.roboflow.com/test-workspace/test-project/4/test-format" }},
8481 )
82+ mock_generating_url_response (self .generating_url )
8583 export = self .version .export ("test-format" )
8684 request = responses .calls [0 ].request
8785
@@ -92,23 +90,15 @@ def test_export_returns_true_on_api_success(self):
9290 @responses .activate
9391 def test_export_raises_error_on_bad_request (self ):
9492 responses .add (responses .GET , self .api_url , status = 400 , json = {"error" : "BROKEN!!" })
95- responses .add (
96- responses .GET ,
97- self .generating_url ,
98- json = {"version" : {"generating" : False , "progress" : 1.0 }},
99- )
100- with self .assertRaises (RuntimeError ):
93+ mock_generating_url_response (self .generating_url )
94+ with self .assertRaises (rfapi .RoboflowError ):
10195 self .version .export ("test-format" )
10296
10397 @responses .activate
10498 def test_export_raises_error_on_api_failure (self ):
10599 responses .add (responses .GET , self .api_url , status = 500 )
106- responses .add (
107- responses .GET ,
108- self .generating_url ,
109- json = {"version" : {"generating" : False , "progress" : 1.0 }},
110- )
111- with self .assertRaises (requests .exceptions .HTTPError ):
100+ mock_generating_url_response (self .generating_url )
101+ with self .assertRaises (rfapi .RoboflowError ):
112102 self .version .export ("test-format" )
113103
114104
@@ -128,21 +118,13 @@ def setUp(self, *_):
128118
129119 @responses .activate
130120 def test_get_download_location_with_env_variable (self , * _ ):
131- responses .add (
132- responses .GET ,
133- self .generating_url ,
134- json = {"version" : {"generating" : False , "progress" : 1.0 }},
135- )
121+ mock_generating_url_response (self .generating_url )
136122 with patch .dict (os .environ , {"DATASET_DIRECTORY" : "/my/exports" }, clear = True ):
137123 self .assertEqual (self .get_download_location (), "/my/exports/Test-Dataset-3" )
138124
139125 @responses .activate
140126 def test_get_download_location_without_env_variable (self , * _ ):
141- responses .add (
142- responses .GET ,
143- self .generating_url ,
144- json = {"version" : {"generating" : False , "progress" : 1.0 }},
145- )
127+ mock_generating_url_response (self .generating_url )
146128 self .assertEqual (self .get_download_location (), "Test-Dataset-3" )
147129
148130
@@ -161,11 +143,7 @@ def setUp(self):
161143
162144 @responses .activate
163145 def test_get_download_url (self ):
164- responses .add (
165- responses .GET ,
166- self .generating_url ,
167- json = {"version" : {"generating" : False , "progress" : 1.0 }},
168- )
146+ mock_generating_url_response (self .generating_url )
169147 url = self .get_download_url ("yolo1337" )
170148 self .assertEqual (url , "https://api.roboflow.com/test-workspace/test-project/3/yolo1337" )
171149
0 commit comments