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_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)
def test_get_cates(self): insert_amount = 30 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() resp = self.client.get(self.api_url_base + '/categories/') self.assertResponseRestfulAndSuccess(resp) categories = self.get_json(resp)['categories'] self.assertEqual(len(categories), insert_amount) nums = [int(cate['name'][len(prefix):]) for cate in categories] self.assertListEqual(nums, list(range(insert_amount)))