Fix establishment tests
This commit is contained in:
parent
64ac59ee99
commit
2e2ed19118
|
|
@ -387,7 +387,7 @@ class Establishment(ProjectBaseMixin, URLImageMixin, TranslatedFieldsMixin):
|
||||||
"""
|
"""
|
||||||
Return Country id of establishment location
|
Return Country id of establishment location
|
||||||
"""
|
"""
|
||||||
return self.address.city.country.id
|
return self.address.country_id
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def establishment_id(self):
|
def establishment_id(self):
|
||||||
|
|
@ -529,6 +529,10 @@ class Plate(TranslatedFieldsMixin, models.Model):
|
||||||
menu = models.ForeignKey(
|
menu = models.ForeignKey(
|
||||||
'establishment.Menu', verbose_name=_('menu'), on_delete=models.CASCADE)
|
'establishment.Menu', verbose_name=_('menu'), on_delete=models.CASCADE)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def establishment_id(self):
|
||||||
|
return self.menu.establishment.id
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('plate')
|
verbose_name = _('plate')
|
||||||
verbose_name_plural = _('plates')
|
verbose_name_plural = _('plates')
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,11 @@ from main.models import Currency
|
||||||
from establishment.models import Establishment, EstablishmentType, Menu
|
from establishment.models import Establishment, EstablishmentType, Menu
|
||||||
# Create your tests here.
|
# Create your tests here.
|
||||||
from translation.models import Language
|
from translation.models import Language
|
||||||
|
from account.models import Role, UserRole
|
||||||
|
from location.models import Country, Address, City, Region
|
||||||
|
|
||||||
|
|
||||||
class BaseTestCase(APITestCase):
|
class BaseTestCase(APITestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.username = 'sedragurda'
|
self.username = 'sedragurda'
|
||||||
self.password = 'sedragurdaredips19'
|
self.password = 'sedragurdaredips19'
|
||||||
|
|
@ -27,10 +28,49 @@ class BaseTestCase(APITestCase):
|
||||||
self.establishment_type = EstablishmentType.objects.create(name="Test establishment type")
|
self.establishment_type = EstablishmentType.objects.create(name="Test establishment type")
|
||||||
|
|
||||||
# Create lang object
|
# Create lang object
|
||||||
Language.objects.create(
|
self.lang = Language.objects.create(
|
||||||
title='English',
|
title='English',
|
||||||
locale='en-GB'
|
locale='en-GB'
|
||||||
)
|
)
|
||||||
|
self.lang.save()
|
||||||
|
|
||||||
|
self.country_ru = Country.objects.create(
|
||||||
|
name='{"ru-RU":"Russia"}',
|
||||||
|
code='23',
|
||||||
|
low_price=15,
|
||||||
|
high_price=150000,
|
||||||
|
)
|
||||||
|
self.country_ru.languages.add(self.lang)
|
||||||
|
self.country_ru.save()
|
||||||
|
|
||||||
|
self.region = Region.objects.create(name='Moscow area', code='01',
|
||||||
|
country=self.country_ru)
|
||||||
|
self.region.save()
|
||||||
|
|
||||||
|
self.city = City.objects.create(name='Mosocow', code='01',
|
||||||
|
region=self.region, country=self.country_ru)
|
||||||
|
self.city.save()
|
||||||
|
|
||||||
|
self.address = Address.objects.create(city=self.city, street_name_1='Krasnaya',
|
||||||
|
number=2, postal_code='010100')
|
||||||
|
self.address.save()
|
||||||
|
|
||||||
|
self.role = Role.objects.create(role=Role.ESTABLISHMENT_MANAGER)
|
||||||
|
self.role.save()
|
||||||
|
|
||||||
|
self.establishment = Establishment.objects.create(
|
||||||
|
name="Test establishment",
|
||||||
|
establishment_type_id=self.establishment_type.id,
|
||||||
|
is_publish=True,
|
||||||
|
slug="test",
|
||||||
|
address=self.address
|
||||||
|
)
|
||||||
|
|
||||||
|
self.establishment.save()
|
||||||
|
|
||||||
|
self.user_role = UserRole.objects.create(user=self.user, role=self.role,
|
||||||
|
establishment=self.establishment)
|
||||||
|
self.user_role.save()
|
||||||
|
|
||||||
|
|
||||||
class EstablishmentBTests(BaseTestCase):
|
class EstablishmentBTests(BaseTestCase):
|
||||||
|
|
@ -43,25 +83,25 @@ class EstablishmentBTests(BaseTestCase):
|
||||||
'name': 'Test establishment',
|
'name': 'Test establishment',
|
||||||
'type_id': self.establishment_type.id,
|
'type_id': self.establishment_type.id,
|
||||||
'is_publish': True,
|
'is_publish': True,
|
||||||
'slug': 'test-establishment-slug',
|
'slug': 'test-establishment-slug'
|
||||||
}
|
}
|
||||||
|
|
||||||
response = self.client.post('/api/back/establishments/', data=data, format='json')
|
response = self.client.post('/api/back/establishments/', data=data, format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
|
|
||||||
establishment = response.json()
|
response = self.client.get(f'/api/back/establishments/{self.establishment.id}/', format='json')
|
||||||
|
|
||||||
response = self.client.get(f'/api/back/establishments/{establishment["id"]}/', format='json')
|
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
update_data = {
|
update_data = {
|
||||||
'name': 'Test new establishment'
|
'name': 'Test new establishment'
|
||||||
}
|
}
|
||||||
|
|
||||||
response = self.client.patch(f'/api/back/establishments/{establishment["id"]}/', data=update_data)
|
response = self.client.patch(f'/api/back/establishments/{self.establishment.id}/',
|
||||||
|
data=update_data)
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
response = self.client.delete(f'/api/back/establishments/{establishment["id"]}/', format='json')
|
response = self.client.delete(f'/api/back/establishments/{self.establishment.id}/',
|
||||||
|
format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -96,39 +136,45 @@ class EmployeeTests(BaseTestCase):
|
||||||
class ChildTestCase(BaseTestCase):
|
class ChildTestCase(BaseTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
self.establishment = Establishment.objects.create(
|
|
||||||
name="Test establishment",
|
|
||||||
establishment_type_id=self.establishment_type.id,
|
|
||||||
is_publish=True,
|
|
||||||
slug="test"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Test childs
|
# Test childs
|
||||||
class EmailTests(ChildTestCase):
|
class EmailTests(ChildTestCase):
|
||||||
def test_email_CRUD(self):
|
def setUp(self):
|
||||||
|
super().setUp()
|
||||||
|
|
||||||
|
def test_get(self):
|
||||||
response = self.client.get('/api/back/establishments/emails/', format='json')
|
response = self.client.get('/api/back/establishments/emails/', format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
def test_post(self):
|
||||||
data = {
|
data = {
|
||||||
'email': "test@test.com",
|
'email': "test@test.com",
|
||||||
'establishment': self.establishment.id
|
'establishment': self.establishment.id
|
||||||
}
|
}
|
||||||
|
|
||||||
response = self.client.post('/api/back/establishments/emails/', data=data)
|
response = self.client.post('/api/back/establishments/emails/', data=data)
|
||||||
|
self.id_email = response.json()['id']
|
||||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
|
|
||||||
response = self.client.get('/api/back/establishments/emails/1/', format='json')
|
def test_get_by_pk(self):
|
||||||
|
self.test_post()
|
||||||
|
response = self.client.get(f'/api/back/establishments/emails/{self.id_email}/', format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
def test_patch(self):
|
||||||
|
self.test_post()
|
||||||
|
|
||||||
update_data = {
|
update_data = {
|
||||||
'email': 'testnew@test.com'
|
'email': 'testnew@test.com'
|
||||||
}
|
}
|
||||||
|
|
||||||
response = self.client.patch('/api/back/establishments/emails/1/', data=update_data)
|
response = self.client.patch(f'/api/back/establishments/emails/{self.id_email}/',
|
||||||
|
data=update_data)
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
response = self.client.delete('/api/back/establishments/emails/1/')
|
def test_email_CRUD(self):
|
||||||
|
self.test_post()
|
||||||
|
response = self.client.delete(f'/api/back/establishments/emails/{self.id_email}/')
|
||||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,10 +75,15 @@ class IsStandardUser(IsGuest):
|
||||||
def has_object_permission(self, request, view, obj):
|
def has_object_permission(self, request, view, obj):
|
||||||
# Read permissions are allowed to any request
|
# Read permissions are allowed to any request
|
||||||
rules = [
|
rules = [
|
||||||
obj.user == request.user and obj.user.email_confirmed,
|
|
||||||
super().has_object_permission(request, view, obj)
|
super().has_object_permission(request, view, obj)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if hasattr(obj, 'user'):
|
||||||
|
rules = [
|
||||||
|
obj.user == request.user and obj.user.email_confirmed,
|
||||||
|
super().has_object_permission(request, view, obj)
|
||||||
|
]
|
||||||
|
|
||||||
return any(rules)
|
return any(rules)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -114,7 +119,7 @@ class IsCountryAdmin(IsStandardUser):
|
||||||
.first() # 'Comments moderator'
|
.first() # 'Comments moderator'
|
||||||
|
|
||||||
rules = [
|
rules = [
|
||||||
obj.user != request.user and
|
# obj.user != request.user and
|
||||||
UserRole.objects.filter(user=request.user, role=role).exists(),
|
UserRole.objects.filter(user=request.user, role=role).exists(),
|
||||||
super().has_object_permission(request, view, obj),
|
super().has_object_permission(request, view, obj),
|
||||||
]
|
]
|
||||||
|
|
@ -149,7 +154,8 @@ class IsEstablishmentManager(IsStandardUser):
|
||||||
|
|
||||||
rules = [
|
rules = [
|
||||||
UserRole.objects.filter(user=request.user, role=role,
|
UserRole.objects.filter(user=request.user, role=role,
|
||||||
establishment_id=obj.establishment_id).exists(),
|
establishment_id=obj.establishment_id
|
||||||
|
).exists(),
|
||||||
super().has_object_permission(request, view, obj)
|
super().has_object_permission(request, view, obj)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,8 @@ def validate_tjson(value):
|
||||||
code='invalid_json',
|
code='invalid_json',
|
||||||
params={'value': value},
|
params={'value': value},
|
||||||
)
|
)
|
||||||
lang_count = Language.objects.filter(locale__in=value.keys()).count()
|
is_lang = Language.objects.filter(locale__in=value.keys()).exists()
|
||||||
if lang_count != len(value.keys()):
|
if not is_lang:
|
||||||
raise exceptions.ValidationError(
|
raise exceptions.ValidationError(
|
||||||
'invalid_translated_keys',
|
'invalid_translated_keys',
|
||||||
code='invalid_translated_keys',
|
code='invalid_translated_keys',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user