Пример #1
0
    def test_subtopic_page_change_object_with_invalid_subtopic_page_property(
            self) -> None:
        invalid_commit_cmd_model = (
            subtopic_models.SubtopicPageSnapshotMetadataModel(
                id='123',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='edit',
                commit_cmds=[{
                    'cmd': 'update_subtopic_page_property',
                    'subtopic_id': 'subtopic_id',
                    'property_name': 'invalid',
                    'old_value': 'old_value',
                    'new_value': 'new_value',
                }]))

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(subtopic_validation.
                               ValidateSubtopicPageSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {
                    'cmd': 'update_subtopic_page_property',
                    'subtopic_id': 'subtopic_id',
                    'property_name': 'invalid',
                    'old_value': 'old_value',
                    'new_value': 'new_value',
                }, 'Value for property_name in cmd '
                'update_subtopic_page_property: invalid is not allowed')
        ])
Пример #2
0
    def test_subtopic_page_change_object_with_extra_attribute_in_cmd(
            self) -> None:
        invalid_commit_cmd_model = (
            subtopic_models.SubtopicPageSnapshotMetadataModel(
                id='123',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='create',
                commit_cmds=[{
                    'cmd': 'create_new',
                    'topic_id': 'topic_id',
                    'subtopic_id': 'subtopic_id',
                    'invalid': 'invalid'
                }]))

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(subtopic_validation.
                               ValidateSubtopicPageSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {
                    'cmd': 'create_new',
                    'topic_id': 'topic_id',
                    'subtopic_id': 'subtopic_id',
                    'invalid': 'invalid'
                }, 'The following extra attributes are present: invalid')
        ])
Пример #3
0
    def test_subtopic_page_change_object_with_missing_attribute_in_cmd(
            self) -> None:
        invalid_commit_cmd_model = (
            subtopic_models.SubtopicPageSnapshotMetadataModel(
                id='123',
                created_on=self.YEAR_AGO,
                last_updated=self.NOW,
                committer_id='committer_id',
                commit_type='edit',
                commit_cmds=[{
                    'cmd': 'update_subtopic_page_property',
                    'property_name': '<p>page_contents_html</p>',
                    'subtopic_id': 'subtopic_id'
                }]))

        output = (self.pipeline
                  | beam.Create([invalid_commit_cmd_model])
                  | beam.ParDo(subtopic_validation.
                               ValidateSubtopicPageSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {
                    'cmd': 'update_subtopic_page_property',
                    'property_name': '<p>page_contents_html</p>',
                    'subtopic_id': 'subtopic_id'
                }, 'The following required attributes are missing: '
                'new_value, old_value')
        ])
Пример #4
0
    def test_subtopic_page_change_object_with_invalid_cmd(self):
        # type: () -> None
        invalid_commit_cmd_model = (
            subtopic_models.SubtopicPageSnapshotMetadataModel(
                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(
                subtopic_validation.ValidateSubtopicPageSnapshotMetadataModel())
        )

        self.assert_pcoll_equal( # type: ignore[no-untyped-call]
            output, [
                base_validation_errors.CommitCmdsValidateError( # type: ignore[no-untyped-call]
                    invalid_commit_cmd_model,
                    {'cmd': 'invalid'},
                    'Command invalid is not allowed')
            ])
Пример #5
0
    def test_validate_change_domain_implemented(self) -> None:
        valid_commit_cmd_model = (
            subtopic_models.SubtopicPageSnapshotMetadataModel(
                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(subtopic_validation.
                               ValidateSubtopicPageSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [])
Пример #6
0
    def test_subtopic_page_change_object_with_missing_cmd(self) -> None:
        invalid_commit_cmd_model = (
            subtopic_models.SubtopicPageSnapshotMetadataModel(
                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(subtopic_validation.
                               ValidateSubtopicPageSnapshotMetadataModel()))

        self.assert_pcoll_equal(output, [
            base_validation_errors.CommitCmdsValidateError(
                invalid_commit_cmd_model, {'invalid': 'data'},
                'Missing cmd key in change dict')
        ])