fix tests

This commit is contained in:
Dmitriy Kuzmenko 2019-10-24 22:19:59 +03:00
parent 81cdaa5c89
commit 66ddfb455b
8 changed files with 91 additions and 66 deletions

View File

@ -9,6 +9,7 @@ from establishment.models import Establishment, EstablishmentType, Menu
from translation.models import Language
from account.models import Role, UserRole
from location.models import Country, Address, City, Region
from pytz import timezone as py_tz
class BaseTestCase(APITestCase):
@ -77,7 +78,8 @@ class EstablishmentBTests(BaseTestCase):
'name': 'Test establishment',
'type_id': self.establishment_type.id,
'is_publish': True,
'slug': 'test-establishment-slug'
'slug': 'test-establishment-slug',
'tz': py_tz('Europe/Moscow').zone
}
response = self.client.post('/api/back/establishments/', data=data, format='json')

View File

@ -1,14 +1,16 @@
# Create your tests here.
from http.cookies import SimpleCookie
from django.contrib.contenttypes.models import ContentType
from rest_framework.test import APITestCase
from django.contrib.contenttypes.models import ContentType
from django.urls import reverse
from rest_framework import status
from rest_framework.test import APITestCase
from account.models import User
from establishment.models import Establishment, EstablishmentType
from favorites.models import Favorites
from establishment.models import Establishment, EstablishmentType, EstablishmentSubType
from news.models import NewsType, News
from datetime import datetime
class BaseTestCase(APITestCase):
@ -17,38 +19,57 @@ class BaseTestCase(APITestCase):
self.username = 'sedragurda'
self.password = 'sedragurdaredips19'
self.email = 'sedragurda@desoz.com'
self.user = User.objects.create_user(username=self.username, email=self.email, password=self.password)
tokkens = User.create_jwt_tokens(self.user)
self.client.cookies = SimpleCookie({'access_token': tokkens.get('access_token'),
'refresh_token': tokkens.get('refresh_token')})
self.user = User.objects.create_user(
username=self.username,
email=self.email,
password=self.password
)
self.test_news_type = NewsType.objects.create(name="Test news type")
self.test_news = News.objects.create(created_by=self.user, modified_by=self.user, title={"en-GB": "Test news"},
news_type=self.test_news_type,
description={"en-GB": "Description test news"},
start="2020-12-03 12:00:00", end="2020-12-13 12:00:00",
state=News.PUBLISHED, slug='test-news')
tokens = User.create_jwt_tokens(self.user)
self.client.cookies = SimpleCookie(
{'access_token': tokens.get('access_token'),
'refresh_token': tokens.get('refresh_token')})
self.test_content_type = ContentType.objects.get(app_label="news", model="news")
self.test_news_type = NewsType.objects.create(
name="Test news type",
)
self.test_news = News.objects.create(
created_by=self.user,
modified_by=self.user,
title={"en-GB": "Test news"},
news_type=self.test_news_type,
description={"en-GB": "Description test news"},
start=datetime.fromisoformat("2020-12-03 12:00:00"),
end=datetime.fromisoformat("2020-12-03 12:00:00"),
state=News.PUBLISHED,
slug='test-news'
)
self.test_favorites = Favorites.objects.create(user=self.user, content_type=self.test_content_type,
object_id=self.test_news.id)
self.test_content_type = ContentType.objects.get(
app_label="news", model="news")
self.test_establishment_type = EstablishmentType.objects.create(name={"en-GB": "test establishment type"},
use_subtypes=False)
self.test_favorites = Favorites.objects.create(
user=self.user, content_type=self.test_content_type,
object_id=self.test_news.id)
self.test_establishment = Establishment.objects.create(name="test establishment",
description={"en-GB": "description of test establishment"},
establishment_type=self.test_establishment_type,
is_publish=True)
self.test_establishment_type = EstablishmentType.objects.create(
name={"en-GB": "test establishment type"},
use_subtypes=False)
self.test_establishment = Establishment.objects.create(
name="test establishment",
description={"en-GB": "description of test establishment"},
establishment_type=self.test_establishment_type,
is_publish=True)
# value for GenericRelation(reverse side) field must be iterable
# value for GenericRelation(reverse side) field must be assigned through "set" method of field
# value for GenericRelation(reverse side) field must be assigned through
# "set" method of field
self.test_establishment.favorites.set([self.test_favorites])
class FavoritesTestCase(BaseTestCase):
def test_func(self):
response = self.client.get("/api/web/favorites/establishments/")
print(response.json())
url = reverse('web:favorites:establishment-list')
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)

View File

@ -18,11 +18,14 @@ class BaseTestCase(APITestCase):
self.username = 'sedragurda'
self.password = 'sedragurdaredips19'
self.email = 'sedragurda@desoz.com'
self.user = User.objects.create_user(username=self.username, email=self.email, password=self.password)
#get tokkens
tokkens = User.create_jwt_tokens(self.user)
self.client.cookies = SimpleCookie({'access_token': tokkens.get('access_token'),
'refresh_token': tokkens.get('refresh_token')})
self.user = User.objects.create_user(
username=self.username, email=self.email, password=self.password)
# get tokens
tokens = User.create_jwt_tokens(self.user)
self.client.cookies = SimpleCookie(
{'access_token': tokens.get('access_token'),
'refresh_token': tokens.get('refresh_token')})
self.test_news_type = NewsType.objects.create(name="Test news type")
self.lang = Language.objects.get(
@ -46,21 +49,25 @@ class BaseTestCase(APITestCase):
)
user_role.save()
self.test_news = News.objects.create(created_by=self.user, modified_by=self.user,
title={"en-GB": "Test news"},
news_type=self.test_news_type,
description={"en-GB": "Description test news"},
start=datetime.now() + timedelta(hours=-2),
end=datetime.now() + timedelta(hours=2),
state=News.PUBLISHED, slug='test-news-slug',
country=self.country_ru)
self.test_news = News.objects.create(
created_by=self.user, modified_by=self.user,
title={"en-GB": "Test news"},
news_type=self.test_news_type,
description={"en-GB": "Description test news"},
start=datetime.now() + timedelta(hours=-2),
end=datetime.now() + timedelta(hours=2),
state=News.PUBLISHED,
slug='test-news-slug',
country=self.country_ru,
)
class NewsTestCase(BaseTestCase):
def setUp(self):
super().setUp()
def test_web_news(self):
response = self.client.get("/api/web/news/")
response = self.client.get(reverse('web:news:list'))
self.assertEqual(response.status_code, status.HTTP_200_OK)
response = self.client.get(f"/api/web/news/slug/{self.test_news.slug}/")

View File

@ -8,7 +8,7 @@ app_name = 'news'
urlpatterns = [
path('', views.NewsBackOfficeLCView.as_view(), name='list-create'),
path('<int:pk>/', views.NewsBackOfficeRUDView.as_view(),
name='gallery-retrieve-update-destroy'),
name='retrieve-update-destroy'),
path('<int:pk>/gallery/', views.NewsBackOfficeGalleryListView.as_view(),
name='gallery-list'),
path('<int:pk>/gallery/<int:image_id>/', views.NewsBackOfficeGalleryCreateDestroyView.as_view(),

View File

@ -20,19 +20,28 @@ class NewsMixinView:
def get_queryset(self, *args, **kwargs):
from django.conf import settings
"""Override get_queryset method."""
qs = models.News.objects.published().with_base_related() \
.order_by('-is_highlighted', '-created')
country_code = self.request.country_code
if country_code and country_code != 'www' and country_code != 'main':
return qs.by_country_code(self.request.country_code)
else:
if settings.HARDCODED_INTERNATIONAL_NEWS_IDS:
# Temporary stub for international news logic
# (по договорённости с заказчиком на демонстрации 4 ноября здесь будет 6 фиксированных новостей)
# TODO replace this stub with actual logic
return models.News.objects.filter(id__in=settings.HARDCODED_INTERNATIONAL_NEWS_IDS)
else:
if country_code:
# temp code
# Temporary stub for international news logic
# (по договорённости с заказчиком на демонстрации 4 ноября
# здесь будет 6 фиксированных новостей)
# TODO replace this stub with actual logic
if hasattr(settings, 'HARDCODED_INTERNATIONAL_NEWS_IDS'):
if country_code and country_code != 'www' and country_code != 'main':
qs = qs.by_country_code(country_code)
else:
qs = models.News.objects.filter(
id__in=settings.HARDCODED_INTERNATIONAL_NEWS_IDS)
return qs
# temp code
qs = qs.by_country_code(country_code)
return qs
class NewsListView(NewsMixinView, generics.ListAPIView):

View File

@ -27,7 +27,7 @@ class BaseTestCase(APITestCase):
self.client.cookies = SimpleCookie(
{'access_token': tokkens.get('access_token'),
'refresh_token': tokkens.get('refresh_token'),
'locale': "en"
'locale': "en-GB"
})
@ -58,12 +58,11 @@ class TranslateFieldTests(BaseTestCase):
def test_model_field(self):
self.assertTrue(hasattr(self.news_item, "title_translated"))
def test_read_locale(self):
response = self.client.get(f"/api/web/news/slug/{self.news_item.slug}/", format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
news_data = response.json()
print(news_data)
self.assertIn("title_translated", news_data)
self.assertIn("Test news item", news_data['title_translated'])

View File

@ -31,14 +31,6 @@ services:
# Redis
redis:
image: redis:2.8.23
ports:
- "6379:6379"
# RabbitMQ
#rabbitmq:
# image: rabbitmq:latest
# ports:
# - "5672:5672"
# Celery
worker:

View File

@ -88,8 +88,3 @@ ELASTICSEARCH_INDEX_NAMES = {
TESTING = sys.argv[1:2] == ['test']
if TESTING:
ELASTICSEARCH_INDEX_NAMES = {}
# TMP ( TODO remove it later)
# Временный хардкод для демонстрации 4 ноября, потом удалить!
HARDCODED_INTERNATIONAL_NEWS_IDS = [8, 9, 10, 11, 15, 17]