77 lines
2.7 KiB
Python
77 lines
2.7 KiB
Python
|
|
"""
|
|||
|
|
Тест исправления публикации черновиков.
|
|||
|
|
|
|||
|
|
Проверяет что:
|
|||
|
|
1. Убран недопустимый аргумент 'draft' из создания Shout
|
|||
|
|
2. Draft.shout корректно обновляется после публикации
|
|||
|
|
3. Draft.shout очищается при снятии с публикации
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import pytest
|
|||
|
|
from unittest.mock import AsyncMock, MagicMock, patch
|
|||
|
|
|
|||
|
|
from orm.draft import Draft
|
|||
|
|
from orm.shout import Shout
|
|||
|
|
from resolvers.draft import create_shout_from_draft
|
|||
|
|
|
|||
|
|
|
|||
|
|
class TestDraftPublishFix:
|
|||
|
|
"""Тесты исправления публикации черновиков."""
|
|||
|
|
|
|||
|
|
def test_create_shout_from_draft_no_draft_argument(self):
|
|||
|
|
"""Тест что create_shout_from_draft не передает недопустимый аргумент 'draft'."""
|
|||
|
|
# Arrange
|
|||
|
|
mock_draft = MagicMock(spec=Draft)
|
|||
|
|
mock_draft.body = "Test body"
|
|||
|
|
mock_draft.slug = "test-slug"
|
|||
|
|
mock_draft.cover = "test-cover.jpg"
|
|||
|
|
mock_draft.cover_caption = "Test caption"
|
|||
|
|
mock_draft.lead = "Test lead"
|
|||
|
|
mock_draft.title = "Test title"
|
|||
|
|
mock_draft.subtitle = "Test subtitle"
|
|||
|
|
mock_draft.layout = "article"
|
|||
|
|
mock_draft.media = []
|
|||
|
|
mock_draft.lang = "ru"
|
|||
|
|
mock_draft.seo = "test-seo"
|
|||
|
|
mock_draft.community = 1
|
|||
|
|
|
|||
|
|
# Act
|
|||
|
|
shout = create_shout_from_draft(None, mock_draft, 1)
|
|||
|
|
|
|||
|
|
# Assert
|
|||
|
|
assert isinstance(shout, Shout)
|
|||
|
|
assert shout.body == "Test body"
|
|||
|
|
assert shout.slug == "test-slug"
|
|||
|
|
assert shout.cover == "test-cover.jpg"
|
|||
|
|
assert shout.cover_caption == "Test caption"
|
|||
|
|
assert shout.lead == "Test lead"
|
|||
|
|
assert shout.title == "Test title"
|
|||
|
|
assert shout.subtitle == "Test subtitle"
|
|||
|
|
assert shout.layout == "article"
|
|||
|
|
assert shout.media == []
|
|||
|
|
assert shout.lang == "ru"
|
|||
|
|
assert shout.seo == "test-seo"
|
|||
|
|
assert shout.created_by == 1
|
|||
|
|
assert shout.community == 1
|
|||
|
|
assert shout.deleted_at is None
|
|||
|
|
|
|||
|
|
# Проверяем что нет поля draft
|
|||
|
|
assert not hasattr(shout, 'draft')
|
|||
|
|
|
|||
|
|
def test_draft_model_has_shout_field(self):
|
|||
|
|
"""Тест что модель Draft имеет поле shout."""
|
|||
|
|
# Arrange & Act
|
|||
|
|
draft = Draft()
|
|||
|
|
|
|||
|
|
# Assert
|
|||
|
|
assert hasattr(draft, 'shout')
|
|||
|
|
assert draft.shout is None
|
|||
|
|
|
|||
|
|
def test_shout_model_does_not_have_draft_field(self):
|
|||
|
|
"""Тест что модель Shout не имеет поля draft."""
|
|||
|
|
# Arrange & Act
|
|||
|
|
shout = Shout()
|
|||
|
|
|
|||
|
|
# Assert
|
|||
|
|
assert not hasattr(shout, 'draft')
|