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"
|
<router-link to="/me/classlist" active-class="top-navigation__link--active"
|
||||||
class="top-navigation__link profile-submenu__item submenu-item">Klassenliste
|
class="top-navigation__link profile-submenu__item submenu-item">Klassenliste
|
||||||
</router-link>
|
</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
|
class="top-navigation__link profile-submenu__item submenu-item">Passwort ändern
|
||||||
</router-link>
|
</router-link>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
||||||
|
|
@ -15,12 +15,12 @@ from objectives.mutations import ObjectiveMutations
|
||||||
from objectives.schema import ObjectivesQuery
|
from objectives.schema import ObjectivesQuery
|
||||||
from rooms.mutations import RoomMutations
|
from rooms.mutations import RoomMutations
|
||||||
from rooms.schema import RoomsQuery
|
from rooms.schema import RoomsQuery
|
||||||
from users.schema import UsersQuery
|
from users.schema import UsersQuery, MySchoolClassesQuery
|
||||||
from users.mutations import ProfileMutations
|
from users.mutations import ProfileMutations
|
||||||
|
|
||||||
|
|
||||||
class Query(UsersQuery, RoomsQuery, ObjectivesQuery, BookQuery, AssignmentsQuery, StudentSubmissionQuery,
|
class Query(UsersQuery, RoomsQuery, ObjectivesQuery, BookQuery, AssignmentsQuery, StudentSubmissionQuery,
|
||||||
BasicKnowledgeQuery, graphene.ObjectType):
|
BasicKnowledgeQuery, MySchoolClassesQuery, graphene.ObjectType):
|
||||||
node = relay.Node.Field()
|
node = relay.Node.Field()
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ from users.schema import UserNode
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class RoomEntryNode(DjangoObjectType):
|
class RoomEntryNode(DjangoObjectType):
|
||||||
pk = graphene.Int()
|
pk = graphene.Int()
|
||||||
author = UserNode()
|
author = UserNode()
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ from core.factories import UserFactory
|
||||||
from rooms.factories import RoomEntryFactory, RoomFactory
|
from rooms.factories import RoomEntryFactory, RoomFactory
|
||||||
from rooms.models import RoomEntry
|
from rooms.models import RoomEntry
|
||||||
from users.factories import SchoolClassFactory
|
from users.factories import SchoolClassFactory
|
||||||
from users.services import create_users
|
|
||||||
|
|
||||||
|
|
||||||
class RoomEntryMutationsTestCase(TestCase):
|
class RoomEntryMutationsTestCase(TestCase):
|
||||||
|
|
|
||||||
|
|
@ -45,3 +45,11 @@ class UsersQuery(object):
|
||||||
|
|
||||||
def resolve_me(self, info, **kwargs):
|
def resolve_me(self, info, **kwargs):
|
||||||
return info.context.user
|
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 django.test import TestCase, RequestFactory
|
||||||
from graphene.test import Client
|
from graphene.test import Client
|
||||||
from api.schema import schema
|
from api.schema import schema
|
||||||
|
|
@ -11,6 +12,11 @@ class PasswordUpdate(TestCase):
|
||||||
|
|
||||||
request = RequestFactory().get('/')
|
request = RequestFactory().get('/')
|
||||||
request.user = self.user
|
request.user = self.user
|
||||||
|
|
||||||
|
# adding session
|
||||||
|
middleware = SessionMiddleware()
|
||||||
|
middleware.process_request(request)
|
||||||
|
request.session.save()
|
||||||
self.client = Client(schema=schema, context_value=request)
|
self.client = Client(schema=schema, context_value=request)
|
||||||
|
|
||||||
def make_request(self, new_password, old_password='test'):
|
def make_request(self, new_password, old_password='test'):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue