From 0c7076334599625a448614cdabda4be8f3287e97 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 17 Mar 2021 11:00:37 +0000 Subject: [PATCH] new company search endpoint, but searchfilter not working --- back_latienda/urls.py | 1 + companies/tests.py | 48 +++++++++++++++++++++++++++++++++++++++++++ companies/views.py | 12 ++++++++--- 3 files changed, 58 insertions(+), 3 deletions(-) diff --git a/back_latienda/urls.py b/back_latienda/urls.py index 809426e..91d5891 100644 --- a/back_latienda/urls.py +++ b/back_latienda/urls.py @@ -44,6 +44,7 @@ urlpatterns = [ path('api/v1/my_user/', core_views.my_user, name='my-user'), path('api/v1/my_company/', company_views.my_company, name='my-company'), path('api/v1/companies/sample/', company_views.random_company_sample , name='company-sample'), + path('api/v1/search/companies/', company_views.CompanySearchViewSet.as_view({'get': 'list'}) , name='company-search'), path('api/v1/purchase_email/', product_views.purchase_email, name='purchase-email'), path('api/v1/products/all_categories/', product_views.all_categories, name='all-categories'), path('api/v1/stats/me/', stat_views.track_user, name='user-tracker'), diff --git a/companies/tests.py b/companies/tests.py index 5ecc22b..773d59a 100644 --- a/companies/tests.py +++ b/companies/tests.py @@ -551,3 +551,51 @@ class AdminCompanyViewSetTest(APITestCase): # assertions self.assertEquals(response.status_code, 204) + +class CompanySearchViewSet(APITestCase): + + def setUp(self): + """Tests setup + """ + self.endpoint = '/api/v1/search/companies/' + self.factory = CompanyFactory + self.model = Company + # create user + self.email = f"user@mail.com" + self.password = ''.join(random.choices(string.ascii_uppercase, k = 10)) + self.user = CustomUserFactory(email=self.email, is_active=True) + self.user.set_password(self.password) + self.user.save() + + def test_anon_user_can_search_company_name(self): + company_name = 'Test company name' + # create instance + instance = self.factory(company_name=company_name) + + # query + url = f"{self.endpoint}?search={company_name}" + response = self.client.get(url) + + # assertions + self.assertEquals(response.status_code, 200) + + payload = response.json() + print(payload) + self.assertEquals(len(payload), 1) + + def test_anon_user_can_search_short_name(self): + short_name = 'Test company name' + # create instance + instance = self.factory(short_name=short_name) + + # query + url = f"{self.endpoint}?search={short_name}" + response = self.client.get(url) + + # assertions + self.assertEquals(response.status_code, 200) + + payload = response.json() + print(payload) + self.assertEquals(len(payload), 1) + diff --git a/companies/views.py b/companies/views.py index f6ebe7e..59452d0 100644 --- a/companies/views.py +++ b/companies/views.py @@ -24,14 +24,20 @@ from back_latienda.permissions import IsCreator, IsSiteAdmin from utils import woocommerce +class CompanySearchViewSet(viewsets.ModelViewSet): + queryset = Company.objects.filter(is_validated=True).order_by('-created') + serializer_class = CompanySerializer + permission_classes = [IsAuthenticatedOrReadOnly, IsCreator] + filter_backends = (filters.SearchFilter, ) + # search_fields = ['company_name__unaccent__icontains', 'short_name__unaccent__icontains'] + search_fields = ['@company_name', '@short_name'] + + class CompanyViewSet(viewsets.ModelViewSet): queryset = Company.objects.filter(is_validated=True).order_by('-created') serializer_class = CompanySerializer permission_classes = [IsAuthenticatedOrReadOnly, IsCreator] filterset_class = CompanyTagFilter - filter_backends = [filters.SearchFilter] - search_fields = ['company_name__unaccent__icontains', 'short_name__unaccent__icontains'] - def perform_create(self, serializer): serializer.save(creator=self.request.user)