From ecef1a217a59196d166361f76bb340b1af3b2a8f Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Tue, 10 Dec 2019 22:10:37 +0300 Subject: [PATCH] fix some test --- apps/favorites/tests.py | 3 ++- apps/news/migrations/0039_news_slugs.py | 2 ++ apps/news/serializers.py | 2 +- apps/news/tests.py | 13 +++++++------ apps/utils/tests/tests_translated.py | 5 +++-- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/apps/favorites/tests.py b/apps/favorites/tests.py index 5f0a2fcd..22953133 100644 --- a/apps/favorites/tests.py +++ b/apps/favorites/tests.py @@ -42,8 +42,9 @@ class BaseTestCase(APITestCase): start=datetime.fromisoformat("2020-12-03 12:00:00"), end=datetime.fromisoformat("2020-12-03 12:00:00"), 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( app_label="news", model="news") diff --git a/apps/news/migrations/0039_news_slugs.py b/apps/news/migrations/0039_news_slugs.py index e8b996c8..cc9a3194 100644 --- a/apps/news/migrations/0039_news_slugs.py +++ b/apps/news/migrations/0039_news_slugs.py @@ -2,6 +2,7 @@ import django.contrib.postgres.fields.hstore from django.db import migrations +from django.contrib.postgres.operations import HStoreExtension def migrate_slugs(apps, schemaeditor): News = apps.get_model('news', 'News') @@ -18,6 +19,7 @@ class Migration(migrations.Migration): ] operations = [ + HStoreExtension(), migrations.AddField( model_name='news', name='slugs', diff --git a/apps/news/serializers.py b/apps/news/serializers.py index 12b1faf6..da3ea2df 100644 --- a/apps/news/serializers.py +++ b/apps/news/serializers.py @@ -179,7 +179,7 @@ class NewsBackOfficeBaseSerializer(NewsBaseSerializer): def validate(self, attrs): 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.')}) return attrs diff --git a/apps/news/tests.py b/apps/news/tests.py index 40f47312..42c4a694 100644 --- a/apps/news/tests.py +++ b/apps/news/tests.py @@ -66,10 +66,11 @@ class BaseTestCase(APITestCase): start=datetime.now() + timedelta(hours=-2), end=datetime.now() + timedelta(hours=2), state=News.PUBLISHED, - slug='test-news-slug', + slugs={'en-GB': 'test-news-slug'}, country=self.country_ru, site=self.site_ru ) + self.slug = next(iter(self.test_news.slugs.values())) class NewsTestCase(BaseTestCase): @@ -84,7 +85,7 @@ class NewsTestCase(BaseTestCase): "start": datetime.now() + timedelta(hours=-2), "end": datetime.now() + timedelta(hours=2), "state": News.PUBLISHED, - "slug": 'test-news-slug_post', + "slugs": {'en-GB': 'test-news-slug_post'}, "country_id": self.country_ru.id, "site_id": self.site_ru.id } @@ -97,7 +98,7 @@ class NewsTestCase(BaseTestCase): 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}/") + response = self.client.get(f"/api/web/news/slug/{self.slug}/") self.assertEqual(response.status_code, status.HTTP_200_OK) response = self.client.get("/api/web/news/types/") @@ -117,7 +118,7 @@ class NewsTestCase(BaseTestCase): data = { 'id': self.test_news.id, 'description': {"ru-RU": "Description test news!"}, - 'slug': self.test_news.slug, + 'slugs': self.test_news.slugs, 'start': self.test_news.start, 'news_type_id': self.test_news.news_type_id, 'country_id': self.country_ru.id, @@ -133,10 +134,10 @@ class NewsTestCase(BaseTestCase): "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) - 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) diff --git a/apps/utils/tests/tests_translated.py b/apps/utils/tests/tests_translated.py index 6249ebd1..6ddcd1e7 100644 --- a/apps/utils/tests/tests_translated.py +++ b/apps/utils/tests/tests_translated.py @@ -56,17 +56,18 @@ class TranslateFieldTests(BaseTestCase): start=datetime.now(pytz.utc) + timedelta(hours=-13), end=datetime.now(pytz.utc) + timedelta(hours=13), news_type=self.news_type, - slug='test', + slugs={'en-GB': 'test'}, state=News.PUBLISHED, country=self.country_ru, ) + self.slug = next(iter(self.news_item.slugs.values())) self.news_item.save() 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') + response = self.client.get(f"/api/web/news/slug/{self.slug}/", format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) news_data = response.json() self.assertIn("title_translated", news_data)