skillbox/server/books/tests/test_duplicate_content_bloc...

186 lines
5.8 KiB
Python

from graphql_relay import to_global_id
from wagtail.core.fields import StreamField
from wagtail.tests.utils.form_data import streamfield, nested_form_data, rich_text
from books.factories import ContentBlockFactory, ModuleFactory, ChapterFactory
from books.models import ContentBlock
from core.tests.base_test import SkillboxTestCase
DUPLICATE_CONTENT_BLOCK_MUTATION = """
mutation DuplicateContentBlockMutation($input: DuplicateContentBlockInput!) {
duplicateContentBlock(input: $input) {
contentBlock {
id
}
}
}
"""
CONTENT_BLOCK_QUERY = """
query ContentBlockQuery($slug: String!) {
module(slug: $slug) {
chapters {
id
contentBlocks {
id
title
type
}
}
}
}
"""
class DuplicateContentBlockTestCase(SkillboxTestCase):
def setUp(self) -> None:
self.createDefault()
#
self.slug = 'module'
self.module = ModuleFactory(slug=self.slug)
self.chapter = ChapterFactory(parent=self.module)
self.content_block = ContentBlock(
type=ContentBlock.NORMAL,
title='Title',
)
self.chapter.add_child(instance=self.content_block)
def test_duplicate_content_block(self):
result = self.get_client().execute(CONTENT_BLOCK_QUERY, variables={
'slug': self.slug
})
self.assertIsNone(result.errors)
module = result.data.get('module')
chapter = module.get('chapters')[0]
content_blocks = chapter.get('contentBlocks')
self.assertEqual(len(content_blocks), 1)
self.assertEqual(ContentBlock.objects.count(), 1)
result = self.get_client().execute(DUPLICATE_CONTENT_BLOCK_MUTATION, variables={
'input': {
"id": to_global_id('ContentBlockNode', self.content_block.id)
}
})
self.assertIsNone(result.errors)
duplicate_content_block = result.data.get('duplicateContentBlock')
content_block = duplicate_content_block.get('contentBlock')
# self.assertEqual(content_block['title'], 'Title')
self.assertIsNotNone(content_block['id'])
result = self.get_client().execute(CONTENT_BLOCK_QUERY, variables={
'slug': self.slug
})
self.assertIsNone(result.errors)
module = result.data.get('module')
chapter = module.get('chapters')[0]
content_blocks = chapter.get('contentBlocks')
self.assertEqual(ContentBlock.objects.count(), 2)
self.assertEqual(len(content_blocks), 2)
self.assertTrue('Kopie' in content_blocks[0].get('title'))
self.assertTrue('Kopie' not in content_blocks[1].get('title'))
def test_duplicate_non_editable_contents(self):
# contents__0__text_block__text
nested_form_data({
'content': streamfield([
nested_form_data({
'text_block': [
('text', rich_text('Asdf'))
]
})
])
})
contents = [
nested_form_data({
'text_block': streamfield([
('text', 'Asdf')
])
}),
# {
# "type": "text_block",
# "value": {
# "text": "Asdf"
# },
# },
# {
# "type": "assignment",
# "value": {
# "title": "Ein Auftragstitel",
# "assignment": "Ein Auftrag",
# },
# },
# {
# "type": "image_block",
# "value": {
# "path": "/media/original_images/dummy_pZUH02q.jpg"
# },
# },
# {
# "type": "image_url_block",
# "value": {
# "title": "Asdf",
# "url": "http://localhost:8000/media/images/dummy_pZUH02q.max-165x165.jpg"
# },
# },
# {
# "type": "link_block",
# "value": {
# "text": "Asdf",
# "url": "https://iterativ.ch"
# },
# },
# {
# "type": "solution",
# "value": {
# "text": "Asdf",
# },
# },
# {
# "type": "video_block",
# "value": {
# "url": "https://www.youtube.com/watch?v=QxQBWR7sntI"
# },
# },
# {
# "type": "document_block",
# "value": {
# "url": "http://localhost:8000/media/images/dummy_pZUH02q.max-165x165.jpg"
# },
# },
# {
# "type": "infogram_block",
# "value": {
# "id": "4405271e-dbfb-407e-ac19-0a238cde393f",
# "title": "Gerät Internetnutzung Jungen"
# },
# },
# {
# "type": "thinglink_block",
# "value": {
# "id": "1314204266449076227"
# },
# },
# {
# "type": "subtitle",
# "value": {
# "text": "Subtitle"
# },
# },
# {
# "type": "instruction",
# "value": {
# "url": "http://localhost:8000/media/images/dummy_pZUH02q.max-165x165.jpg",
# "text": "Instruction",
# },
# },
# {
# "type": "module_room_slug",
# "value": {
# "title": "Raum",
# },
# },
]
self.content_block.contents = contents
self.assertTrue(False)