def test_validate_exp_model_object_with_invalid_cmd(self) -> None: invalid_commit_cmd_model = exp_models.ExplorationSnapshotMetadataModel( id='model_id-1', created_on=self.YEAR_AGO, last_updated=self.NOW, committer_id='committer_id', commit_type='create', commit_cmds_user_ids=[ 'commit_cmds_user_1_id', 'commit_cmds_user_2_id'], content_user_ids=['content_user_1_id', 'content_user_2_id'], commit_cmds=[{'cmd': 'invalid'}]) output = ( self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( exp_validation.ValidateExplorationSnapshotMetadataModel()) ) self.assert_pcoll_equal(output, [ base_validation_errors.CommitCmdsValidateError( invalid_commit_cmd_model, {'cmd': 'invalid'}, 'Command invalid is not allowed') ])
def test_validate_exp_model_object_with_invalid_exploration_property(self): invalid_commit_cmd_model = exp_models.ExplorationSnapshotMetadataModel( id='model_id-1', created_on=self.YEAR_AGO, last_updated=self.NOW, committer_id='committer_id', commit_type='create', commit_cmds_user_ids=[ 'commit_cmds_user_1_id', 'commit_cmds_user_2_id' ], content_user_ids=['content_user_1_id', 'content_user_2_id'], commit_cmds=[{ 'cmd': 'edit_exploration_property', 'property_name': 'invalid', 'old_value': 'old_value', 'new_value': 'new_value', }]) output = ( self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( exp_validation.ValidateExplorationSnapshotMetadataModel())) self.assert_pcoll_equal(output, [ base_validation_errors.CommitCmdsValidateError( invalid_commit_cmd_model, { 'cmd': 'edit_exploration_property', 'property_name': 'invalid', 'old_value': 'old_value', 'new_value': 'new_value', }, 'Value for property_name in cmd edit_exploration_property: ' 'invalid is not allowed') ])
def test_validate_exp_model_object_with_extra_attribute_in_cmd(self): invalid_commit_cmd_model = exp_models.ExplorationSnapshotMetadataModel( id='model_id-1', created_on=self.YEAR_AGO, last_updated=self.NOW, committer_id='committer_id', commit_type='create', commit_cmds_user_ids=[ 'commit_cmds_user_1_id', 'commit_cmds_user_2_id' ], content_user_ids=['content_user_1_id', 'content_user_2_id'], commit_cmds=[{ 'cmd': 'rename_state', 'old_state_name': 'old_state_name', 'new_state_name': 'new_state_name', 'invalid': 'invalid' }]) output = ( self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( exp_validation.ValidateExplorationSnapshotMetadataModel())) self.assert_pcoll_equal(output, [ base_validation_errors.CommitCmdsValidateError( invalid_commit_cmd_model, { 'cmd': 'rename_state', 'old_state_name': 'old_state_name', 'new_state_name': 'new_state_name', 'invalid': 'invalid' }, 'The following extra attributes are present: invalid') ])
def test_validate_change_domain_implemented(self) -> None: invalid_commit_cmd_model = exp_models.ExplorationSnapshotMetadataModel( id='model_id-1', created_on=self.YEAR_AGO, last_updated=self.NOW, committer_id='committer_id', commit_type='create', commit_cmds_user_ids=[ 'commit_cmds_user_1_id', 'commit_cmds_user_2_id'], content_user_ids=['content_user_1_id', 'content_user_2_id'], commit_cmds=[{ 'cmd': base_models.VersionedModel.CMD_DELETE_COMMIT}]) output = ( self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( exp_validation.ValidateExplorationSnapshotMetadataModel()) ) self.assert_pcoll_equal(output, [])
def test_validate_exp_model_object_with_missing_attribute_in_cmd( self ) -> None: invalid_commit_cmd_model = exp_models.ExplorationSnapshotMetadataModel( id='model_id-1', created_on=self.YEAR_AGO, last_updated=self.NOW, committer_id='committer_id', commit_type='create', commit_cmds_user_ids=[ 'commit_cmds_user_1_id', 'commit_cmds_user_2_id'], content_user_ids=['content_user_1_id', 'content_user_2_id'], commit_cmds=[{ 'cmd': 'edit_state_property', 'property_name': 'content', 'old_value': 'old_value' }]) output = ( self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( exp_validation.ValidateExplorationSnapshotMetadataModel()) ) self.assert_pcoll_equal(output, [ base_validation_errors.CommitCmdsValidateError( invalid_commit_cmd_model, { 'cmd': 'edit_state_property', 'property_name': 'content', 'old_value': 'old_value' }, 'The following required attributes are missing: ' 'new_value, state_name') ])