52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
from django.test import TestCase
|
|
from assignments.models import Assignment
|
|
|
|
from books.factories import BookFactory, ContentBlockFactory
|
|
from books.models.contentblock import ContentBlock
|
|
from core.logger import get_logger
|
|
from surveys.models import Survey
|
|
from users.services import create_users
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
class DuplicateContentsTestCase(TestCase):
|
|
def setUp(self) -> None:
|
|
create_users()
|
|
_, _, self.module, chapter, _ = BookFactory.create_default_structure()
|
|
text = {"type": "text_block", "value": {"text": "Hallo"}}
|
|
assignment = {
|
|
"type": "assignment",
|
|
"value": {"title": "Hello", "assignment": "Assignment"},
|
|
}
|
|
survey = {"type": "survey", "value": {"title": "Survey Title", "data": "null"}}
|
|
self.content_block = ContentBlockFactory.create(
|
|
parent=chapter,
|
|
module=self.module,
|
|
title="Another content block",
|
|
type="task",
|
|
contents=[text, assignment, survey],
|
|
)
|
|
self.assignment = Assignment.objects.first()
|
|
|
|
def test_duplicate_entities(self):
|
|
self.assertEqual(
|
|
self.content_block.contents[1].value["assignment_id"], self.assignment
|
|
)
|
|
self.assertEqual(
|
|
self.content_block.contents[1].value["assignment_id"].title, "Hello"
|
|
)
|
|
self.assertEqual(Assignment.objects.count(), 1)
|
|
self.assertEqual(Survey.objects.count(), 1)
|
|
self.content_block.duplicate_attached_entities()
|
|
self.assertEqual(Assignment.objects.count(), 2)
|
|
self.assertEqual(Survey.objects.count(), 2)
|
|
new_assignment = Assignment.objects.latest("id")
|
|
new_survey = Survey.objects.latest("id")
|
|
content_block = ContentBlock.objects.get(id=self.content_block.id)
|
|
self.assertEqual(len(content_block.contents), 3)
|
|
self.assertEqual(
|
|
content_block.contents[1].value["assignment_id"], new_assignment
|
|
)
|
|
self.assertEqual(content_block.contents[2].value["survey_id"], new_survey)
|