add my schoolclasses query, fix test

This commit is contained in:
Christian Cueni 2019-04-09 11:27:30 +02:00
parent e3b4f658e2
commit 8b53d2fa7e
7 changed files with 89 additions and 4 deletions

View File

@ -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>

View File

@ -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:

View File

@ -11,6 +11,7 @@ from users.schema import UserNode
logger = logging.getLogger(__name__)
class RoomEntryNode(DjangoObjectType):
pk = graphene.Int()
author = UserNode()

View File

@ -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):

View File

@ -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)

View File

@ -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')

View File

@ -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'):