added tag filtering for companies
This commit is contained in:
@@ -29,8 +29,8 @@ class CompanyViewSetTest(APITestCase):
|
||||
self.password = ''.join(random.choices(string.ascii_uppercase, k = 10))
|
||||
self.user = CustomUserFactory(email="test@mail.com", password=self.password, is_active=True)
|
||||
|
||||
# user not authenticated
|
||||
def test_not_logged_user_cannot_create_instance(self):
|
||||
# anonymous user
|
||||
def test_anon_user_cannot_create_instance(self):
|
||||
"""Not logged-in user cannot create new instance
|
||||
"""
|
||||
instances = [self.factory() for n in range(random.randint(1,5))]
|
||||
@@ -40,7 +40,7 @@ class CompanyViewSetTest(APITestCase):
|
||||
# Assert access is forbidden
|
||||
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
def test_not_logged_user_cannot_modify_existing_instance(self):
|
||||
def test_anon_user_cannot_modify_existing_instance(self):
|
||||
"""Not logged-in user cannot modify existing instance
|
||||
"""
|
||||
# Create instance
|
||||
@@ -53,7 +53,7 @@ class CompanyViewSetTest(APITestCase):
|
||||
# Assert forbidden code
|
||||
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
def test_not_logged_user_cannot_delete_existing_instance(self):
|
||||
def test_anon_user_cannot_delete_existing_instance(self):
|
||||
"""Not logged-in user cannot delete existing instance
|
||||
"""
|
||||
# Create instances
|
||||
@@ -67,7 +67,7 @@ class CompanyViewSetTest(APITestCase):
|
||||
# Assert instance still exists on db
|
||||
self.assertTrue(self.model.objects.get(id=instance.pk))
|
||||
|
||||
def test_not_logged_user_can_list_instance(self):
|
||||
def test_anon_user_can_list_instance(self):
|
||||
"""Not logged-in user can list instance
|
||||
"""
|
||||
# Request list
|
||||
@@ -76,6 +76,28 @@ class CompanyViewSetTest(APITestCase):
|
||||
# Assert access is forbidden
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
def test_anon_user_can_filter_tags(self):
|
||||
# create instances
|
||||
expected_instance = [
|
||||
self.factory(tags='ropa'),
|
||||
self.factory(tags='tejidos, ropa')
|
||||
]
|
||||
unexpected_instance = [
|
||||
self.factory(tags="zapatos, azules"),
|
||||
self.factory(tags="xxl")
|
||||
]
|
||||
# prepare url
|
||||
url = f"{self.endpoint}?tags=ropa"
|
||||
|
||||
# Request list
|
||||
response = self.client.get(url)
|
||||
payload = response.json()
|
||||
|
||||
# Assert access is granted
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
# Assert number of instnaces in response
|
||||
self.assertEquals(len(expected_instance), len(payload))
|
||||
|
||||
# authenticated user
|
||||
def test_logged_user_can_list_instance(self):
|
||||
"""Regular logged-in user can list instance
|
||||
@@ -241,6 +263,7 @@ class CompanyViewSetTest(APITestCase):
|
||||
self.assertFalse(self.model.objects.filter(id=instance.pk).exists())
|
||||
|
||||
|
||||
|
||||
class MyCompanyViewTest(APITestCase):
|
||||
"""CompanyViewset tests
|
||||
"""
|
||||
|
||||
@@ -16,7 +16,7 @@ from ipware import get_client_ip
|
||||
from stats.models import StatsLog
|
||||
from companies.models import Company
|
||||
from companies.serializers import CompanySerializer
|
||||
|
||||
from utils.tag_filters import CompanyTagFilter
|
||||
from back_latienda.permissions import IsCreator
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ class CompanyViewSet(viewsets.ModelViewSet):
|
||||
queryset = Company.objects.all()
|
||||
serializer_class = CompanySerializer
|
||||
permission_classes = [IsAuthenticatedOrReadOnly, IsCreator]
|
||||
filterset_class = CompanyTagFilter
|
||||
|
||||
def perform_create(self, serializer):
|
||||
serializer.save(creator=self.request.user)
|
||||
|
||||
Reference in New Issue
Block a user