add my schoolclasses query, fix test
This commit is contained in:
parent
e3b4f658e2
commit
8b53d2fa7e
|
|
@ -7,7 +7,7 @@
|
|||
<router-link to="/me/classlist" active-class="top-navigation__link--active"
|
||||
class="top-navigation__link profile-submenu__item submenu-item">Klassenliste
|
||||
</router-link>
|
||||
<router-link to="password-change" active-class="top-navigation__link--active"
|
||||
<router-link to="/me/password-change" active-class="top-navigation__link--active"
|
||||
class="top-navigation__link profile-submenu__item submenu-item">Passwort ändern
|
||||
</router-link>
|
||||
</nav>
|
||||
|
|
|
|||
|
|
@ -15,12 +15,12 @@ from objectives.mutations import ObjectiveMutations
|
|||
from objectives.schema import ObjectivesQuery
|
||||
from rooms.mutations import RoomMutations
|
||||
from rooms.schema import RoomsQuery
|
||||
from users.schema import UsersQuery
|
||||
from users.schema import UsersQuery, MySchoolClassesQuery
|
||||
from users.mutations import ProfileMutations
|
||||
|
||||
|
||||
class Query(UsersQuery, RoomsQuery, ObjectivesQuery, BookQuery, AssignmentsQuery, StudentSubmissionQuery,
|
||||
BasicKnowledgeQuery, graphene.ObjectType):
|
||||
BasicKnowledgeQuery, MySchoolClassesQuery, graphene.ObjectType):
|
||||
node = relay.Node.Field()
|
||||
|
||||
if settings.DEBUG:
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ from users.schema import UserNode
|
|||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class RoomEntryNode(DjangoObjectType):
|
||||
pk = graphene.Int()
|
||||
author = UserNode()
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ from core.factories import UserFactory
|
|||
from rooms.factories import RoomEntryFactory, RoomFactory
|
||||
from rooms.models import RoomEntry
|
||||
from users.factories import SchoolClassFactory
|
||||
from users.services import create_users
|
||||
|
||||
|
||||
class RoomEntryMutationsTestCase(TestCase):
|
||||
|
|
|
|||
|
|
@ -45,3 +45,11 @@ class UsersQuery(object):
|
|||
|
||||
def resolve_me(self, info, **kwargs):
|
||||
return info.context.user
|
||||
|
||||
|
||||
class MySchoolClassesQuery(object):
|
||||
my_school_classes = DjangoFilterConnectionField(SchoolClassNode)
|
||||
|
||||
def resolve_my_school_classes(self, info):
|
||||
user = info.context.user
|
||||
return SchoolClass.objects.filter(users__id=user.id)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# ITerativ GmbH
|
||||
# http://www.iterativ.ch/
|
||||
#
|
||||
# Copyright (c) 2019 ITerativ GmbH. All rights reserved.
|
||||
#
|
||||
# Created on 2019-04-09
|
||||
# @author: chrigu <christian.cueni@iterativ.ch>
|
||||
from django.conf import settings
|
||||
from django.test import TestCase, RequestFactory
|
||||
from graphene.test import Client
|
||||
from api.schema import schema
|
||||
from core.factories import UserFactory
|
||||
from django.contrib.auth import authenticate
|
||||
|
||||
from users.factories import SchoolClassFactory
|
||||
|
||||
|
||||
class PasswordUpdate(TestCase):
|
||||
def setUp(self):
|
||||
self.user = UserFactory(username='aschi')
|
||||
self.another_user = UserFactory(username='pesche')
|
||||
self.class1 = SchoolClassFactory(users=[self.user, self.another_user])
|
||||
self.class2 = SchoolClassFactory(users=[self.user])
|
||||
self.class3 = SchoolClassFactory(users=[self.another_user])
|
||||
|
||||
request = RequestFactory().get('/')
|
||||
request.user = self.user
|
||||
self.client = Client(schema=schema, context_value=request)
|
||||
|
||||
def make_query(self):
|
||||
|
||||
query = '''
|
||||
query {
|
||||
mySchoolClasses {
|
||||
edges {
|
||||
node {
|
||||
name
|
||||
users {
|
||||
edges {
|
||||
node {
|
||||
firstName
|
||||
lastName
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
'''
|
||||
return self.client.execute(query)
|
||||
|
||||
def test_user_sees_her_classes(self):
|
||||
|
||||
result = self.make_query()
|
||||
|
||||
classes = result.get('data').get('mySchoolClasses').get('edges')
|
||||
self.assertEqual(len(classes), 2)
|
||||
|
||||
for school_class in classes:
|
||||
if school_class.get('name') == self.class1:
|
||||
self.assertEqual(len(school_class.get('node')), 2)
|
||||
elif school_class.get('name') == self.class2:
|
||||
self.assertEqual(len(school_class.get('node')), 1)
|
||||
elif school_class.get('name') == self.class2:
|
||||
self.fail('MySchoolClassTest:test_user_sees_her_classes: Class should not be in response')
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
from django.contrib.sessions.middleware import SessionMiddleware
|
||||
from django.test import TestCase, RequestFactory
|
||||
from graphene.test import Client
|
||||
from api.schema import schema
|
||||
|
|
@ -11,6 +12,11 @@ class PasswordUpdate(TestCase):
|
|||
|
||||
request = RequestFactory().get('/')
|
||||
request.user = self.user
|
||||
|
||||
# adding session
|
||||
middleware = SessionMiddleware()
|
||||
middleware.process_request(request)
|
||||
request.session.save()
|
||||
self.client = Client(schema=schema, context_value=request)
|
||||
|
||||
def make_request(self, new_password, old_password='test'):
|
||||
|
|
|
|||
Loading…
Reference in New Issue