def test_find_post_with_not_exist_author(self):

        try:
            Post.find_post_by_author_pagination(10, 4, 7)
            self.fail("Expect UserNotFoundError")
        except UserNotFoundError:
            pass
Ejemplo n.º 2
0
    def test_find_post_with_invalid_categories(self):

        try:
            Post.find_post_by_keyword("")
            self.fail("Expect InvalidFieldError")
        except InvalidFieldError:
            pass
    def test_find_post_with_invalid_author_id(self):

        try:
            Post.find_post_by_author_pagination("abc")
            self.fail("Expect InvalidFieldError")
        except InvalidFieldError:
            pass
Ejemplo n.º 4
0
    def test_delete_post_by_manager(self):
        args = {
            "user_id": 1,
            "post_id": 2
        }

        Post.delete_post(**args)
        post = DBPost.get_by_id(2)
        self.assertIsNone(post)
Ejemplo n.º 5
0
    def test_delete_post_all_field_valid(self):
        args = {
            "user_id": 1,
            "post_id": 1
        }

        Post.delete_post(**args)
        post = DBPost.get_by_id(1)
        self.assertIsNone(post)
Ejemplo n.º 6
0
    def test_delete_not_exist_post(self):
        args = {
            "user_id": 2,
            "post_id": 100
        }

        try:
            Post.delete_post(**args)
            self.fail("Expect PostNotFoundError")
        except PostNotFoundError:
            pass
Ejemplo n.º 7
0
    def test_add_post_without_content(self):
        args = {
            "user_id": 2,
            "title": "Hello",
            "content": "",
        }

        try:
            Post.add_post(**args)
            self.fail("Expect InvalidFieldError")
        except InvalidFieldError:
            pass
Ejemplo n.º 8
0
    def test_delete_post_without_permission(self):
        """
        user who want to delete pos is not the author or manager
        :return:
        """
        args = {
            "user_id": 2,
            "post_id": 3
        }

        try:
            Post.delete_post(**args)
            self.fail("Expect AccessDeniedError")
        except AccessDeniedError:
            pass
Ejemplo n.º 9
0
def show_single_post(post_id):
    try:
        post = Post.get_post(post_id)
        if post:
            return render_template("single_post.html", post=post)
        else:
            abort(404)
    except Exception as e:
        abort(404)
Ejemplo n.º 10
0
def edit_post(post_id):
    try:
        post = Post.get_post(post_id)
        #only author can edit post
        if post.author.id != current_user.id and current_user.role != "manager":
            abort(403)
        return render_template("add_post.html", post=post, categories=default.categories)
    except Exception as e:
        abort(404)
Ejemplo n.º 11
0
def search_post_by_keyword():
    keyword = request.args["keyword"] or None
    page = request.args.get("page", 1)
    per_page = request.args.get("per_page", PER_PAGE)

    try:
        pagination = Post.find_post_by_keyword_pagination(keyword, page, per_page)
        return render_template("search_result.html", pagination=pagination, keyword=keyword, menu_items=default.categories)
    except Exception as e:
        abort(400)
Ejemplo n.º 12
0
def add_post():
    try:
        args={
            "user_id": current_user.id,
            "title":request.form["title"] or None,
            "content": request.form["content"] or None,
            "categories": request.form.getlist("categories") or None,
            "tags": request.form["tags"] or None,
            "feature_image":request.form["feature_image"] or None,
        }
        post = Post.add_post(**args)

        return redirect(url_for('post', post_id=post.id))
    except:
        abort(400)
Ejemplo n.º 13
0
def update_post():
    args={
            "user_id": current_user.id,
            "post_id": request.form["post_id"] or None,
            "title":request.form["title"] or None,
            "content": request.form["content"] or None,
            "categories": request.form.getlist("categories") or None,
            "tags": request.form["tags"] or None,
            "feature_image":request.form["feature_image"] or None,
        }
    try:
        post = Post.update_post(**args)
        return render_template("add_post.html", post=post, categories=default.categories)
    except AccessDeniedError:
        abort(403)
    except Exception as e:
        abort(400)
Ejemplo n.º 14
0
    def test_add_post_without_title(self):
        args ={
            "user_id": 2,
            "title": "",
            "content": "<p>Sed itaque dignissimos eligendi reprehenderit, nesciunt ducimus voluptates dolores suscipit fugit ipsam aperiam praesentium laborum odit qui libero ipsum tempora, eos quis hic, sapiente perspiciatis amet labore voluptatibus alias. Vitae.</p>",
            "feature_image":"http://www.keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg",
            "tags": "wallpaper, nature",
            "categories":"Uncategorized",
            "draft": True,
        }

        p = Post.add_post(**args)
        self.assertIsNotNone(p)

        post = DBPost.get_by_id(p.id)
        self.assertEqual(post.user_id, args["user_id"])
        self.assertGreater(len(post.title), 0)
        self.assertEqual(post.content, args["content"])
        self.assertEqual(post.feature_image, args["feature_image"])
        self.assertEqual(post.tags, args["tags"])
        self.assertEqual(post.categories, args["categories"])
Ejemplo n.º 15
0
 def test_get_post_with_negative_id(self):
     try:
         post = Post.get_post(-1)
         self.fail("Expect InvalidFieldError")
     except InvalidFieldError:
         pass
Ejemplo n.º 16
0
 def test_get_post_list_with_invalid_param(self):
     posts = Post.get_posts(0, -2)
     self.assertEqual(len(posts), 10)
Ejemplo n.º 17
0
 def test_get_post_list_with_out_of_range_id(self):
     posts = Post.get_posts(4, 7)
     self.assertEqual(len(posts), 0)
Ejemplo n.º 18
0
 def test_get_post_list_valid(self):
     posts = Post.get_posts(1, 5)
     self.assertEqual(len(posts), 5)
 def test_find_post_with_valid_info(self):
     pagination, author = Post.find_post_by_author_pagination(3, 1, 3)
     self.assertEqual(len(pagination.items), 3)
Ejemplo n.º 20
0
 def test_find_post_with_valid_info(self):
     posts, author = Post.find_post_by_author(3, 1, 3)
     self.assertEqual(len(posts), 3)
Ejemplo n.º 21
0
 def test_find_post_without_pagination_param(self):
     posts, author = Post.find_post_by_author(3)
     self.assertEqual(len(posts), 6)
 def test_find_post_with_out_of_range_index(self):
     pagination, author = Post.find_post_by_author_pagination(3, 4, 7)
     self.assertEqual(len(pagination.items), 0)
 def test_find_post_with_invalid_pagination_param(self):
     pagination, author = Post.find_post_by_author_pagination(3, 0, -2)
     self.assertEqual(len(pagination.items), 6)
Ejemplo n.º 24
0
 def test_get_post_valid(self):
     post = Post.get_post(1)
     self.assertIsNotNone(post)
Ejemplo n.º 25
0
 def test_find_post_with_out_of_range_index(self):
     posts, author = Post.find_post_by_author(3, 4, 7)
     self.assertEqual(len(posts), 0)
Ejemplo n.º 26
0
def filter_by_user(user_id, page):
    try:
        pagination, author = Post.find_post_by_author_pagination(user_id,page)
        return render_template("search_result.html", pagination=pagination, author=author, menu_items=default.categories)
    except Exception as e:
        abort(400)
Ejemplo n.º 27
0
def filter_post_by_category(cat_name, page):
    try:
        pagination = Post.find_post_by_category_pagination(cat_name, page)
        return render_template("search_result.html", pagination=pagination, category=cat_name, menu_items=default.categories)
    except Exception as e:
        abort(400)
Ejemplo n.º 28
0
 def test_get_post_with_string_id(self):
     try:
         post = Post.get_post("abc")
         self.fail("Expect InvalidFieldError")
     except InvalidFieldError:
         pass
Ejemplo n.º 29
0
def get_latest_post(page):
    try:
        pagination = Post.get_posts_pagination(page=page, per_page=PER_PAGE)
        return render_template("index.html", pagination=pagination, menu_items=default.categories)
    except Exception as e:
        abort(404)
Ejemplo n.º 30
0
 def test_get_post_not_exist(self):
     post = Post.get_post(122)
     self.assertIsNone(post)