Example #1
0
 def _test_solve_puzzles(self):
     """
     Tests that puzzles can be submitted with the right solution
     """
     user_obj = new_user("c")
     d_user_obj = new_user("d")
     p = new_puzzle(json.dumps(self.sample_puzzle_solution), json.dumps(self.sample_puzzle), d_user_obj.id)
     data = {"user_id": user_obj.id,
             "puzzle_id": p.id,
             "complete_puzzle": json.dumps(self.sample_puzzle_solution)}
     resp = self.client.post("/sudoku/puzzle/", data=data)
     resp_dict = json.loads(resp.data)
     print resp_dict
     assert resp_dict["status"] == "ok"
Example #2
0
 def _test_solve_wrong_puzzle(self):
     """
     Tests that bad solutions cannot be submitted
     """
     user_obj = new_user("c")
     d_user_obj = new_user("d")
     solution_copied = list(self.sample_puzzle_solution)
     solution_copied[0] = 3
     p = new_puzzle(json.dumps(self.sample_puzzle_solution), json.dumps(self.sample_puzzle), d_user_obj.id)
     data = {"user_id": user_obj.id,
             "puzzle_id": p.id,
             "complete_puzzle": json.dumps(solution_copied)}
     resp = self.client.post("/sudoku/puzzle/", data=data)
     resp_dict = json.loads(resp.data)
     assert resp_dict["status"] == "error"
Example #3
0
 def test_fail_min_puzzle_requirement(self):
     """
     Tests that a user who hasn't met the min requirement cannot parse the API
     """
     user_h_obj = new_user("h")
     data = {"user_id": user_h_obj.id}
     resp = self.client.get("/sudoku/puzzle/?" + urllib.urlencode(data))
     resp_dict = json.loads(resp.data)
     assert resp_dict["status"] == "error"
Example #4
0
 def _test_upload_puzzle(self):
     """
     Tests that a proper puzzle with its corresponding solution can be properly uploaded
     """
     user_obj = new_user(random_string())
     data = {"user_id": user_obj.id,
             "incomplete_puzzle": json.dumps(self.sample_puzzle),
             "complete_puzzle": json.dumps(self.sample_puzzle_solution)}
     resp = self.client.put("/sudoku/puzzle/", data=data)
     resp_dict = json.loads(resp.data)
     assert resp_dict["status"] == "ok"
Example #5
0
 def _test_user_ranking(self):
     """
     Tests that ranking between users work.
     We test this by having a user that solves more puzzles than another,
     and ensures that this is true in the rankings
     """
     user_g_obj = new_user("g")
     user_e_obj = new_user("e")
     user_f_obj = new_user("f")
     completed_puzzle_json = json.dumps(self.sample_puzzle_solution)
     incompleted_puzzle_json = json.dumps(self.sample_puzzle)
     p1 = new_puzzle(completed_puzzle_json, incompleted_puzzle_json, user_g_obj.id)
     p2 = new_puzzle(completed_puzzle_json, incompleted_puzzle_json, user_g_obj.id)
     p3 = new_puzzle(completed_puzzle_json, incompleted_puzzle_json, user_g_obj.id)
     new_solution_record(user_e_obj.id, p1.id)
     new_solution_record(user_f_obj.id, p2.id)
     new_solution_record(user_f_obj.id, p3.id)
     resp = self.client.get("/user/ranks/")
     resp_dict = json.loads(resp.data)
     ranks_lis = resp_dict["rankings"]
     ranks = [(x['username'], x['rank']) for x in ranks_lis]
     assert (u"f", 0) in ranks
     assert (u"e", 1) in ranks
Example #6
0
 def _test_get_puzzles(self):
     """
     Tests that fetch puzzles work, and that they dont belong to us.
     and that if we fetched 2, they should return 2
     """
     a_user_obj = new_user("a")
     b_user_obj = new_user("b")
     p1 = new_puzzle(json.dumps(self.sample_puzzle_solution), json.dumps(self.sample_puzzle), a_user_obj.id)
     p2 = new_puzzle(json.dumps(self.sample_puzzle_solution), json.dumps(self.sample_puzzle), a_user_obj.id)
     p3 = new_puzzle(json.dumps(self.sample_puzzle_solution), json.dumps(self.sample_puzzle), b_user_obj.id)
     p4 = new_puzzle(json.dumps(self.sample_puzzle_solution), json.dumps(self.sample_puzzle), b_user_obj.id)
     p5 = new_puzzle(json.dumps(self.sample_puzzle_solution), json.dumps(self.sample_puzzle), b_user_obj.id)
     data = {"user_id": a_user_obj.id}
     resp = self.client.get("/sudoku/puzzle/?" + urllib.urlencode(data))
     resp_dict = json.loads(resp.data)
     puzzle_ids = [p['id'] for p in resp_dict['puzzles']]
     assert resp_dict["status"] == "ok"
     assert len(resp_dict["puzzles"]) == 2
     db.session.add(p3)
     db.session.add(p4)
     db.session.add(p5)
     assert p3.id in puzzle_ids
     assert p4.id in puzzle_ids
     assert p5.id not in puzzle_ids