From 9e536e0224caed1a417c3e7635896bcf3e2ff0f3 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Wed, 21 Feb 2024 21:53:59 +0100 Subject: [PATCH] Add unit test for module and chapter highlights --- server/notes/tests/test_highlights.py | 124 ++++++++++++++++++++++++-- 1 file changed, 117 insertions(+), 7 deletions(-) diff --git a/server/notes/tests/test_highlights.py b/server/notes/tests/test_highlights.py index ddf79556..6c0ef487 100644 --- a/server/notes/tests/test_highlights.py +++ b/server/notes/tests/test_highlights.py @@ -3,9 +3,13 @@ from books.factories import ContentBlockFactory, ModuleFactory from books.models.contentblock import ContentBlock from graphql_relay import to_global_id +from core.logger import get_logger + pytestmark = pytest.mark.django_db -mutation = """ +logger = get_logger(__name__) + +highlight_fragment = """ fragment HighlightParts on HighlightNode { id contentIndex @@ -22,10 +26,18 @@ mutation = """ ... on Node { id } + ... on ModuleNode { + slug + id + } } } +""" +add_highlight_mutation = ( + highlight_fragment + + """ mutation AddHighlight($input: AddHighlightInput!) { addHighlight(input: $input) { __typename @@ -35,8 +47,22 @@ mutation = """ } } """ +) +add_content_highlight_mutation = ( + highlight_fragment + + """ + mutation AddContentHighlight($input: AddContentHighlightInput!) { + addContentHighlight(input: $input) { + __typename + highlight { + ...HighlightParts + } + } + } +""" +) -content_block_query = """ +fragment = """ fragment HighlightLegacyParts on HighlightNode { id contentIndex @@ -53,10 +79,17 @@ fragment HighlightLegacyParts on HighlightNode { ... on Node { id } + ... on ModuleNode { + slug + id + } } } +""" - +content_block_query = ( + fragment + + """ query ContentBlockQuery($id: ID!) { contentBlock(id: $id) { id @@ -66,18 +99,33 @@ fragment HighlightLegacyParts on HighlightNode { } } """ +) + +module_query = ( + fragment + + """ + query ModuleQuery($id: ID!) { + module(id: $id) { + id + highlights { + ...HighlightLegacyParts + } + } + } +""" +) @pytest.mark.usefixtures("create_users") class TestAddHighlight: - def test_add_highlight(self, teacher, get_client): + def test_add_highlight_in_content_block(self, teacher, get_client): module = ModuleFactory() content_block = ContentBlockFactory(module=module) client = get_client(teacher) # content_block = ContentBlock.objects.create(slug="slug", title="title") cid = to_global_id("ContentBlockNode", content_block.id) result = client.execute( - mutation, + add_content_highlight_mutation, variables={ "input": { "highlight": { @@ -95,7 +143,7 @@ class TestAddHighlight: ) assert result.errors is None - highlight = result.data.get("addHighlight").get("highlight") + highlight = result.data.get("addContentHighlight").get("highlight") assert highlight.get("text") == "Hallo" assert highlight.get("page").get("id") == cid @@ -104,6 +152,68 @@ class TestAddHighlight: assert result.errors is None content_block = result.data.get("contentBlock") assert content_block.get("id") == cid - print(content_block.get("highlights")[0]) assert content_block.get("highlights")[0].get("color") == "alpha" assert content_block.get("highlights")[0].get("page").get("id") == cid + + def test_add_highlight_in_content_block_without_uuid(self, teacher, get_client): + module = ModuleFactory() + content_block = ContentBlockFactory(module=module) + client = get_client(teacher) + # content_block = ContentBlock.objects.create(slug="slug", title="title") + cid = to_global_id("ContentBlockNode", content_block.id) + result = client.execute( + add_content_highlight_mutation, + variables={ + "input": { + "highlight": { + "page": cid, + "contentIndex": 0, + "paragraphIndex": 0, + "text": "Hallo", + "startPosition": 0, + "selectionLength": 10, + "color": "alpha", + } + } + }, + ) + assert result.errors is not None + + def test_add_highlight_in_instrument(self, teacher, get_client): + assert 1 == 0 + + def test_add_highlight_in_module(self, teacher, get_client): + module = ModuleFactory() + client = get_client(teacher) + mid = to_global_id("ModuleNode", module.id) + result = client.execute( + add_highlight_mutation, + variables={ + "input": { + "highlight": { + "page": mid, + "paragraphIndex": 0, + "text": "Hallo", + "startPosition": 0, + "selectionLength": 10, + "color": "alpha", + } + } + }, + ) + assert result.errors is None + + highlight = result.data.get("addHighlight").get("highlight") + logger.debug(highlight) + logger.debug(mid) + assert highlight.get("text") == "Hallo" + assert highlight.get("page").get("id") == mid + + client = get_client(teacher) + result = client.execute(module_query, variables={"id": mid}) + assert result.errors is None + module = result.data.get("module") + logger.debug(module) + assert module.get("id") == mid + assert module.get("highlights")[0].get("color") == "alpha" + assert module.get("highlights")[0].get("page").get("id") == mid