skillbox/server/rooms/tests/test_new_room_mutation.py

96 lines
2.8 KiB
Python

from graphql_relay import from_global_id
from core.tests.base_test import SkillboxTestCase
from core.tests.helpers import GQLResult
from rooms.models import Room
class GQLRoom:
def __init__(self, room_data):
self.id = room_data.get('id')
self.slug = room_data.get('slug')
self.title = room_data.get('title')
self.entry_count = room_data.get('entryCount')
self.appearance = room_data.get('appearance')
self.description = room_data.get('description')
self.school_class = room_data.get('schoolClass')
class AddRoomResult:
def __init__(self, result: GQLResult):
self.room = GQLRoom(result.data.get('addRoom').get('room'))
# id
# slug
# title
# entryCount
# appearance
# description
# schoolClass {
# id
# name
# }
class NewRoomMutationTestCase(SkillboxTestCase):
def setUp(self) -> None:
self.createDefault()
self.mutation = """
mutation AddRoom($input: AddRoomInput!){
addRoom(input: $input) {
room {
id
slug
title
entryCount
appearance
description
schoolClass {
id
name
}
}
}
}
"""
def test_create_new_room(self):
self.assertEqual(Room.objects.count(), 0)
title = 'some title'
appearance = 'blue'
res = self.get_client().execute(self.mutation, variables={
'input': {
'room': {
'title': title,
# description
'appearance': appearance
}
}
})
result = GQLResult(res)
self.assertIsNone(result.errors)
room = GQLRoom(result.data.get('addRoom').get('room'))
self.assertEqual(room.title, title)
self.assertEqual(room.appearance, appearance)
self.assertIsNone(room.description)
self.assertEqual(int(from_global_id(room.school_class.get('id'))[1]), self.teacher.selected_class.id)
self.assertEqual(Room.objects.count(), 1)
def test_create_new_room_for_other_school_class(self):
self.assertEqual(Room.objects.count(), 0)
result = self.get_client(self.teacher2).get_result(self.mutation, variables={
'input': {
'room': {
'title': 'BIG NO NO!',
# description
'schoolClass': {
'id': self.school_class.graphql_id
},
'appearance': 'red'
}
}
})
self.assertEqual(Room.objects.count(), 1)
room = Room.objects.all()[0]
self.assertEqual(room.school_class.id, self.teacher2.selected_class.id)