@@ -14,6 +14,7 @@ def client_challenge_today():
1414 app .config ["TESTING" ] = True
1515 app .config ["SQLALCHEMY_DATABASE_URI" ] = "sqlite:///:memory:"
1616 app .config ["CODE_CHALLENGE_START" ] = time .time ()
17+ app .config ["ALLOW_RESET" ] = True
1718
1819 with app .test_client () as client :
1920 with app .app_context ():
@@ -142,6 +143,12 @@ def test_get_rank1(client_challenge_past):
142143 assert retval .get_json ()["question" ] == "What is 2+2?"
143144 assert retval .get_json ()["rank" ] == 1
144145
146+ retval = client_challenge_past .get ("/api/v1/users/hello" )
147+ data = retval .get_json ()
148+
149+ assert retval .status_code == 200
150+ assert data ["rank" ] == 0
151+
145152
146153def test_answer_rank1_correctly (client_challenge_past ):
147154 retval = client_challenge_past .post ("/api/v1/questions/answer" , json = dict (
@@ -151,6 +158,22 @@ def test_answer_rank1_correctly(client_challenge_past):
151158 assert retval .status_code == 200
152159 assert retval .get_json ()["correct" ] is True
153160
161+ # check history
162+ retval = client_challenge_past .get ("/api/v1/questions/history" )
163+ history = retval .get_json ()
164+
165+ assert len (history ) == 1
166+ assert "question" in history [0 ]
167+ assert history [0 ]["answered" ] == "4"
168+ assert history [0 ]["correct" ]
169+
170+ # check rank
171+ retval = client_challenge_past .get ("/api/v1/users/hello" )
172+ data = retval .get_json ()
173+
174+ assert retval .status_code == 200
175+ assert data ["rank" ] == 1
176+
154177
155178def test_get_rank2 (client_challenge_past ):
156179 retval = client_challenge_past .get ("/api/v1/questions/next" )
@@ -168,6 +191,12 @@ def test_answer_rank2_incorrectly(client_challenge_past):
168191 assert retval .status_code == 200
169192 assert retval .get_json ()["correct" ] is False
170193
194+ retval = client_challenge_past .get ("/api/v1/users/hello" )
195+ data = retval .get_json ()
196+
197+ assert retval .status_code == 200
198+ assert data ["rank" ] == 1
199+
171200
172201def test_answer_rank2_correctly (client_challenge_past ):
173202 retval = client_challenge_past .post ("/api/v1/questions/answer" , json = dict (
@@ -177,6 +206,12 @@ def test_answer_rank2_correctly(client_challenge_past):
177206 assert retval .status_code == 200
178207 assert retval .get_json ()["correct" ] is True
179208
209+ retval = client_challenge_past .get ("/api/v1/users/hello" )
210+ data = retval .get_json ()
211+
212+ assert retval .status_code == 200
213+ assert data ["rank" ] == 2
214+
180215
181216def test_get_rank3_404 (client_challenge_past ):
182217 retval = client_challenge_past .get ("/api/v1/questions/next" )
@@ -208,3 +243,16 @@ def test_answer_exceed_attempts(client_challenge_past):
208243 else :
209244 assert retval .status_code == 404
210245 assert "X-RateLimit-Remaining" in retval .headers
246+
247+
248+ def test_reset_all (client_challenge_past ):
249+
250+ retval = client_challenge_past .delete ("/api/v1/questions/reset" )
251+
252+ assert retval .status_code == 200
253+
254+ retval = client_challenge_past .get ("/api/v1/users/hello" )
255+ data = retval .get_json ()
256+
257+ assert retval .status_code == 200
258+ assert data ["rank" ] == 0
0 commit comments