Fix unit tests, change some properties
This commit is contained in:
parent
928f9027d3
commit
04c850753f
|
|
@ -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):
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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')
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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):
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue