96 lines
2.8 KiB
Python
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)
|
|
|