def test_get_cates_order_by_article_count(self): insert_amount = 10 prefix = 'testcate' with self.app.test_request_context(), self.db.atomic(): cates = [dict(id=prefix + str(i), name=prefix + str(i)) for i in range(insert_amount)] Category.insert_many(cates).execute() for index, cate in enumerate(cates): articles = [dict(id=str(index) + str(i), title='hello', text_type='md', source_text='# hello', category=cate['id']) for i in range((index + 1) * 2)] Article.insert_many(articles).execute() resp = self.client.get(self.api_url_base + '/categories/', query_string={'order': 'article_count', 'desc': 'true'}) self.assertResponseRestfulAndSuccess(resp) categories = self.get_json(resp)['categories'] result_counts = [cate['article_count'] for cate in categories] expected_counts = sorted(result_counts, reverse=True) self.assertListEqual(result_counts, expected_counts)
def test_get_articles_without_private_article(self): insert_amount = 30 with self.app.test_request_context(), self.db.atomic(): prefix = 'testarticle' articles = [ dict(id=prefix + str(i), title=prefix, text_type=prefix, source_text=prefix) for i in range(insert_amount) ] Article.insert_many(articles).execute() prefix = 'testarticle-p' articles = [ dict(id=prefix + str(i), title=prefix, text_type=prefix, source_text=prefix, public=False) for i in range(insert_amount) ] Article.insert_many(articles).execute() resp = self.client.get(self.api_url_base + '/articles/', query_string={'limit': insert_amount * 2}) self.assertResponseRestful(resp) articles = self.get_json(resp)['articles'] self.assertEqual(len(articles), insert_amount)
def test_get_articles_order_by_id_desc(self): insert_amount = 30 with self.app.test_request_context(), self.db.atomic(): prefix = 'testarticle' articles = [ dict(id=prefix + str(i), title=prefix, text_type=prefix, source_text=prefix) for i in range(insert_amount) ] Article.insert_many(articles).execute() resp = self.client.get(self.api_url_base + '/articles/', query_string={ 'limit': insert_amount, 'order': 'id', 'desc': 'true' }) self.assertResponseRestful(resp) expected_ids = sorted([article['id'] for article in articles], reverse=True) result_ids = [ article['id'] for article in self.get_json(resp)['articles'] ] self.assertListEqual(expected_ids, result_ids)
def test_get_articles_filter_by_nonexist_category(self): from random import choice insert_amount_per_cate = 30 category_amount = 3 cate_prefix = 'cate' article_prefix = 'art' with self.app.test_request_context(), self.db.atomic(): cates = [ dict(id=cate_prefix + str(i), name=cate_prefix + str(i)) for i in range(category_amount) ] Category.insert_many(cates).execute() cate_to_insert = choice(cates)['id'] articles = [ dict(id=article_prefix + str(i), title=article_prefix, text_type=article_prefix, source_text=article_prefix, category=cate_to_insert) for i in range(insert_amount_per_cate) ] Article.insert_many(articles).execute() resp = self.client.get(self.api_url_base + '/articles/', query_string={ 'limit': insert_amount_per_cate, 'category': cate_to_insert + '_' }) self.assertResponseRestful(resp) articles = self.get_json(resp)['articles'] self.assertEqual(len(articles), 0)