Fix unit tests, change some properties

This commit is contained in:
Ramon Wenger 2022-01-27 17:58:02 +01:00
parent 928f9027d3
commit 04c850753f
7 changed files with 29 additions and 60 deletions

View File

@ -1,12 +1,12 @@
import graphene
from graphene import relay from graphene import relay
from graphene_django.filter import DjangoFilterConnectionField
from assignments.schema.types import AssignmentNode, StudentSubmissionNode from assignments.schema.types import AssignmentNode, StudentSubmissionNode
class AssignmentsQuery(object): class AssignmentsQuery(object):
assignment = relay.Node.Field(AssignmentNode) assignment = relay.Node.Field(AssignmentNode)
assignments = DjangoFilterConnectionField(AssignmentNode) assignments = graphene.List(AssignmentNode)
class StudentSubmissionQuery(object): class StudentSubmissionQuery(object):

View File

@ -5,7 +5,7 @@ from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField from graphene_django.filter import DjangoFilterConnectionField
from assignments.models import StudentSubmission from assignments.models import StudentSubmission
from assignments.schema.types import StudentSubmissionNode from assignments.schema.types import AssignmentNode, StudentSubmissionNode
from books.models import Module, Chapter, ContentBlock, RecentModule from books.models import Module, Chapter, ContentBlock, RecentModule
from books.schema.interfaces.module import ModuleInterface from books.schema.interfaces.module import ModuleInterface
from books.schema.nodes.chapter import ChapterNode from books.schema.nodes.chapter import ChapterNode
@ -37,6 +37,7 @@ class ModuleNode(DjangoObjectType):
my_chapter_bookmarks = DjangoFilterConnectionField(ChapterBookmarkNode) my_chapter_bookmarks = DjangoFilterConnectionField(ChapterBookmarkNode)
snapshots = graphene.List('books.schema.nodes.SnapshotNode') snapshots = graphene.List('books.schema.nodes.SnapshotNode')
objective_groups = graphene.List(ObjectiveGroupNode) objective_groups = graphene.List(ObjectiveGroupNode)
assignments = graphene.List(AssignmentNode)
def resolve_chapters(self, info, **kwargs): def resolve_chapters(self, info, **kwargs):
return Chapter.get_by_parent(self) return Chapter.get_by_parent(self)
@ -90,6 +91,10 @@ class ModuleNode(DjangoObjectType):
user = info.context.user user = info.context.user
return parent.snapshots.filter(Q(creator=user) | Q(Q(creator__team=user.team ) & Q(shared=True))) return parent.snapshots.filter(Q(creator=user) | Q(Q(creator__team=user.team ) & Q(shared=True)))
@staticmethod
def resolve_assignments(parent: Module, info, **kwargs):
return parent.assignments.all()
class RecentModuleNode(DjangoObjectType): class RecentModuleNode(DjangoObjectType):
class Meta: class Meta:

View File

@ -28,7 +28,7 @@ class NewsTeaserNode(DjangoObjectType):
class AllNewsTeasersQuery(object): class AllNewsTeasersQuery(object):
news_teasers = DjangoFilterConnectionField(NewsTeaserNode) news_teasers = graphene.List(NewsTeaserNode)
def resolve_news_teasers(self, info, **kwargs): def resolve_news_teasers(self, info, **kwargs):
return NewsTeaser.objects.all().order_by('order_id') return NewsTeaser.objects.all().order_by('order_id')

View File

@ -54,7 +54,7 @@ query CommentsQuery($id: ID!) {
""" """
result = self.get_client().execute(query, variables={"id": self.room_entry_id}) result = self.get_client().execute(query, variables={"id": self.room_entry_id})
self.assertIsNone(result.get('errors')) self.assertIsNone(result.get('errors'))
comment_node = result.get('data').get('roomEntry').get('comments').get('edges')[0].get('node') comment_node = result.get('data').get('roomEntry').get('comments')[0]
self.assertEqual(comment_node['text'], self.text) self.assertEqual(comment_node['text'], self.text)
def test_get_comment_for_other_user(self): def test_get_comment_for_other_user(self):
@ -63,11 +63,7 @@ query CommentsQuery($id: ID!) {
query CommentsQuery($id: ID!) { query CommentsQuery($id: ID!) {
roomEntry(id: $id) { roomEntry(id: $id) {
comments { comments {
edges { text
node {
text
}
}
} }
} }
} }

View File

@ -30,19 +30,15 @@ class RoomQueryPermission(TestCase):
query = ''' query = '''
query { query {
rooms { rooms {
edges { title
node {
title
}
}
} }
} }
''' '''
result = self.client.execute(query) result = self.client.execute(query)
self.assertIsNone(result.get('errors')) self.assertIsNone(result.get('errors'))
self.assertEqual(len(result.get('data').get('rooms').get('edges')), 1) self.assertEqual(len(result.get('data').get('rooms')), 1)
self.assertEqual(result.get('data').get('rooms').get('edges')[0].get('node').get('title'), self.room1.title) self.assertEqual(result.get('data').get('rooms')[0].get('title'), self.room1.title)
def test_student_should_not_be_able_to_query_rooms_of_other_classes(self): def test_student_should_not_be_able_to_query_rooms_of_other_classes(self):
@ -68,19 +64,15 @@ class RoomQueryPermission(TestCase):
query = ''' query = '''
query { query {
rooms { rooms {
edges { title
node {
title
}
}
} }
} }
''' '''
result = self.client.execute(query) result = self.client.execute(query)
self.assertIsNone(result.get('errors')) self.assertIsNone(result.get('errors'))
self.assertEqual(len(result.get('data').get('rooms').get('edges')), 1) self.assertEqual(len(result.get('data').get('rooms')), 1)
self.assertNotEqual(result.get('data').get('rooms').get('edges')[0].get('node').get('title'), modlue_room.title) self.assertNotEqual(result.get('data').get('rooms')[0].get('title'), modlue_room.title)
class RoomEntryQueryPermissions(TestCase): class RoomEntryQueryPermissions(TestCase):

View File

@ -196,16 +196,6 @@ type AssignmentNode implements Node {
submission: StudentSubmissionNode submission: StudentSubmissionNode
} }
type AssignmentNodeConnection {
pageInfo: PageInfo!
edges: [AssignmentNodeEdge]!
}
type AssignmentNodeEdge {
node: AssignmentNode
cursor: String!
}
type ChapterBookmarkNode implements Node { type ChapterBookmarkNode implements Node {
user: PrivateUserNode! user: PrivateUserNode!
note: NoteNode note: NoteNode
@ -595,7 +585,7 @@ type ModuleNode implements ModuleInterface {
heroImage: String! heroImage: String!
teaser: String! teaser: String!
intro: String! intro: String!
assignments(offset: Int, before: String, after: String, first: Int, last: Int): AssignmentNodeConnection! assignments: [AssignmentNode]
objectiveGroups: [ObjectiveGroupNode] objectiveGroups: [ObjectiveGroupNode]
id: ID! id: ID!
pk: Int pk: Int
@ -701,16 +691,6 @@ type NewsTeaserNode implements Node {
displayDate: String displayDate: String
} }
type NewsTeaserNodeConnection {
pageInfo: PageInfo!
edges: [NewsTeaserNodeEdge]!
}
type NewsTeaserNodeEdge {
node: NewsTeaserNode
cursor: String!
}
interface Node { interface Node {
id: ID! id: ID!
} }
@ -853,7 +833,7 @@ type PublicUserNode implements Node {
} }
type Query { type Query {
newsTeasers(offset: Int, before: String, after: String, first: Int, last: Int, date: Date): NewsTeaserNodeConnection newsTeasers: [NewsTeaserNode]
survey(id: ID): SurveyNode survey(id: ID): SurveyNode
surveys(offset: Int, before: String, after: String, first: Int, last: Int): SurveyNodeConnection surveys(offset: Int, before: String, after: String, first: Int, last: Int): SurveyNodeConnection
project(id: ID, slug: String): ProjectNode project(id: ID, slug: String): ProjectNode
@ -863,7 +843,7 @@ type Query {
instrumentTypes: [InstrumentTypeNode] instrumentTypes: [InstrumentTypeNode]
studentSubmission(id: ID!): StudentSubmissionNode studentSubmission(id: ID!): StudentSubmissionNode
assignment(id: ID!): AssignmentNode assignment(id: ID!): AssignmentNode
assignments(offset: Int, before: String, after: String, first: Int, last: Int): AssignmentNodeConnection assignments: [AssignmentNode]
node(id: ID!): Node node(id: ID!): Node
topic(slug: String): TopicNode topic(slug: String): TopicNode
module(slug: String, id: ID): ModuleNode module(slug: String, id: ID): ModuleNode

View File

@ -39,17 +39,13 @@ class MySchoolClasses(TestCase):
query { query {
me { me {
schoolClasses { schoolClasses {
edges { id
node { name
id members {
name id
members { firstName
id lastName
firstName isTeacher
lastName
isTeacher
}
}
} }
} }
} }
@ -59,7 +55,7 @@ class MySchoolClasses(TestCase):
result = self.client.execute(query) result = self.client.execute(query)
self.assertIsNone(result.get('errors')) self.assertIsNone(result.get('errors'))
classes = result.get('data').get('me').get('schoolClasses').get('edges') classes = result.get('data').get('me').get('schoolClasses')
self.assertEqual(len(classes), 2) self.assertEqual(len(classes), 2)
for school_class in classes: for school_class in classes:
@ -75,5 +71,5 @@ class MySchoolClasses(TestCase):
result = self.client.execute(query) result = self.client.execute(query)
old_classes = result.get('data').get('me').get('oldClasses').get('edges') old_classes = result.get('data').get('me').get('oldClasses')
self.assertEqual(len(old_classes), 1) self.assertEqual(len(old_classes), 1)