171 lines
3.8 KiB
Python
171 lines
3.8 KiB
Python
from api.test_utils import DefaultUserTestCase, create_client
|
|
from assignments.factories import AssignmentFactory, StudentSubmissionFactory
|
|
from books.factories import ModuleFactory, TopicFactory
|
|
from core.logger import get_logger
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
class MyAssignmentsTest(DefaultUserTestCase):
|
|
def setUp(self):
|
|
super(MyAssignmentsTest, self).setUp()
|
|
topic = TopicFactory()
|
|
module = ModuleFactory(parent=topic)
|
|
self.assignment = AssignmentFactory(owner=self.teacher, module=module)
|
|
|
|
self.submission1 = StudentSubmissionFactory(
|
|
student=self.student1, assignment=self.assignment
|
|
)
|
|
self.submission2 = StudentSubmissionFactory(
|
|
student=self.student2, assignment=self.assignment
|
|
)
|
|
|
|
self.client = create_client(self.student1)
|
|
|
|
def query_my_assignments(self):
|
|
query = """
|
|
fragment HighlightParts on HighlightNode {
|
|
id
|
|
contentIndex
|
|
paragraphIndex
|
|
selectionLength
|
|
contentUuid
|
|
startPosition
|
|
color
|
|
note {
|
|
text
|
|
}
|
|
text
|
|
page {
|
|
# only one of them should be necessary, but the client somehow doesn't like just the Node inline fragment
|
|
__typename
|
|
... on ContentBlockNode {
|
|
id
|
|
path
|
|
}
|
|
... on InstrumentNode {
|
|
id
|
|
slug
|
|
}
|
|
... on ModuleNode {
|
|
id
|
|
slug
|
|
path
|
|
}
|
|
... on ChapterNode {
|
|
id
|
|
path
|
|
slug
|
|
}
|
|
}
|
|
}
|
|
query MyActivitiesQuery {
|
|
myActivities {
|
|
instruments {
|
|
id
|
|
slug
|
|
title
|
|
path
|
|
highlights {
|
|
...HighlightParts
|
|
}
|
|
bookmarks {
|
|
... on InstrumentBookmarkNode {
|
|
path
|
|
}
|
|
}
|
|
}
|
|
topics {
|
|
id
|
|
title
|
|
modules {
|
|
id
|
|
slug
|
|
title
|
|
metaTitle
|
|
myHighlights {
|
|
...HighlightParts
|
|
}
|
|
myBookmarks {
|
|
... on ChapterBookmarkNode {
|
|
chapter {
|
|
path
|
|
}
|
|
path
|
|
note {
|
|
id
|
|
text
|
|
}
|
|
}
|
|
... on ContentBlockBookmarkNode {
|
|
id
|
|
uuid
|
|
path
|
|
contentBlock {
|
|
id
|
|
path
|
|
}
|
|
note {
|
|
id
|
|
text
|
|
}
|
|
}
|
|
... on ModuleBookmarkNode {
|
|
path
|
|
note {
|
|
id
|
|
text
|
|
}
|
|
}
|
|
}
|
|
mySubmissions {
|
|
id
|
|
text
|
|
assignment {
|
|
id
|
|
title
|
|
path
|
|
module {
|
|
slug
|
|
}
|
|
}
|
|
}
|
|
myAnswers {
|
|
id
|
|
survey {
|
|
path
|
|
id
|
|
title
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
"""
|
|
|
|
result = self.client.execute(query)
|
|
|
|
self.assertIsNone(result.get("errors"))
|
|
return result
|
|
|
|
@staticmethod
|
|
def get_submissions(result):
|
|
return (
|
|
result.get("data")
|
|
.get("myActivities")
|
|
.get("topics")[0]
|
|
.get("modules")[0]
|
|
.get("mySubmissions")
|
|
)
|
|
|
|
def test_my_assignment_query(self):
|
|
result = self.query_my_assignments()
|
|
submissions = self.get_submissions(result)
|
|
logger.debug(submissions)
|
|
self.assertEqual(len(submissions), 1)
|
|
self.assertEqual(
|
|
submissions[0].get("text"),
|
|
self.submission1.text,
|
|
)
|