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 self.address.city.country.id
|
||||
return self.address.country_id
|
||||
|
||||
@property
|
||||
def establishment_id(self):
|
||||
|
|
@ -529,6 +529,10 @@ class Plate(TranslatedFieldsMixin, models.Model):
|
|||
menu = models.ForeignKey(
|
||||
'establishment.Menu', verbose_name=_('menu'), on_delete=models.CASCADE)
|
||||
|
||||
@property
|
||||
def establishment_id(self):
|
||||
return self.menu.establishment.id
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('plate')
|
||||
verbose_name_plural = _('plates')
|
||||
|
|
|
|||
|
|
@ -7,10 +7,11 @@ from main.models import Currency
|
|||
from establishment.models import Establishment, EstablishmentType, Menu
|
||||
# Create your tests here.
|
||||
from translation.models import Language
|
||||
from account.models import Role, UserRole
|
||||
from location.models import Country, Address, City, Region
|
||||
|
||||
|
||||
class BaseTestCase(APITestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.username = 'sedragurda'
|
||||
self.password = 'sedragurdaredips19'
|
||||
|
|
@ -27,10 +28,49 @@ class BaseTestCase(APITestCase):
|
|||
self.establishment_type = EstablishmentType.objects.create(name="Test establishment type")
|
||||
|
||||
# Create lang object
|
||||
Language.objects.create(
|
||||
self.lang = Language.objects.create(
|
||||
title='English',
|
||||
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):
|
||||
|
|
@ -43,25 +83,25 @@ class EstablishmentBTests(BaseTestCase):
|
|||
'name': 'Test establishment',
|
||||
'type_id': self.establishment_type.id,
|
||||
'is_publish': True,
|
||||
'slug': 'test-establishment-slug',
|
||||
'slug': 'test-establishment-slug'
|
||||
}
|
||||
|
||||
response = self.client.post('/api/back/establishments/', data=data, format='json')
|
||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||
|
||||
establishment = response.json()
|
||||
|
||||
response = self.client.get(f'/api/back/establishments/{establishment["id"]}/', format='json')
|
||||
response = self.client.get(f'/api/back/establishments/{self.establishment.id}/', format='json')
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
update_data = {
|
||||
'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)
|
||||
|
||||
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)
|
||||
|
||||
|
||||
|
|
@ -96,39 +136,45 @@ class EmployeeTests(BaseTestCase):
|
|||
class ChildTestCase(BaseTestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.establishment = Establishment.objects.create(
|
||||
name="Test establishment",
|
||||
establishment_type_id=self.establishment_type.id,
|
||||
is_publish=True,
|
||||
slug="test"
|
||||
)
|
||||
|
||||
|
||||
# Test childs
|
||||
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')
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
def test_post(self):
|
||||
data = {
|
||||
'email': "test@test.com",
|
||||
'establishment': self.establishment.id
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
def test_patch(self):
|
||||
self.test_post()
|
||||
|
||||
update_data = {
|
||||
'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)
|
||||
|
||||
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)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -75,10 +75,15 @@ class IsStandardUser(IsGuest):
|
|||
def has_object_permission(self, request, view, obj):
|
||||
# Read permissions are allowed to any request
|
||||
rules = [
|
||||
obj.user == request.user and obj.user.email_confirmed,
|
||||
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)
|
||||
|
||||
|
||||
|
|
@ -114,7 +119,7 @@ class IsCountryAdmin(IsStandardUser):
|
|||
.first() # 'Comments moderator'
|
||||
|
||||
rules = [
|
||||
obj.user != request.user and
|
||||
# obj.user != request.user and
|
||||
UserRole.objects.filter(user=request.user, role=role).exists(),
|
||||
super().has_object_permission(request, view, obj),
|
||||
]
|
||||
|
|
@ -149,7 +154,8 @@ class IsEstablishmentManager(IsStandardUser):
|
|||
|
||||
rules = [
|
||||
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)
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -33,8 +33,8 @@ def validate_tjson(value):
|
|||
code='invalid_json',
|
||||
params={'value': value},
|
||||
)
|
||||
lang_count = Language.objects.filter(locale__in=value.keys()).count()
|
||||
if lang_count != len(value.keys()):
|
||||
is_lang = Language.objects.filter(locale__in=value.keys()).exists()
|
||||
if not is_lang:
|
||||
raise exceptions.ValidationError(
|
||||
'invalid_translated_keys',
|
||||
code='invalid_translated_keys',
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user