140 lines
5.0 KiB
Python
140 lines
5.0 KiB
Python
from django.test import TestCase, RequestFactory
|
|
from graphene.test import Client
|
|
from graphql_relay import to_global_id
|
|
|
|
from api.schema import schema
|
|
from api.utils import get_object, get_graphql_mutation
|
|
from books.models import ContentBlock, Chapter
|
|
from books.factories import ModuleFactory
|
|
from core.factories import UserFactory
|
|
from notes.factories import ChapterBookmarkFactory, ModuleBookmarkFactory
|
|
from notes.models import Note, ModuleBookmark, ChapterBookmark
|
|
|
|
|
|
class NoteMutationTestCase(TestCase):
|
|
def setUp(self):
|
|
self.module = ModuleFactory()
|
|
self.chapter = Chapter(title='Hello')
|
|
self.module.add_child(instance=self.chapter)
|
|
self.user = user = UserFactory(username='aschi')
|
|
content_block = ContentBlock(title='bla', slug='bla')
|
|
self.chapter.specific.add_child(instance=content_block)
|
|
ChapterBookmarkFactory.create(chapter=self.chapter, user=user)
|
|
ModuleBookmarkFactory.create(module=self.module, user=user)
|
|
|
|
request = RequestFactory().get('/')
|
|
request.user = user
|
|
|
|
self.client = Client(schema=schema, context_value=request)
|
|
self.add_mutation = get_graphql_mutation('addNote.gql')
|
|
self.update_mutation = get_graphql_mutation('updateNote.gql')
|
|
|
|
|
|
class NewNoteMutationTestCase(NoteMutationTestCase):
|
|
def test_add_chapter_note(self):
|
|
self.assertEqual(Note.objects.count(), 0)
|
|
text = 'Hello World'
|
|
result = self.client.execute(self.add_mutation, variables={
|
|
'input': {
|
|
'note': {
|
|
'parent': to_global_id('ChapterNode', self.chapter.pk),
|
|
'text': text
|
|
}
|
|
}
|
|
})
|
|
self.assertIsNone(result.get('errors'))
|
|
|
|
self.assertEqual(Note.objects.count(), 1)
|
|
self.assertEqual(Note.objects.first().text, text)
|
|
|
|
def test_add_module_note(self):
|
|
self.assertEqual(Note.objects.count(), 0)
|
|
text = 'Hello World'
|
|
result = self.client.execute(self.add_mutation, variables={
|
|
'input': {
|
|
'note': {
|
|
'parent': to_global_id('ModuleNode', self.module.pk),
|
|
'text': text
|
|
}
|
|
}
|
|
})
|
|
self.assertIsNone(result.get('errors'))
|
|
|
|
self.assertEqual(Note.objects.count(), 1)
|
|
self.assertEqual(Note.objects.first().text, text)
|
|
|
|
|
|
class UpdateNoteMutationTestCase(NoteMutationTestCase):
|
|
def setUp(self):
|
|
super(UpdateNoteMutationTestCase, self).setUp()
|
|
|
|
self.chapter_note = Note.objects.create(text='Hello World')
|
|
self.module_note = Note.objects.create(text='Hello World')
|
|
|
|
self.chapter_bookmark = ChapterBookmark.objects.get(user=self.user, chapter=self.chapter)
|
|
self.chapter_bookmark.note = self.chapter_note
|
|
self.chapter_bookmark.save()
|
|
|
|
self.module_bookmark = ModuleBookmark.objects.get(user=self.user, module=self.module)
|
|
self.module_bookmark.note = self.module_note
|
|
self.module_bookmark.save()
|
|
|
|
def test_change_module_note(self):
|
|
self.assertEqual(Note.objects.count(), 2)
|
|
self.assertEqual(self.module_bookmark.note.text, 'Hello World')
|
|
|
|
new_text = 'Salut monde'
|
|
result = self.client.execute(self.update_mutation, variables={
|
|
'input': {
|
|
'note': {
|
|
'id': to_global_id('NoteNode', self.module_bookmark.note.pk),
|
|
'text': new_text
|
|
}
|
|
}
|
|
})
|
|
self.assertIsNone(result.get('errors'))
|
|
|
|
bookmark = ModuleBookmark.objects.get(user=self.user, module=self.module)
|
|
self.assertEqual(bookmark.note.text, new_text)
|
|
|
|
self.assertEqual(Note.objects.count(), 2)
|
|
|
|
def test_change_chapter_note(self):
|
|
self.assertEqual(Note.objects.count(), 2)
|
|
self.assertEqual(self.chapter_bookmark.note.text, 'Hello World')
|
|
|
|
new_text = 'Salut monde'
|
|
result = self.client.execute(self.update_mutation, variables={
|
|
'input': {
|
|
'note': {
|
|
'id': to_global_id('NoteNode', self.chapter_bookmark.note.pk),
|
|
'text': new_text
|
|
}
|
|
}
|
|
})
|
|
self.assertIsNone(result.get('errors'))
|
|
|
|
bookmark = ChapterBookmark.objects.get(user=self.user, chapter=self.chapter)
|
|
self.assertEqual(bookmark.note.text, new_text)
|
|
|
|
self.assertEqual(Note.objects.count(), 2)
|
|
|
|
def test_update_wrong_user(self):
|
|
godis_note = Note.objects.create(text='Hello Godi')
|
|
godi = UserFactory(username='godi')
|
|
godis_bookmark = ModuleBookmarkFactory(module=self.module, user=godi)
|
|
|
|
godis_bookmark.note = godis_note
|
|
godis_bookmark.save()
|
|
|
|
result = self.client.execute(self.update_mutation, variables={
|
|
'input': {
|
|
'note': {
|
|
'id': to_global_id('NoteNode', godis_note.pk),
|
|
'text': 'Hello Aschi'
|
|
}
|
|
}
|
|
})
|
|
print(result.get('errors'))
|
|
self.assertIsNotNone(result.get('errors'))
|