예제 #1
0
    def setUp(self):
        super(BlogServicesUnitTests, self).setUp()
        self.signup('*****@*****.**', 'A')
        self.signup('*****@*****.**', 'B')
        self.user_id_a = self.get_user_id_from_email('*****@*****.**')
        self.user_id_b = self.get_user_id_from_email('*****@*****.**')

        self.blog_post_a = blog_services.create_new_blog_post(self.user_id_a)
        self.blog_post_b = blog_services.create_new_blog_post(self.user_id_b)
        self.blog_post_a_id = self.blog_post_a.id
        self.blog_post_b_id = self.blog_post_b.id

        self.change_dict = {
            'tags': ['one', 'two']
        }
        self.change_dict_one = {
            'title': 'Sample Title',
            'thumbnail_filename': 'thummbnail.svg',
            'content': '<p>Hello</p>'
        }
        self.change_dict_two = {
            'title': 'Sample title two',
            'thumbnail_filename': 'thummbnail.svg',
            'content': '<p>Hello</p>',
            'tags': ['one', 'two']
        }
예제 #2
0
    def setUp(self) -> None:
        super(BlogServicesUnitTests, self).setUp()
        self.signup('*****@*****.**', 'A')
        self.signup('*****@*****.**', 'B')
        self.user_id_a = self.get_user_id_from_email('*****@*****.**')  # type: ignore[no-untyped-call]
        self.user_id_b = self.get_user_id_from_email('*****@*****.**')  # type: ignore[no-untyped-call]

        self.blog_post_a = blog_services.create_new_blog_post(self.user_id_a)
        self.blog_post_b = blog_services.create_new_blog_post(self.user_id_b)
        self.blog_post_a_id = self.blog_post_a.id
        self.blog_post_b_id = self.blog_post_b.id

        # Dictionary of type BlogPostChangeDict should contain 'title' key but
        # for testing purpose here we are not providing the 'title' key, which
        # causes MyPy to throw error. Thus to silent the error, we used ignore
        # here.
        self.change_dict: blog_services.BlogPostChangeDict = {  # type: ignore[typeddict-item]
            'thumbnail_filename': 'test.svg',
            'content': '<p>hi<p>',
            'tags': ['one', 'two']
        }
        self.change_dict_one: blog_services.BlogPostChangeDict = {
            'title': 'Sample Title',
            'thumbnail_filename': 'thummbnail.svg',
            'content': '<p>Hello</p>',
            'tags': []
        }
        self.change_dict_two: blog_services.BlogPostChangeDict = {
            'title': 'Sample title two',
            'thumbnail_filename': 'thummbnail.svg',
            'content': '<p>Hello</p>',
            'tags': ['one', 'two']
        }
예제 #3
0
 def test_get_blog_post_rights_by_user_id(self):
     blog_post_rights_models = (
         blog_services.get_blog_post_rights_by_user_id(self.user_id_a))
     self.assertTrue(len(blog_post_rights_models) == 1)
     self.assertEqual(blog_post_rights_models[0].id, self.blog_post_a_id)
     blog_services.create_new_blog_post(self.user_id_a)
     blog_post_rights_models = (
         blog_services.get_blog_post_rights_by_user_id(self.user_id_a))
     self.assertTrue(len(blog_post_rights_models) == 2)
예제 #4
0
    def setUp(self) -> None:
        super(BlogPostDomainUnitTests, self).setUp()
        self.signup('*****@*****.**', 'A')
        self.user_id_a = self.get_user_id_from_email(
            '*****@*****.**')  # type: ignore[no-untyped-call]

        self.blog_post = blog_services.create_new_blog_post(self.user_id_a)
예제 #5
0
    def test_get_homepage_data(self):
        self.login(self.user_email)
        json_response = self.get_json(
            '%s' % (feconf.BLOG_HOMEPAGE_DATA_URL),
            )
        default_tags = config_domain.Registry.get_config_property(
            'list_of_default_tags_for_blog_post').value
        self.assertEqual(default_tags, json_response['list_of_default_tags'])
        self.assertEqual(
            self.BLOG_ADMIN_USERNAME,
            json_response['blog_post_summary_dicts'][0]['author_name'])
        self.assertEqual(
            len(json_response['blog_post_summary_dicts']), 1)

        blog_post_two = blog_services.create_new_blog_post(self.blog_admin_id)
        change_dict_two = {
            'title': 'Sample Title Two',
            'thumbnail_filename': 'thumbnail.svg',
            'content': '<p>Hello Blog<p>',
            'tags': ['Newsletter', 'Learners']
        }
        blog_services.update_blog_post(blog_post_two.id, change_dict_two)
        blog_services.publish_blog_post(blog_post_two.id)
        json_response = self.get_json(
            '%s' % feconf.BLOG_HOMEPAGE_DATA_URL)
        self.assertEqual(
            len(json_response['blog_post_summary_dicts']), 2)
        self.assertTrue(
            json_response['blog_post_summary_dicts'][0]['published_on'] >
            json_response['blog_post_summary_dicts'][1]['published_on']
        )
        self.assertEqual(
            json_response['blog_post_summary_dicts'][0]['title'],
            'Sample Title Two'
        )
예제 #6
0
    def test_get_post_page_data(self):
        self.login(self.user_email)
        blog_post = blog_services.get_blog_post_by_id(self.blog_post.id)
        json_response = self.get_json(
            '%s/%s' % (feconf.BLOG_HOMEPAGE_URL, blog_post.url_fragment), )
        self.assertEqual(self.BLOG_ADMIN_USERNAME,
                         json_response['blog_post_dict']['author_name'])
        self.assertEqual('<p>Hello Bloggers</p>',
                         json_response['blog_post_dict']['content'])
        self.assertEqual(len(json_response['summary_dicts']), 1)
        self.assertIsNotNone(json_response['profile_picture_data_url'])

        blog_post_two_id = (blog_services.create_new_blog_post(
            self.blog_admin_id).id)
        change_dict_two = {
            'title': 'Sample Title Two',
            'thumbnail_filename': 'thumbnail.svg',
            'content': '<p>Hello Blog</p>',
            'tags': ['Newsletter', 'Learners']
        }
        blog_services.update_blog_post(blog_post_two_id, change_dict_two)
        blog_services.publish_blog_post(blog_post_two_id)
        blog_post_two = blog_services.get_blog_post_by_id(blog_post_two_id)
        json_response = self.get_json(
            '%s/%s' % (feconf.BLOG_HOMEPAGE_URL, blog_post_two.url_fragment), )
        self.assertEqual(self.BLOG_ADMIN_USERNAME,
                         json_response['blog_post_dict']['author_name'])
        self.assertEqual('<p>Hello Blog</p>',
                         json_response['blog_post_dict']['content'])
        self.assertEqual(len(json_response['summary_dicts']), 2)
        self.assertIsNotNone(json_response['profile_picture_data_url'])
예제 #7
0
 def setUp(self):
     super(BlogPostSummaryUnitTests, self).setUp()
     self.signup('*****@*****.**', 'A')
     self.user_id_a = self.get_user_id_from_email('*****@*****.**')
     blog_post = blog_services.create_new_blog_post(self.user_id_a)
     self.blog_post_id = blog_post.id
     self.blog_post_summary = (blog_services.get_blog_post_summary_by_id(
         self.blog_post_id))
예제 #8
0
 def setUp(self) -> None:
     super(BlogPostSummaryUnitTests, self).setUp()
     self.signup('*****@*****.**', 'A')
     self.user_id_a = self.get_user_id_from_email(
         '*****@*****.**')  # type: ignore[no-untyped-call]
     blog_post = blog_services.create_new_blog_post(
         self.user_id_a)  # type: ignore[no-untyped-call]
     self.blog_post_id = blog_post.id
     self.blog_post_summary = (blog_services.get_blog_post_summary_by_id(
         self.blog_post_id))  # type: ignore[no-untyped-call]
예제 #9
0
    def test_get_dashboard_page_data(self):
        # Checks blog editor can access blog dashboard.
        self.login(self.BLOG_EDITOR_EMAIL)
        json_response = self.get_json(
            '%s' % (feconf.BLOG_DASHBOARD_DATA_URL),
            )
        self.assertEqual(self.BLOG_EDITOR_USERNAME, json_response['username'])
        self.assertIsNone(json_response['published_blog_post_summary_dicts'])
        self.assertIsNone(json_response['draft_blog_post_summary_dicts'])
        self.logout()

        # Checks blog admin can access blog dashboard.
        self.login(self.BLOG_ADMIN_EMAIL)
        json_response = self.get_json(
            '%s' % (feconf.BLOG_DASHBOARD_DATA_URL),
            )
        self.assertEqual(self.BLOG_ADMIN_USERNAME, json_response['username'])
        self.assertIsNone(json_response['published_blog_post_summary_dicts'])
        self.assertIsNone(json_response['draft_blog_post_summary_dicts'])
        self.logout()

        # Checks non blog-admins and non-editors can not access blog dashboard.
        self.login(self.user_email)
        json_response = self.get_json(
            '%s' % (feconf.BLOG_DASHBOARD_DATA_URL), expected_status_int=401)
        self.logout()

        # Checks for correct published and draft blog post summary data.
        blog_post = blog_services.create_new_blog_post(self.blog_editor_id)
        change_dict = {
            'title': 'Sample Title',
            'thumbnail_filename': 'thumbnail.svg',
            'content': '<p>Hello Bloggers<p>',
            'tags': ['Newsletter', 'Learners']
        }
        self.login(self.BLOG_EDITOR_EMAIL)
        json_response = self.get_json(
            '%s' % (feconf.BLOG_DASHBOARD_DATA_URL))
        self.assertEqual(self.BLOG_EDITOR_USERNAME, json_response['username'])
        self.assertEqual(
            blog_post.id,
            json_response['draft_blog_post_summary_dicts'][0]['id'])

        blog_services.update_blog_post(blog_post.id, change_dict)
        blog_services.publish_blog_post(blog_post.id)
        json_response = self.get_json(
            '%s' % (feconf.BLOG_DASHBOARD_DATA_URL))
        self.assertEqual(self.BLOG_EDITOR_USERNAME, json_response['username'])
        self.assertEqual(
            blog_post.id,
            json_response['published_blog_post_summary_dicts'][0]['id'])
        self.assertEqual(
            change_dict['title'],
            json_response['published_blog_post_summary_dicts'][0]['title'])
        self.assertIsNone(json_response['draft_blog_post_summary_dicts'])
예제 #10
0
    def setUp(self):
        super(BlogPostRightsDomainUnitTests, self).setUp()
        self.signup('*****@*****.**', 'A')
        self.signup('*****@*****.**', 'B')

        self.user_id_a = self.get_user_id_from_email('*****@*****.**')
        self.user_id_b = self.get_user_id_from_email('*****@*****.**')

        blog_post = blog_services.create_new_blog_post(self.user_id_a)
        self.blog_post_id = blog_post.id
        self.blog_post_rights = (blog_services.get_blog_post_rights(
            self.blog_post_id))
예제 #11
0
 def setUp(self):
     """Completes the sign-up process for the various users."""
     super(BlogPostHandlerTests, self).setUp()
     self.signup(self.BLOG_ADMIN_EMAIL, self.BLOG_ADMIN_USERNAME)
     self.signup(self.BLOG_EDITOR_EMAIL, self.BLOG_EDITOR_USERNAME)
     self.signup(self.user_email, self.username)
     self.add_user_role(self.BLOG_ADMIN_USERNAME, feconf.ROLE_ID_BLOG_ADMIN)
     self.add_user_role(self.BLOG_EDITOR_USERNAME,
                        feconf.ROLE_ID_BLOG_POST_EDITOR)
     self.blog_admin_id = (self.get_user_id_from_email(
         self.BLOG_ADMIN_EMAIL))
     self.blog_editor_id = (self.get_user_id_from_email(
         self.BLOG_EDITOR_EMAIL))
     self.blog_post = (blog_services.create_new_blog_post(
         self.blog_editor_id))
예제 #12
0
    def setUp(self) -> None:
        super(BlogPostRightsDomainUnitTests, self).setUp()
        self.signup('*****@*****.**', 'A')
        self.signup('*****@*****.**', 'B')

        self.user_id_a = self.get_user_id_from_email(
            '*****@*****.**')  # type: ignore[no-untyped-call]
        self.user_id_b = self.get_user_id_from_email(
            '*****@*****.**')  # type: ignore[no-untyped-call]

        blog_post = blog_services.create_new_blog_post(
            self.user_id_a)  # type: ignore[no-untyped-call]
        self.blog_post_id = blog_post.id
        self.blog_post_rights = (blog_services.get_blog_post_rights(
            self.blog_post_id))  # type: ignore[no-untyped-call]
예제 #13
0
 def setUp(self):
     """Complete the setup process for testing."""
     super(BlogPostHandlerTest, self).setUp()
     self.signup(self.BLOG_ADMIN_EMAIL, self.BLOG_ADMIN_USERNAME)
     self.blog_admin_id = (self.get_user_id_from_email(
         self.BLOG_ADMIN_EMAIL))
     self.add_user_role(self.BLOG_ADMIN_USERNAME, feconf.ROLE_ID_BLOG_ADMIN)
     self.signup(self.user_email, self.username)
     self.blog_post = blog_services.create_new_blog_post(self.blog_admin_id)
     self.change_dict = {
         'title': 'Sample Title',
         'thumbnail_filename': 'thumbnail.svg',
         'content': '<p>Hello Bloggers</p>',
         'tags': ['Newsletter', 'Learners']
     }
     blog_services.update_blog_post(self.blog_post.id, self.change_dict)
     blog_services.publish_blog_post(self.blog_post.id)
예제 #14
0
    def setUp(self):
        super(BlogPostDomainUnitTests, self).setUp()
        self.signup('*****@*****.**', 'A')
        self.user_id_a = self.get_user_id_from_email('*****@*****.**')

        self.blog_post = blog_services.create_new_blog_post(self.user_id_a)
예제 #15
0
 def post(self) -> None:
     """Handles POST requests to create a new blog post draft."""
     new_blog_post = blog_services.create_new_blog_post(self.user_id)
     self.render_json({'blog_post_id': new_blog_post.id})