def test_search_request_page(self): # page 指定なし params = {'queryStringParameters': {'limit': '10', 'query': 'dummy'}} response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() result = json.loads(response['body']) self.assertEqual(len(result), 10) self.assertRegex(result[0]['article_id'], '^dummy') # page 指定 params = { 'queryStringParameters': { 'page': '2', 'limit': '10', 'query': 'dummy' } } response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() result = json.loads(response['body']) self.assertRegex(result[0]['article_id'], '^dummy') self.assertEqual(len(result), 10) # page 範囲外 params = { 'queryStringParameters': { 'page': '100001', 'limit': '10', 'query': 'dummy' } } response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() self.assertEqual(response['statusCode'], 400)
def test_search_request_limit(self): # limit 指定なし params = {'queryStringParameters': {'query': 'dummy'}} response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() result = json.loads(response['body']) self.assertEqual(len(result), 20) # limit 指定 params = {'queryStringParameters': {'limit': '10', 'query': 'dummy'}} response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() result = json.loads(response['body']) self.assertEqual(len(result), 10)
def test_invalid_tag_parmas(self): params = { 'queryStringParameters': { 'tag': '' } } response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() self.assertEqual(response['statusCode'], 400) params = { 'queryStringParameters': { 'tag': 'A' * 26 } } response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() self.assertEqual(response['statusCode'], 400)
def test_search_match_zero(self): params = { 'queryStringParameters': { 'tag': 'vwxyz' } } response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() result = json.loads(response['body']) self.assertEqual(len(result), 0)
def test_search_request_query_over150(self): # query文字列150超 params = { 'queryStringParameters': { 'limit': '1', 'query': 'abcdefghij' * 16 } } response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() self.assertEqual(response['statusCode'], 400)
def test_search_with_tag_space(self): params = { 'queryStringParameters': { 'tag': 'abcde vwxyz' } } response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() result = json.loads(response['body']) self.assertEqual(response['statusCode'], 200) self.assertEqual(len(result), 1)
def test_search_request(self): params = { 'queryStringParameters': { 'limit': '1', 'query': 'huga', 'tag': 'C' } } response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() result = json.loads(response['body']) self.assertEqual(len(result), 1)
def test_search_with_tag_sort(self): params = { 'queryStringParameters': { 'tag': 'd' } } response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() result = json.loads(response['body']) self.assertEqual(response['statusCode'], 200) self.assertEqual(len(result), 3) self.assertEqual(result[0]['published_at'], 1530112720) self.assertEqual(result[1]['published_at'], 1530112710) self.assertEqual(result[2]['published_at'], 1530112700)
def lambda_handler(event, context): search_articles = SearchArticles(event, context, dynamodb=dynamodb, elasticsearch=elasticsearch) return search_articles.main()
def test_search_no_params(self): params = { 'queryStringParameters': {} } response = SearchArticles(params, {}, elasticsearch=self.elasticsearch).main() self.assertEqual(response['statusCode'], 400)