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
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
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)
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)
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
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
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
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)
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)
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)
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)
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)
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"])
def test_get_post_with_negative_id(self): try: post = Post.get_post(-1) self.fail("Expect InvalidFieldError") except InvalidFieldError: pass
def test_get_post_list_with_invalid_param(self): posts = Post.get_posts(0, -2) self.assertEqual(len(posts), 10)
def test_get_post_list_with_out_of_range_id(self): posts = Post.get_posts(4, 7) self.assertEqual(len(posts), 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)
def test_find_post_with_valid_info(self): posts, author = Post.find_post_by_author(3, 1, 3) self.assertEqual(len(posts), 3)
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)
def test_get_post_valid(self): post = Post.get_post(1) self.assertIsNotNone(post)
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)
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)
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)
def test_get_post_with_string_id(self): try: post = Post.get_post("abc") self.fail("Expect InvalidFieldError") except InvalidFieldError: pass
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)
def test_get_post_not_exist(self): post = Post.get_post(122) self.assertIsNone(post)