def test_question_200_response(self):
     with app.test_client() as client:
         with client.session_transaction() as sess:
             setup_user(sess)
     # Test the request in this context block.
     result = client.get("/questions/1")
     self.assertEqual(result.status_code, 200)
 def test_questions_qunum_added_to_visitedcheck(self):
     with app.test_request_context():
         with app.test_client() as client:
             with client.session_transaction() as sess:
                 setup_user(sess)
             response = client.get("/questions/1")
             self.assertEqual(flask.session['visited_check'], [1])
 def test_questions_new_game_200_response(self):
     with app.test_client() as client:
         with client.session_transaction() as sess:
             sess["username"] = "******"
         # Test the request in this context block.
         result = client.get("/questions/new-game")
         self.assertEqual(result.status_code, 200)
 def test_questions_redirect_not_completed_quix(self):
     with app.test_request_context():
         with app.test_client() as client:
             with client.session_transaction() as sess:
                 setup_user(sess)
         result = client.get("/questions/end")
         self.assertEqual(result.status_code, 302)
         self.assertEqual(result.location, url_for('index', _external=True))
 def test_question_end_200_response(self):
     with app.test_client() as client:
         with client.session_transaction() as sess:
             setup_user(sess)
             sess["username"] = "******"
             sess["current_qu_num"] = 6
     # Test the request in this context block.
     result = client.get("/questions/end")
     self.assertEqual(result.status_code, 200)
    def test_questions_redirect_qunum_not_in_session(self):
        with app.test_request_context():
            with app.test_client() as client:
                with client.session_transaction() as sess:
                    setup_user(sess)
                    sess.pop("current_qu_num")
            result = client.get("/questions/1")
            self.assertEqual(result.status_code, 302)
            self.assertEqual(result.location, url_for('index', _external=True))

        with app.test_request_context():
            with app.test_client() as client:
                with client.session_transaction() as sess:
                    setup_user(sess)
                    sess.pop("score")
            result = client.get("/questions/1")
            self.assertEqual(result.status_code, 302)
            self.assertEqual(result.location, url_for('index', _external=True))
    def test_question_timer(self):
        with app.test_client() as client:
            with client.session_transaction() as sess:
                # Modify the session in this context block.
                setup_user(sess)

            client.get("/questions/1")
            # Saves time page loads for testing
            testing_start_time = datetime.now()
            # Waits 1-4 seconds
            time.sleep(random.randint(1, 4))
            # Submits POST request (simulate answering question)
            client.post("/questions/1")
            # Saves time POST request is made
            test_end_time = datetime.now()
            # Equates time between start and end
            testing_total_time = (test_end_time -
                                  testing_start_time).total_seconds()
            """
                Checks simulated testing total time equals total time saved to session in app
                Check is within 1 second to account for any differences when datetime.now() is run
                """
            self.assertAlmostEqual(testing_total_time,
                                   flask.session["total_time"], None, None, 1)
 def test_index_200_response(self):
     with app.test_client() as client:
         # Test the request in this context block.
         result = client.get("/")
         self.assertEqual(result.status_code, 200)
 def setUp(self):
     # creates a test client
     self.app = app.test_client()
     # propagate the exceptions to the test client
     self.app.testing = True