コード例 #1
0
    def test_mark_exploration_as_completed(self):
        self.assertEqual(self._get_all_completed_exp_ids(self.user_id), [])

        # Add an exploration to the completed list of a learner.
        learner_progress_services.mark_exploration_as_completed(
            self.user_id, self.EXP_ID_0)
        self.assertEqual(self._get_all_completed_exp_ids(self.user_id),
                         [self.EXP_ID_0])

        # Completing an exploration again has no effect.
        learner_progress_services.mark_exploration_as_completed(
            self.user_id, self.EXP_ID_0)
        self.assertEqual(self._get_all_completed_exp_ids(self.user_id),
                         [self.EXP_ID_0])

        state_name = 'state_name'
        version = 1

        # Add an exploration to the in progress list of the learner.
        learner_progress_services.mark_exploration_as_incomplete(
            self.user_id, self.EXP_ID_1, state_name, version)
        self.assertEqual(self._get_all_incomplete_exp_ids(self.user_id),
                         [self.EXP_ID_1])
        # Add an exploration to the learner playlist of the learner.
        learner_playlist_services.mark_exploration_to_be_played_later(
            self.user_id, self.EXP_ID_3)
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.user_id), [self.EXP_ID_3])

        # Test that on adding an incomplete exploration to the completed list
        # it gets removed from the incomplete list.
        learner_progress_services.mark_exploration_as_completed(
            self.user_id, self.EXP_ID_1)
        self.assertEqual(self._get_all_completed_exp_ids(self.user_id),
                         [self.EXP_ID_0, self.EXP_ID_1])
        self.assertEqual(self._get_all_incomplete_exp_ids(self.user_id), [])

        # Test that on adding an exploration to the completed list, it gets
        # removed from the learner playlist.
        learner_progress_services.mark_exploration_as_completed(
            self.user_id, self.EXP_ID_3)
        self.assertEqual(self._get_all_completed_exp_ids(self.user_id),
                         [self.EXP_ID_0, self.EXP_ID_1, self.EXP_ID_3])
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.user_id), [])

        # Test that an exploration created by the user is not added to the
        # completed list.
        learner_progress_services.mark_exploration_as_completed(
            self.user_id, self.EXP_ID_2)
        self.assertEqual(self._get_all_completed_exp_ids(self.user_id),
                         [self.EXP_ID_0, self.EXP_ID_1, self.EXP_ID_3])
コード例 #2
0
    def test_get_all_exp_ids_in_learner_playlist(self):
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.user_id), [])

        # Add an exploration to the learner playlist.
        learner_playlist_services.mark_exploration_to_be_played_later(
            self.user_id, self.EXP_ID_0)
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.user_id), [self.EXP_ID_0])

        # Add another exploration.
        learner_playlist_services.mark_exploration_to_be_played_later(
            self.user_id, self.EXP_ID_1)
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.user_id), [self.EXP_ID_0, self.EXP_ID_1])
コード例 #3
0
    def test_remove_exploration_from_learner_playlist(self):
        self.login(self.VIEWER_EMAIL)

        # Add explorations to the learner playlist.
        learner_progress_services.add_exp_to_learner_playlist(
            self.viewer_id, self.EXP_ID_1)
        learner_progress_services.add_exp_to_learner_playlist(
            self.viewer_id, self.EXP_ID_2)
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.viewer_id), [self.EXP_ID_1, self.EXP_ID_2])

        # Remove an exploration.
        self.delete_json(
            python_utils.STR(
                '%s/%s/%s' %
                (feconf.LEARNER_PLAYLIST_DATA_URL,
                 constants.ACTIVITY_TYPE_EXPLORATION, self.EXP_ID_1)))
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.viewer_id), [self.EXP_ID_2])

        # Removing the same exploration again has no effect.
        self.delete_json(
            python_utils.STR(
                '%s/%s/%s' %
                (feconf.LEARNER_PLAYLIST_DATA_URL,
                 constants.ACTIVITY_TYPE_EXPLORATION, self.EXP_ID_1)))
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.viewer_id), [self.EXP_ID_2])

        # Remove the second exploration.
        self.delete_json(
            python_utils.STR(
                '%s/%s/%s' %
                (feconf.LEARNER_PLAYLIST_DATA_URL,
                 constants.ACTIVITY_TYPE_EXPLORATION, self.EXP_ID_2)))
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.viewer_id), [])

        self.logout()
コード例 #4
0
    def test_add_exploration_to_learner_playlist(self):
        self.login(self.VIEWER_EMAIL)
        response = self.testapp.get(feconf.LEARNER_DASHBOARD_URL)
        csrf_token = self.get_csrf_token_from_response(response)

        # Add one exploration to the playlist.
        self.post_json(
            '%s/%s/%s' % (feconf.LEARNER_PLAYLIST_DATA_URL,
                          constants.ACTIVITY_TYPE_EXPLORATION, self.EXP_ID_1),
            {}, csrf_token)
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.viewer_id), [self.EXP_ID_1])

        # Add another exploration.
        self.post_json(
            '%s/%s/%s' % (feconf.LEARNER_PLAYLIST_DATA_URL,
                          constants.ACTIVITY_TYPE_EXPLORATION, self.EXP_ID_2),
            {}, csrf_token)
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.viewer_id), [self.EXP_ID_1, self.EXP_ID_2])

        # User rearranges the explorations. 'exp title 2' is shifted to the
        # first position.
        payload = {'index': 0}
        self.post_json(
            '%s/%s/%s' % (feconf.LEARNER_PLAYLIST_DATA_URL,
                          constants.ACTIVITY_TYPE_EXPLORATION, self.EXP_ID_2),
            payload, csrf_token)
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.viewer_id), [self.EXP_ID_2, self.EXP_ID_1])

        # If an exploration belongs to the incomplete list or completed list, it
        # should not be added. Here we test for the completed case.
        learner_progress_services.mark_exploration_as_completed(
            self.viewer_id, self.EXP_ID_3)
        response = self.post_json(
            '%s/%s/%s' % (feconf.LEARNER_PLAYLIST_DATA_URL,
                          constants.ACTIVITY_TYPE_EXPLORATION, self.EXP_ID_3),
            {}, csrf_token)
        self.assertEqual(response['belongs_to_completed_or_incomplete_list'],
                         True)
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.viewer_id), [self.EXP_ID_2, self.EXP_ID_1])

        # If an exploration belongs to one of the subscribed explorations,
        # it should not be added to the learner playlist.
        response = self.post_json(
            '%s/%s/%s' % (feconf.LEARNER_PLAYLIST_DATA_URL,
                          constants.ACTIVITY_TYPE_EXPLORATION, self.EXP_ID_4),
            {}, csrf_token)
        self.assertEqual(response['belongs_to_subscribed_activities'], True)
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.viewer_id), [self.EXP_ID_2, self.EXP_ID_1])

        # Now we begin testing of not exceeding the limit of activities in the
        # learner playlist.
        # Add feconf.MAX_LEARNER_PLAYLIST_ACTIVITY_COUNT - 2 activities to reach
        # the maximum limit.
        for exp_id in range(5, feconf.MAX_LEARNER_PLAYLIST_ACTIVITY_COUNT + 3):
            self.post_json(
                '%s/%s/%s' %
                (feconf.LEARNER_PLAYLIST_DATA_URL,
                 constants.ACTIVITY_TYPE_EXPLORATION, 'exp_id_%s' % exp_id),
                {}, csrf_token)

        # Now if we try and add an activity we should get a message saying we
        # are exceeding the limit.
        response = self.post_json(
            '%s/%s/%s' % (feconf.LEARNER_PLAYLIST_DATA_URL,
                          constants.ACTIVITY_TYPE_EXPLORATION, 'exp_id_%s' %
                          str(feconf.MAX_LEARNER_PLAYLIST_ACTIVITY_COUNT + 3)),
            {}, csrf_token)
        self.assertEqual(response['playlist_limit_exceeded'], True)

        self.logout()
コード例 #5
0
    def test_mark_exploration_as_incomplete(self):
        self.assertEqual(self._get_all_incomplete_exp_ids(self.user_id), [])

        state_name = u'state name'
        version = 1

        exp_details = {
            'timestamp': datetime.datetime.utcnow(),
            'state_name': state_name,
            'version': version
        }

        # Add an exploration to the incomplete list of a learner.
        learner_progress_services.mark_exploration_as_incomplete(
            self.user_id, self.EXP_ID_0, state_name, version)
        self.assertEqual(self._get_all_incomplete_exp_ids(self.user_id),
                         [self.EXP_ID_0])
        self._check_if_exp_details_match(
            self._get_incomplete_exp_details(self.user_id, self.EXP_ID_0),
            exp_details)

        state_name = u'new_state_name'
        version = 2

        modified_exp_details = {
            'timestamp': datetime.datetime.utcnow(),
            'state_name': state_name,
            'version': version
        }

        # On adding an exploration again, its details are updated to the latest
        # version.
        learner_progress_services.mark_exploration_as_incomplete(
            self.user_id, self.EXP_ID_0, state_name, version)
        self.assertEqual(self._get_all_incomplete_exp_ids(self.user_id),
                         [self.EXP_ID_0])
        self._check_if_exp_details_match(
            self._get_incomplete_exp_details(self.user_id, self.EXP_ID_0),
            modified_exp_details)

        # If an exploration has already been completed, it is not added.
        learner_progress_services.mark_exploration_as_completed(
            self.user_id, self.EXP_ID_1)
        learner_progress_services.mark_exploration_as_incomplete(
            self.user_id, self.EXP_ID_1, state_name, version)
        self.assertEqual(self._get_all_incomplete_exp_ids(self.user_id),
                         [self.EXP_ID_0])

        # Add an exploration to the learner playlist.
        learner_playlist_services.mark_exploration_to_be_played_later(
            self.user_id, self.EXP_ID_3)
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.user_id), [self.EXP_ID_3])

        # Test that on adding an exploration to the incomplete list, it gets
        # removed from the learner playlist.
        learner_progress_services.mark_exploration_as_incomplete(
            self.user_id, self.EXP_ID_3, state_name, version)
        self.assertEqual(self._get_all_incomplete_exp_ids(self.user_id),
                         [self.EXP_ID_0, self.EXP_ID_3])
        self.assertEqual(
            learner_playlist_services.get_all_exp_ids_in_learner_playlist(
                self.user_id), [])

        # Test that an exploration created by the user is not added to the
        # incomplete list.
        learner_progress_services.mark_exploration_as_incomplete(
            self.user_id, self.EXP_ID_2, state_name, version)
        self.assertEqual(self._get_all_incomplete_exp_ids(self.user_id),
                         [self.EXP_ID_0, self.EXP_ID_3])