fix some test

This commit is contained in:
Kuroshini 2019-12-10 22:10:37 +03:00
parent 377d8196dc
commit ecef1a217a
5 changed files with 15 additions and 10 deletions

View File

@ -42,8 +42,9 @@ class BaseTestCase(APITestCase):
start=datetime.fromisoformat("2020-12-03 12:00:00"), start=datetime.fromisoformat("2020-12-03 12:00:00"),
end=datetime.fromisoformat("2020-12-03 12:00:00"), end=datetime.fromisoformat("2020-12-03 12:00:00"),
state=News.PUBLISHED, state=News.PUBLISHED,
slug='test-news' slugs={'en-GB': 'test-news'}
) )
self.slug = next(iter(self.test_news.slugs.values()))
self.test_content_type = ContentType.objects.get( self.test_content_type = ContentType.objects.get(
app_label="news", model="news") app_label="news", model="news")

View File

@ -2,6 +2,7 @@
import django.contrib.postgres.fields.hstore import django.contrib.postgres.fields.hstore
from django.db import migrations from django.db import migrations
from django.contrib.postgres.operations import HStoreExtension
def migrate_slugs(apps, schemaeditor): def migrate_slugs(apps, schemaeditor):
News = apps.get_model('news', 'News') News = apps.get_model('news', 'News')
@ -18,6 +19,7 @@ class Migration(migrations.Migration):
] ]
operations = [ operations = [
HStoreExtension(),
migrations.AddField( migrations.AddField(
model_name='news', model_name='news',
name='slugs', name='slugs',

View File

@ -179,7 +179,7 @@ class NewsBackOfficeBaseSerializer(NewsBaseSerializer):
def validate(self, attrs): def validate(self, attrs):
slugs = attrs.get('slugs', {}) slugs = attrs.get('slugs', {})
if models.News.objects.filter(slugs__values__contains=[slugs.values()]).exists(): if models.News.objects.filter(slugs__values__contains=list(slugs.values())).exists():
raise serializers.ValidationError({'slugs': _('News with this slug already exists.')}) raise serializers.ValidationError({'slugs': _('News with this slug already exists.')})
return attrs return attrs

View File

@ -66,10 +66,11 @@ class BaseTestCase(APITestCase):
start=datetime.now() + timedelta(hours=-2), start=datetime.now() + timedelta(hours=-2),
end=datetime.now() + timedelta(hours=2), end=datetime.now() + timedelta(hours=2),
state=News.PUBLISHED, state=News.PUBLISHED,
slug='test-news-slug', slugs={'en-GB': 'test-news-slug'},
country=self.country_ru, country=self.country_ru,
site=self.site_ru site=self.site_ru
) )
self.slug = next(iter(self.test_news.slugs.values()))
class NewsTestCase(BaseTestCase): class NewsTestCase(BaseTestCase):
@ -84,7 +85,7 @@ class NewsTestCase(BaseTestCase):
"start": datetime.now() + timedelta(hours=-2), "start": datetime.now() + timedelta(hours=-2),
"end": datetime.now() + timedelta(hours=2), "end": datetime.now() + timedelta(hours=2),
"state": News.PUBLISHED, "state": News.PUBLISHED,
"slug": 'test-news-slug_post', "slugs": {'en-GB': 'test-news-slug_post'},
"country_id": self.country_ru.id, "country_id": self.country_ru.id,
"site_id": self.site_ru.id "site_id": self.site_ru.id
} }
@ -97,7 +98,7 @@ class NewsTestCase(BaseTestCase):
response = self.client.get(reverse('web:news:list')) response = self.client.get(reverse('web:news:list'))
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
response = self.client.get(f"/api/web/news/slug/{self.test_news.slug}/") response = self.client.get(f"/api/web/news/slug/{self.slug}/")
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
response = self.client.get("/api/web/news/types/") response = self.client.get("/api/web/news/types/")
@ -117,7 +118,7 @@ class NewsTestCase(BaseTestCase):
data = { data = {
'id': self.test_news.id, 'id': self.test_news.id,
'description': {"ru-RU": "Description test news!"}, 'description': {"ru-RU": "Description test news!"},
'slug': self.test_news.slug, 'slugs': self.test_news.slugs,
'start': self.test_news.start, 'start': self.test_news.start,
'news_type_id': self.test_news.news_type_id, 'news_type_id': self.test_news.news_type_id,
'country_id': self.country_ru.id, 'country_id': self.country_ru.id,
@ -133,10 +134,10 @@ class NewsTestCase(BaseTestCase):
"object_id": self.test_news.id "object_id": self.test_news.id
} }
response = self.client.post(f'/api/web/news/slug/{self.test_news.slug}/favorites/', data=data) response = self.client.post(f'/api/web/news/slug/{self.slug}/favorites/', data=data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
response = self.client.delete(f'/api/web/news/slug/{self.test_news.slug}/favorites/', format='json') response = self.client.delete(f'/api/web/news/slug/{self.slug}/favorites/', format='json')
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)

View File

@ -56,17 +56,18 @@ class TranslateFieldTests(BaseTestCase):
start=datetime.now(pytz.utc) + timedelta(hours=-13), start=datetime.now(pytz.utc) + timedelta(hours=-13),
end=datetime.now(pytz.utc) + timedelta(hours=13), end=datetime.now(pytz.utc) + timedelta(hours=13),
news_type=self.news_type, news_type=self.news_type,
slug='test', slugs={'en-GB': 'test'},
state=News.PUBLISHED, state=News.PUBLISHED,
country=self.country_ru, country=self.country_ru,
) )
self.slug = next(iter(self.news_item.slugs.values()))
self.news_item.save() self.news_item.save()
def test_model_field(self): def test_model_field(self):
self.assertTrue(hasattr(self.news_item, "title_translated")) self.assertTrue(hasattr(self.news_item, "title_translated"))
def test_read_locale(self): def test_read_locale(self):
response = self.client.get(f"/api/web/news/slug/{self.news_item.slug}/", format='json') response = self.client.get(f"/api/web/news/slug/{self.slug}/", format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
news_data = response.json() news_data = response.json()
self.assertIn("title_translated", news_data) self.assertIn("title_translated", news_data)