187 lines
6.1 KiB
Python
187 lines
6.1 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):
|
|
# # todo: find out how to create contents for tests, then re-enable
|
|
# # 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)
|