def test_skill_change_object_with_invalid_skill_contents_property( self) -> None: commit_dict = { 'cmd': 'update_skill_contents_property', 'property_name': 'invalid', 'old_value': 'old_value', 'new_value': 'new_value', } invalid_commit_cmd_model = skill_models.SkillSnapshotMetadataModel( id='123', 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=[commit_dict]) output = (self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( skill_validation.ValidateSkillSnapshotMetadataModel())) self.assert_pcoll_equal(output, [ base_validation_errors.CommitCmdsValidateError( invalid_commit_cmd_model, commit_dict, 'Value for property_name in cmd ' 'update_skill_contents_property: invalid is not allowed') ])
def test_skill_change_object_with_extra_attribute_in_cmd(self) -> None: commit_dict = { 'cmd': 'add_skill_misconception', # Key new_misconception_dict stores a string because dict # keeps on rearranging themselves so tests are not passing. 'new_misconception_dict': '{u\'id\': 0, u\'notes\': ' 'u\'<p>notes</p>\', u\'feedback\': ' 'u\'<p>default_feedback</p>\', ' 'u\'name\': u\'name\'}', 'invalid': 'invalid' } invalid_commit_cmd_model = skill_models.SkillSnapshotMetadataModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, committer_id='committer-id', commit_type='create', commit_cmds=[commit_dict]) output = (self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( skill_validation.ValidateSkillSnapshotMetadataModel())) self.assert_pcoll_equal(output, [ base_validation_errors.CommitCmdsValidateError( invalid_commit_cmd_model, commit_dict, 'The following extra attributes are present: invalid') ])
def test_skill_change_object_with_missing_attribute_in_cmd(self): # type: () -> None commit_dict = { 'cmd': 'update_skill_property', 'property_name': 'name', } invalid_commit_cmd_model = skill_models.SkillSnapshotMetadataModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, committer_id='committer-id', commit_type='edit', commit_cmds=[commit_dict]) output = ( self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( skill_validation.ValidateSkillSnapshotMetadataModel()) ) self.assert_pcoll_equal( # type: ignore[no-untyped-call] output, [ base_validation_errors.CommitCmdsValidateError( # type: ignore[no-untyped-call] invalid_commit_cmd_model, commit_dict, 'The following required attributes are missing: ' 'new_value, old_value') ])
def test_validate_change_domain_implemented(self) -> None: valid_commit_cmd_model = skill_models.SkillSnapshotMetadataModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, committer_id='committer-id', commit_type='delete', commit_cmds=[{ 'cmd': base_models.VersionedModel.CMD_DELETE_COMMIT }]) output = (self.pipeline | beam.Create([valid_commit_cmd_model]) | beam.ParDo( skill_validation.ValidateSkillSnapshotMetadataModel())) self.assert_pcoll_equal(output, [])
def test_skill_change_object_with_invalid_cmd(self) -> None: invalid_commit_cmd_model = skill_models.SkillSnapshotMetadataModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, committer_id='committer-id', commit_type='delete', commit_cmds=[{ 'cmd': 'invalid' }]) output = (self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( skill_validation.ValidateSkillSnapshotMetadataModel())) self.assert_pcoll_equal(output, [ base_validation_errors.CommitCmdsValidateError( invalid_commit_cmd_model, {'cmd': 'invalid'}, 'Command invalid is not allowed') ])
def test_skill_change_object_with_missing_cmd(self): # type: () -> None invalid_commit_cmd_model = skill_models.SkillSnapshotMetadataModel( id='123', created_on=self.YEAR_AGO, last_updated=self.NOW, committer_id='committer-id', commit_type='delete', commit_cmds=[{'invalid': 'data'}]) output = ( self.pipeline | beam.Create([invalid_commit_cmd_model]) | beam.ParDo( skill_validation.ValidateSkillSnapshotMetadataModel()) ) self.assert_pcoll_equal( # type: ignore[no-untyped-call] output, [ base_validation_errors.CommitCmdsValidateError( # type: ignore[no-untyped-call] invalid_commit_cmd_model, {'invalid': 'data'}, 'Missing cmd key in change dict') ])