def test_run_with_same_titles_for_blog_posts(self) -> None: blog_post_summary_model_1 = self.create_model( blog_models.BlogPostSummaryModel, id='validblogid1', title='Sample Title', summary='<p>hello</p>,', author_id='user', url_fragment='url_fragment_1') blog_post_summary_model_2 = self.create_model( blog_models.BlogPostSummaryModel, id='validblogid2', title='Sample Title', summary='<p>hello tho</p>,', author_id='user', url_fragment='url_fragment_2') blog_post_summary_model_3 = self.create_model( blog_models.BlogPostSummaryModel, id='validblogid3', title='Sample Diff Title', summary='<p>hello tho</p>,', author_id='user', url_fragment='url_fragment_2') self.put_multi([ blog_post_summary_model_1, blog_post_summary_model_2, blog_post_summary_model_3, ]) self.assert_job_output_is([ blog_validation_errors.DuplicateBlogTitleError( blog_post_summary_model_1), blog_validation_errors.DuplicateBlogTitleError( blog_post_summary_model_2), ])
def run(self) -> beam.Pipeline: return (self.pipeline | 'Get every Blog Summary Model' >> (ndb_io.GetModels(blog_models.BlogPostSummaryModel.query())) | GetModelsWithDuplicatePropertyValues('title') | 'Flatten models into a list of errors' >> beam.FlatMap(lambda models: [ blog_validation_errors.DuplicateBlogTitleError(model) for model in models ]))
def test_message(self) -> None: blog_post_model = blog_models.BlogPostModel( id='validblogid1', title='Sample Title', content='<p>hello</p>,', author_id='user', url_fragment='url_fragment_1') error = blog_validation_errors.DuplicateBlogTitleError(blog_post_model) self.assertEqual( error.stderr, 'DuplicateBlogTitleError in BlogPostModel(id="validblogid1"):' ' title=%s is not unique' % utils.quoted(blog_post_model.title))