diff --git a/server/books/models/contentblock.py b/server/books/models/contentblock.py index 4fff35c9..9d573073 100644 --- a/server/books/models/contentblock.py +++ b/server/books/models/contentblock.py @@ -135,7 +135,8 @@ class ContentBlockSnapshot(ContentBlock): type=self.type, title=self.title, owner=owner, - original_creator=self.original_creator + original_creator=self.original_creator, + user_created=True ) self.add_sibling(instance=cb, pos='right') # some wagtail magic diff --git a/server/books/tests/test_snapshots.py b/server/books/tests/test_snapshots.py index 3d25dcad..d8037240 100644 --- a/server/books/tests/test_snapshots.py +++ b/server/books/tests/test_snapshots.py @@ -23,6 +23,10 @@ class CreateSnapshotTestCase(SkillboxTestCase): self.assertEqual(content_block['title'], title) self.assertEqual(content_block['hidden'], hidden) + @property + def graphene_client(self): + return self.get_client() + def setUp(self): self.createDefault() self.client = self.get_client() @@ -282,6 +286,42 @@ class CreateSnapshotTestCase(SkillboxTestCase): self.assertTrue(self.skillbox_class.name not in [sc['name'] for sc in cb3['visibleFor']]) self.assertTrue(self.skillbox_class.name not in [sc['name'] for sc in cb4['visibleFor']]) + def test_create_apply_view_snapshot(self): + result = self.graphene_client.execute(MODULE_QUERY, variables={ + 'slug': self.module.slug + }) + self.assertIsNone(result.get('errors')) + chapter = result['data']['module']['chapters'][0] + self.assertEqual(len(chapter['contentBlocks']), 4) + + result = self.graphene_client.execute(CREATE_SNAPSHOT_MUTATION, variables={ + 'input': { + 'module': self.slug, + 'selectedClass': to_global_id('SchoolClassNode', self.skillbox_class.pk), + } + }) + self.assertIsNone(result.get('errors')) + snapshot_id = result['data']['createSnapshot']['snapshot']['id'] + + teacher2 = User.objects.get(username='teacher2') + teacher2_client = self.get_client(user=teacher2) + school_class_name = 'second_class' + second_class = SchoolClass.objects.get(name=school_class_name) + result = teacher2_client.execute(APPLY_SNAPSHOT_MUTATION, variables={ + 'input': { + 'snapshot': snapshot_id, + 'selectedClass': to_global_id('SchoolClassNode', second_class.pk), + } + }) + self.assertIsNone(result.get('errors')) + + result = self.graphene_client.execute(MODULE_QUERY, variables={ + 'slug': self.module.slug + }) + self.assertIsNone(result.get('errors')) + chapter = result['data']['module']['chapters'][0] + self.assertEqual(len(chapter['contentBlocks']), 4) + class SnapshotTestCase(SkillboxTestCase): def setUp(self) -> None: