def test_raises_commit_cmd_none_error(self) -> None: invalid_commit_cmd_model = ( subtopic_models.SubtopicPageCommitLogEntryModel( id='model_id123', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='test-type', user_id='', subtopic_page_id='123', post_commit_status='private', commit_cmds=[{ 'cmd': base_models.VersionedModel.CMD_DELETE_COMMIT }])) output = ( self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( subtopic_validation.ValidateSubtopicPageCommitLogEntryModel())) self.assert_pcoll_equal(output, [ base_validation_errors.CommitCmdsNoneError( invalid_commit_cmd_model) ])
def process(self, input_model): """Validates schema of commit commands in commit_cmds dict. Args: input_model: datastore_services.Model. Entity to validate. Yields: CommitCmdsNoneError. Error for invalid commit cmds id. CommitCmdsValidateError. Error for wrong commit cmds. """ change_domain_object = self._get_change_domain_class(input_model) if change_domain_object is None: # This is for cases where id of the entity is invalid # and no commit command domain object is found for the entity. # For example, if a CollectionCommitLogEntryModel does # not have id starting with collection/rights, there is # no commit command domain object defined for this model. yield base_validation_errors.CommitCmdsNoneError(input_model) return for commit_cmd_dict in input_model.commit_cmds: if not commit_cmd_dict: continue try: change_domain_object(commit_cmd_dict) except Exception as e: yield base_validation_errors.CommitCmdsValidateError( input_model, commit_cmd_dict, e)
def test_raises_commit_cmd_none_error(self): # type: () -> None invalid_commit_cmd_model = ( story_models.StoryCommitLogEntryModel( id='model_id123', created_on=self.YEAR_AGO, last_updated=self.NOW, story_id='story-id', user_id='user-id', commit_type='test-type', post_commit_status='private', commit_cmds=[{ 'cmd': base_models.VersionedModel.CMD_DELETE_COMMIT}]) ) output = ( self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( story_validation.ValidateStoryCommitLogEntryModel()) ) self.assert_pcoll_equal( # type: ignore[no-untyped-call] output, [ base_validation_errors.CommitCmdsNoneError( # type: ignore[no-untyped-call] invalid_commit_cmd_model) ])
def test_message(self): model = base_models.BaseCommitLogEntryModel(id='invalid', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='test', user_id='', post_commit_status='', commit_cmds=[{}]) error = base_validation_errors.CommitCmdsNoneError(model) self.assertEqual( error.message, 'CommitCmdsNoneError in BaseCommitLogEntryModel(id=\'invalid\'): ' 'No commit command domain object ' 'defined for entity with commands: [{}]')
def test_validate_none_commit(self): invalid_commit_cmd_model = base_models.BaseCommitLogEntryModel( id='invalid', created_on=self.YEAR_AGO, last_updated=self.NOW, commit_type='test', user_id='', post_commit_status='', commit_cmds=[{}]) output = (self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo(MockValidateCommitCmdsSchemaChangeDomain())) self.assert_pcoll_equal(output, [ base_validation_errors.CommitCmdsNoneError( invalid_commit_cmd_model) ])
def test_raises_commit_cmd_none_error(self) -> None: invalid_commit_cmd_model = skill_models.SkillCommitLogEntryModel( id='model_id123', created_on=self.YEAR_AGO, last_updated=self.NOW, skill_id='skill-id', user_id='user-id', commit_type='test-type', post_commit_status='private', commit_cmds=[{ 'cmd': 'create_new' }]) output = (self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( skill_validation.ValidateSkillCommitLogEntryModel())) self.assert_pcoll_equal(output, [ base_validation_errors.CommitCmdsNoneError( invalid_commit_cmd_model) ])