Exemplo n.º 1
0
    def test_that_mapreduce_job_works(self):
        """Test that mapreduce job is working as expected."""
        with self.swap(feconf, 'ENABLE_STATE_ID_MAPPING', True):
            exploration = self.save_new_valid_exploration(
                self.EXP_ID, self.owner_id)

            exp_services.update_exploration(self.owner_id, self.EXP_ID, [
                exp_domain.ExplorationChange({
                    'cmd': exp_domain.CMD_ADD_STATE,
                    'state_name': 'new state',
                })
            ], 'Add state name')

            exp_services.update_exploration(self.owner_id, self.EXP_ID, [
                exp_domain.ExplorationChange({
                    'cmd': exp_domain.CMD_ADD_STATE,
                    'state_name': 'new state 2',
                }),
                exp_domain.ExplorationChange({
                    'cmd': exp_domain.CMD_DELETE_STATE,
                    'state_name': 'new state'
                })
            ], 'Modify states')

            exp_services.revert_exploration(self.owner_id, self.EXP_ID, 3, 1)

        job_id = exp_jobs_one_off.ExplorationStateIdMappingJob.create_new()
        exp_jobs_one_off.ExplorationStateIdMappingJob.enqueue(job_id)

        self.process_and_flush_pending_tasks()

        expected_mapping = {exploration.init_state_name: 0}
        mapping = exp_services.get_state_id_mapping(self.EXP_ID, 1)
        self.assertEqual(mapping.exploration_id, self.EXP_ID)
        self.assertEqual(mapping.exploration_version, 1)
        self.assertEqual(mapping.largest_state_id_used, 0)
        self.assertDictEqual(mapping.state_names_to_ids, expected_mapping)

        expected_mapping = {exploration.init_state_name: 0, 'new state': 1}
        mapping = exp_services.get_state_id_mapping(self.EXP_ID, 2)
        self.assertEqual(mapping.exploration_id, self.EXP_ID)
        self.assertEqual(mapping.exploration_version, 2)
        self.assertEqual(mapping.largest_state_id_used, 1)
        self.assertDictEqual(mapping.state_names_to_ids, expected_mapping)

        expected_mapping = {exploration.init_state_name: 0, 'new state 2': 2}
        mapping = exp_services.get_state_id_mapping(self.EXP_ID, 3)
        self.assertEqual(mapping.exploration_id, self.EXP_ID)
        self.assertEqual(mapping.exploration_version, 3)
        self.assertEqual(mapping.largest_state_id_used, 2)
        self.assertDictEqual(mapping.state_names_to_ids, expected_mapping)

        expected_mapping = {exploration.init_state_name: 0}
        mapping = exp_services.get_state_id_mapping(self.EXP_ID, 4)
        self.assertEqual(mapping.exploration_id, self.EXP_ID)
        self.assertEqual(mapping.exploration_version, 4)
        self.assertEqual(mapping.largest_state_id_used, 2)
        self.assertDictEqual(mapping.state_names_to_ids, expected_mapping)
Exemplo n.º 2
0
    def test_that_mapreduce_job_works_for_first_version_of_exploration(self):
        """Tests that mapreduce job works correctly when the only first
        exploration version exists.
        """
        with self.swap(feconf, 'ENABLE_STATE_ID_MAPPING', False):
            exploration = self.save_new_valid_exploration(
                self.EXP_ID, self.owner_id)

        job_id = exp_jobs_one_off.ExplorationStateIdMappingJob.create_new()
        exp_jobs_one_off.ExplorationStateIdMappingJob.enqueue(job_id)

        self.process_and_flush_pending_tasks()

        expected_mapping = {exploration.init_state_name: 0}
        mapping = exp_services.get_state_id_mapping(self.EXP_ID, 1)
        self.assertEqual(mapping.exploration_id, self.EXP_ID)
        self.assertEqual(mapping.exploration_version, 1)
        self.assertEqual(mapping.largest_state_id_used, 0)
        self.assertDictEqual(mapping.state_names_to_ids, expected_mapping)