def test_exp_complete_event_in_collection(self): """Test handler for completion of explorations in the context of collections. """ self.login(self.USER_EMAIL) response = self.testapp.get(feconf.LIBRARY_INDEX_URL) csrf_token = self.get_csrf_token_from_response(response) payload = { 'client_time_spent_in_secs': 0, 'collection_id': self.COL_ID_1, 'params': {}, 'session_id': '1PZTCw9JY8y-8lqBeuoJS2ILZMxa5m8N', 'state_name': 'final', 'version': 1 } # If the exploration is completed in the context of a collection, # then in addition to the exploration being added to the completed # list, the collection is also added to the incomplete/complete list # dependent on whether there are more explorations left to complete. # Here we test the case when the collection is partially completed. self.post_json( '/explorehandler/exploration_complete_event/%s' % self.EXP_ID_1_0, payload, csrf_token) self.assertEqual( learner_progress_services.get_all_incomplete_collection_ids( self.user_id), [self.COL_ID_1]) self.assertEqual( learner_progress_services.get_all_completed_exp_ids(self.user_id), [self.EXP_ID_1_0]) # Now we test the case when the collection is completed. self.post_json( '/explorehandler/exploration_complete_event/%s' % self.EXP_ID_1_1, payload, csrf_token) self.assertEqual( learner_progress_services.get_all_incomplete_collection_ids( self.user_id), []) self.assertEqual( learner_progress_services.get_all_completed_collection_ids( self.user_id), [self.COL_ID_1]) self.assertEqual( learner_progress_services.get_all_completed_exp_ids(self.user_id), [self.EXP_ID_1_0, self.EXP_ID_1_1])
def test_get_all_completed_exp_ids(self): self.assertEqual( learner_progress_services.get_all_completed_exp_ids(self.user_id), []) # Add an exploration to the completed list. learner_progress_services.mark_exploration_as_completed( self.user_id, self.EXP_ID_0) self.assertEqual( learner_progress_services.get_all_completed_exp_ids(self.user_id), [self.EXP_ID_0]) # Add another exploration. learner_progress_services.mark_exploration_as_completed( self.user_id, self.EXP_ID_1) self.assertEqual( learner_progress_services.get_all_completed_exp_ids(self.user_id), [self.EXP_ID_0, self.EXP_ID_1])
def test_independent_exp_complete_event_handler(self): """Test handler for completion of explorations not in the context of collections. """ self.login(self.USER_EMAIL) response = self.testapp.get(feconf.LIBRARY_INDEX_URL) csrf_token = self.get_csrf_token_from_response(response) payload = { 'client_time_spent_in_secs': 0, 'params': {}, 'session_id': '1PZTCw9JY8y-8lqBeuoJS2ILZMxa5m8N', 'state_name': 'final', 'version': 1 } # When an exploration is completed but is not in the context of a # collection, it is just added to the completed explorations list. self.post_json( '/explorehandler/exploration_complete_event/%s' % self.EXP_ID_0, payload, csrf_token) self.assertEqual( learner_progress_services.get_all_completed_exp_ids(self.user_id), [self.EXP_ID_0]) self.assertEqual( learner_progress_services.get_all_incomplete_collection_ids( self.user_id), []) # Test another exploration. self.post_json( '/explorehandler/exploration_complete_event/%s' % self.EXP_ID_1_0, payload, csrf_token) self.assertEqual( learner_progress_services.get_all_completed_exp_ids(self.user_id), [self.EXP_ID_0, self.EXP_ID_1_0]) self.assertEqual( learner_progress_services.get_all_incomplete_collection_ids( self.user_id), [])