diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb index 8be7225..7abac8b 100644 --- a/.idea/sonarlint/issuestore/index.pb +++ b/.idea/sonarlint/issuestore/index.pb @@ -37,4 +37,12 @@ c n >.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py,1/3/13b2dadc1a304806d1279045cdb6b0d9584b4168 G -app/service/__init__.py,9/b/9b3839df051a329f6861c3f369500c5a02569882 \ No newline at end of file +app/service/__init__.py,9/b/9b3839df051a329f6861c3f369500c5a02569882 +e +5.venv/lib/python3.11/site-packages/pluggy/_callers.py,7/f/7fa0bb990c19ec6ac5c4dfafff41e24424f4bfb7 +d +4.venv/lib/python3.11/site-packages/_pytest/python.py,b/9/b9d952745c82e9b73dc79e24c8fca24f8eb95954 +e +5.venv/lib/python3.11/site-packages/pluggy/_manager.py,9/d/9d9a19087bf822ca49dc04c2994fec2deadac19e +c +3.venv/lib/python3.11/site-packages/pluggy/_hooks.py,b/d/bd6152bb501e7bf20c1cf6d7c35e556b4afccda0 \ No newline at end of file diff --git a/.idea/sonarlint/securityhotspotstore/index.pb b/.idea/sonarlint/securityhotspotstore/index.pb index 8be7225..7abac8b 100644 --- a/.idea/sonarlint/securityhotspotstore/index.pb +++ b/.idea/sonarlint/securityhotspotstore/index.pb @@ -37,4 +37,12 @@ c n >.venv/lib/python3.11/site-packages/anyio/_backends/_asyncio.py,1/3/13b2dadc1a304806d1279045cdb6b0d9584b4168 G -app/service/__init__.py,9/b/9b3839df051a329f6861c3f369500c5a02569882 \ No newline at end of file +app/service/__init__.py,9/b/9b3839df051a329f6861c3f369500c5a02569882 +e +5.venv/lib/python3.11/site-packages/pluggy/_callers.py,7/f/7fa0bb990c19ec6ac5c4dfafff41e24424f4bfb7 +d +4.venv/lib/python3.11/site-packages/_pytest/python.py,b/9/b9d952745c82e9b73dc79e24c8fca24f8eb95954 +e +5.venv/lib/python3.11/site-packages/pluggy/_manager.py,9/d/9d9a19087bf822ca49dc04c2994fec2deadac19e +c +3.venv/lib/python3.11/site-packages/pluggy/_hooks.py,b/d/bd6152bb501e7bf20c1cf6d7c35e556b4afccda0 \ No newline at end of file diff --git a/app/service/__pycache__/restaurant_service.cpython-311.pyc b/app/service/__pycache__/restaurant_service.cpython-311.pyc index 0fd5b95..a00bdea 100644 Binary files a/app/service/__pycache__/restaurant_service.cpython-311.pyc and b/app/service/__pycache__/restaurant_service.cpython-311.pyc differ diff --git a/app/service/restaurant_service.py b/app/service/restaurant_service.py index 59d39f3..2e889e9 100644 --- a/app/service/restaurant_service.py +++ b/app/service/restaurant_service.py @@ -41,6 +41,8 @@ def get_restaurant_recommendation(get_recommendation_req): total_restaurant_num = metadata['total_count'] page_number = total_restaurant_num // MAX_RESTAURANT_NUM + if page_number == 0: + page_number = 1 pages = [i for i in range(1, page_number+1)] with ThreadPoolExecutor(len(pages)) as executor: diff --git a/requirements.txt b/requirements.txt index ed5edd4..f022c80 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,7 @@ annotated-types==0.7.0 anyio==4.4.0 +beautifulsoup4==4.12.3 +bs4==0.0.2 cachetools==5.3.3 certifi==2024.6.2 charset-normalizer==3.3.2 @@ -49,6 +51,7 @@ rich==13.7.1 rsa==4.9 shellingham==1.5.4 sniffio==1.3.1 +soupsieve==2.5 starlette==0.37.2 tqdm==4.66.4 typer==0.12.3 diff --git a/test/__pycache__/test_restaurant_service.cpython-311-pytest-8.2.2.pyc b/test/__pycache__/test_restaurant_service.cpython-311-pytest-8.2.2.pyc index 1446f88..3f10f04 100644 Binary files a/test/__pycache__/test_restaurant_service.cpython-311-pytest-8.2.2.pyc and b/test/__pycache__/test_restaurant_service.cpython-311-pytest-8.2.2.pyc differ diff --git a/test/test_restaurant_service.py b/test/test_restaurant_service.py index 626f710..4588844 100644 --- a/test/test_restaurant_service.py +++ b/test/test_restaurant_service.py @@ -1,5 +1,6 @@ import os from unittest.mock import patch +import unittest from app.dto.get_recommendation_request import Get_recommendation_request from app.dto.get_recommendation_response import Get_recommendation_response @@ -15,24 +16,18 @@ } ] -mock_genAI_recommendation = """{'place_name': 'Mock Restaurant', 'category_name': 'Food > Korean', 'place_url': 'http://mock.restaurant', 'distance': '100', 'road_address_name': 'Mock Address'}""" - -mock_metadata = { - 'total_count': 1 -} +mock_genAI_recommendation = """[{'place_name': 'Mock Restaurant', 'category_name': 'Food > Korean', 'place_url': 'http://mock.restaurant', 'distance': '100', 'road_address_name': 'Mock Address'}]""" +mock_metadata = {'is_end': False, 'pageable_count': 45, 'same_name': {'keyword': '음식점', 'region': [], 'selected_region': ''}, 'total_count': 1} os.environ['KAKAO_API_KEY'] = 'mock_api_key' -@patch('app.service.restaurant_service.get_kakao_search_result') -@patch('app.service.restaurant_service.get_genAI_recommendation') -@patch('app.service.restaurant_service.get_kakao_search_metadata') +@patch('app.service.restaurant_service.get_kakao_search_result', return_value=mock_kakao_result) +@patch('app.service.restaurant_service.get_genAI_recommendation', return_value=mock_genAI_recommendation) +@patch('app.service.restaurant_service.get_kakao_search_metadata', return_value=mock_metadata) def test_get_restaurant_recommendation(mock_get_genAI_recommendation, mock_get_kakao_search_result, mock_get_kakao_search_metadata): - mock_get_kakao_search_result.return_value = mock_kakao_result - mock_get_genAI_recommendation.return_value = mock_genAI_recommendation - mock_get_kakao_search_metadata.return_value = mock_metadata get_recommendation_req = Get_recommendation_request( longitude="127.06283102249932", @@ -41,13 +36,11 @@ def test_get_restaurant_recommendation(mock_get_genAI_recommendation, tag=None ) - response = get_restaurant_recommendation(get_recommendation_req) - expected_response = Get_recommendation_response( - title='Mock Restaurant', - category='Food > Korean', - link='http://mock.restaurant', - distance='100', - address='Mock Address' - ) - - assert response == expected_response + return get_restaurant_recommendation(get_recommendation_req) +class TestRestaurantServices(unittest.TestCase): + def test_get_restaurant_recommendation(self): + response = test_get_restaurant_recommendation() + print(response) + self.assertIsInstance(response, list) + self.assertIsInstance(response[0], Get_recommendation_response) + self.assertEqual(response[0].title, 'Mock Restaurant')