100 lines
3.8 KiB
Python
100 lines
3.8 KiB
Python
from django.urls import reverse
|
|
from http.cookies import SimpleCookie
|
|
|
|
from rest_framework.test import APITestCase
|
|
from rest_framework import status
|
|
from datetime import datetime, timedelta
|
|
|
|
from news.models import NewsType, News
|
|
from account.models import User, Role, UserRole
|
|
from translation.models import Language
|
|
from location.models import Country
|
|
# Create your tests here.
|
|
|
|
|
|
class BaseTestCase(APITestCase):
|
|
|
|
def setUp(self):
|
|
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.test_news_type = NewsType.objects.create(name="Test news type")
|
|
|
|
self.lang = Language.objects.create(
|
|
title='Russia',
|
|
locale='ru-RU'
|
|
)
|
|
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()
|
|
|
|
role = Role.objects.create(
|
|
role=Role.CONTENT_PAGE_MANAGER,
|
|
country=self.country_ru
|
|
)
|
|
role.save()
|
|
|
|
user_role = UserRole.objects.create(
|
|
user=self.user,
|
|
role=role
|
|
)
|
|
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"},
|
|
playlist=1, 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/")
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.get(f"/api/web/news/slug/{self.test_news.slug}/")
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
response = self.client.get("/api/web/news/types/")
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
def test_news_back_detail(self):
|
|
response = self.client.get(f"/api/back/news/{self.test_news.id}/")
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
def test_news_list_back(self):
|
|
response = self.client.get("/api/back/news/")
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
|
|
def test_news_back_detail_put(self):
|
|
# retrieve-update-destroy
|
|
url = reverse('back:news:retrieve-update-destroy', kwargs={'pk': self.test_news.id})
|
|
data = {
|
|
'id': self.test_news.id,
|
|
'description': {"en-GB": "Description test news!"},
|
|
'slug': self.test_news.slug,
|
|
'start': self.test_news.start,
|
|
'playlist': self.test_news.playlist,
|
|
'news_type_id':self.test_news.news_type_id,
|
|
'country_id': self.country_ru.id
|
|
}
|
|
|
|
response = self.client.put(url, data=data, format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK) |