Merge branch 'feature/add-base-attributes-autouse' into 'develop'
Feature/add base attributes autouse See merge request gm/gm-backend!24
This commit is contained in:
commit
e0f71d2646
|
|
@ -7,6 +7,9 @@ from establishment.serializers import (
|
||||||
EstablishmentBaseSerializer, PlateSerializer, ContactEmailsSerializer,
|
EstablishmentBaseSerializer, PlateSerializer, ContactEmailsSerializer,
|
||||||
ContactPhonesSerializer, SocialNetworkRelatedSerializers, EstablishmentDetailSerializer
|
ContactPhonesSerializer, SocialNetworkRelatedSerializers, EstablishmentDetailSerializer
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from utils.decorators import with_base_attributes
|
||||||
|
|
||||||
from main.models import Currency
|
from main.models import Currency
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -123,7 +126,10 @@ class ContactEmailBackSerializers(PlateSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: test decorator
|
||||||
|
@with_base_attributes
|
||||||
class EmployeeBackSerializers(serializers.ModelSerializer):
|
class EmployeeBackSerializers(serializers.ModelSerializer):
|
||||||
|
|
||||||
"""Social network serializers."""
|
"""Social network serializers."""
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Employee
|
model = models.Employee
|
||||||
|
|
@ -131,4 +137,5 @@ class EmployeeBackSerializers(serializers.ModelSerializer):
|
||||||
'id',
|
'id',
|
||||||
'user',
|
'user',
|
||||||
'name'
|
'name'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
21
apps/utils/decorators.py
Normal file
21
apps/utils/decorators.py
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
|
||||||
|
def with_base_attributes(cls):
|
||||||
|
|
||||||
|
def validate(self, data):
|
||||||
|
user = None
|
||||||
|
request = self.context.get("request")
|
||||||
|
|
||||||
|
if request and hasattr(request, "user"):
|
||||||
|
user = request.user
|
||||||
|
|
||||||
|
if user is not None:
|
||||||
|
data.update({'modified_by': user})
|
||||||
|
|
||||||
|
if not self.instance:
|
||||||
|
data.update({'created_by': user})
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
setattr(cls, "validate", validate)
|
||||||
|
|
||||||
|
return cls
|
||||||
|
|
@ -8,6 +8,8 @@ from http.cookies import SimpleCookie
|
||||||
from account.models import User
|
from account.models import User
|
||||||
from news.models import News, NewsType
|
from news.models import News, NewsType
|
||||||
|
|
||||||
|
from establishment.models import Establishment, EstablishmentType, Employee
|
||||||
|
|
||||||
|
|
||||||
class BaseTestCase(APITestCase):
|
class BaseTestCase(APITestCase):
|
||||||
|
|
||||||
|
|
@ -28,6 +30,12 @@ class BaseTestCase(APITestCase):
|
||||||
'locale': "en"
|
'locale': "en"
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
class TranslateFieldTests(BaseTestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super().setUp()
|
||||||
|
|
||||||
self.news_type = NewsType.objects.create(name="Test news type")
|
self.news_type = NewsType.objects.create(name="Test news type")
|
||||||
|
|
||||||
self.news_item = News.objects.create(
|
self.news_item = News.objects.create(
|
||||||
|
|
@ -45,15 +53,9 @@ class BaseTestCase(APITestCase):
|
||||||
news_type=self.news_type
|
news_type=self.news_type
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class TranslateFieldModel(BaseTestCase):
|
|
||||||
|
|
||||||
def test_model_field(self):
|
def test_model_field(self):
|
||||||
self.assertIsNotNone(getattr(self.news_item, "title_translated", None))
|
self.assertIsNotNone(getattr(self.news_item, "title_translated", None))
|
||||||
|
|
||||||
|
|
||||||
class TranslateFieldReview(BaseTestCase):
|
|
||||||
|
|
||||||
def test_read_locale(self):
|
def test_read_locale(self):
|
||||||
response = self.client.get(f"/api/web/news/{self.news_item.id}/", format='json')
|
response = self.client.get(f"/api/web/news/{self.news_item.id}/", format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
@ -62,3 +64,57 @@ class TranslateFieldReview(BaseTestCase):
|
||||||
self.assertIn("title_translated", news_data)
|
self.assertIn("title_translated", news_data)
|
||||||
|
|
||||||
self.assertEqual(news_data['title_translated'], "Test news item")
|
self.assertEqual(news_data['title_translated'], "Test news item")
|
||||||
|
|
||||||
|
|
||||||
|
class BaseAttributeTests(BaseTestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super().setUp()
|
||||||
|
|
||||||
|
self.establishment_type = EstablishmentType.objects.create(name="Test establishment type")
|
||||||
|
self.establishment = Establishment.objects.create(
|
||||||
|
name="Test establishment",
|
||||||
|
establishment_type_id=self.establishment_type.id,
|
||||||
|
is_publish=True
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_base_attr_api(self):
|
||||||
|
data = {
|
||||||
|
'user': self.user.id,
|
||||||
|
'name': 'Test name'
|
||||||
|
}
|
||||||
|
|
||||||
|
response = self.client.post('/api/back/establishments/employees/', data=data)
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
|
|
||||||
|
response_data = response.json()
|
||||||
|
self.assertIn("id", response_data)
|
||||||
|
|
||||||
|
employee = Employee.objects.get(id=response_data['id'])
|
||||||
|
|
||||||
|
self.assertEqual(self.user, employee.created_by)
|
||||||
|
self.assertEqual(self.user, employee.modified_by)
|
||||||
|
|
||||||
|
modify_user = User.objects.create_user(
|
||||||
|
username='sedragurda2',
|
||||||
|
password='sedragurdaredips192',
|
||||||
|
email='sedragurda2@desoz.com',
|
||||||
|
)
|
||||||
|
|
||||||
|
modify_tokkens = User.create_jwt_tokens(modify_user)
|
||||||
|
self.client.cookies = SimpleCookie(
|
||||||
|
{'access_token': modify_tokkens.get('access_token'),
|
||||||
|
'refresh_token': modify_tokkens.get('refresh_token'),
|
||||||
|
'locale': "en"
|
||||||
|
})
|
||||||
|
|
||||||
|
update_data = {
|
||||||
|
'name': 'Test new name'
|
||||||
|
}
|
||||||
|
|
||||||
|
response = self.client.patch('/api/back/establishments/employees/1/', data=update_data)
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
employee.refresh_from_db()
|
||||||
|
self.assertEqual(modify_user, employee.modified_by)
|
||||||
|
self.assertEqual(self.user, employee.created_by)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user