Commit 59970d3f by Matt Drayer Committed by Jonathan Piacenti

mattdrayer/api-workgroup-content-id: Added content_id field

parent 5878b1fc
......@@ -106,3 +106,4 @@ class WorkgroupPeerReview(TimeStampedModel):
reviewer = models.CharField(max_length=255) # AnonymousUserId
question = models.CharField(max_length=255)
answer = models.CharField(max_length=255)
content_id = models.CharField(max_length=255, null=True, blank=True)
......@@ -137,7 +137,7 @@ class WorkgroupPeerReviewSerializer(serializers.HyperlinkedModelSerializer):
model = WorkgroupPeerReview
fields = (
'id', 'url', 'created', 'modified', 'question', 'answer',
'workgroup', 'user', 'reviewer'
'workgroup', 'user', 'reviewer', 'content_id'
)
......
......@@ -6,6 +6,7 @@ Run these tests @ Devstack:
"""
import json
import uuid
from urllib import urlencode
from django.contrib.auth.models import User
from django.core.cache import cache
......@@ -54,7 +55,7 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
self.test_course_id = unicode(self.course.id)
self.test_bogus_course_id = 'foo/bar/baz'
self.test_course_content_id = "i4x://blah"
self.test_course_content_id = unicode(self.chapter.scope_ids.usage_id)
self.test_bogus_course_content_id = "14x://foo/bar/baz"
self.test_question = "Does the question data come from the XBlock definition?"
......@@ -124,6 +125,7 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
'reviewer': self.anonymous_user_id,
'question': self.test_question,
'answer': self.test_answer,
'content_id': self.test_course_content_id
}
response = self.do_post(self.test_peer_reviews_uri, data)
self.assertEqual(response.status_code, 201)
......@@ -140,6 +142,7 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
self.assertEqual(response.data['question'], self.test_question)
self.assertEqual(response.data['answer'], self.test_answer)
self.assertEqual(response.data['workgroup'], self.test_workgroup.id)
self.assertEqual(response.data['content_id'], self.test_course_content_id)
self.assertIsNotNone(response.data['created'])
self.assertIsNotNone(response.data['modified'])
......@@ -153,6 +156,32 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
response = self.do_post(self.test_peer_reviews_uri, data)
self.assertEqual(response.status_code, 400)
def test_peer_reviews_list_get(self):
data = {
'workgroup': self.test_workgroup.id,
'user': self.test_peer_user.id,
'reviewer': self.anonymous_user_id,
'question': self.test_question,
'answer': self.test_answer,
'content_id': self.test_course_content_id
}
response = self.do_post(self.test_peer_reviews_uri, data)
self.assertEqual(response.status_code, 201)
data = {
'workgroup': self.test_workgroup.id,
'user': self.test_peer_user.id,
'reviewer': self.anonymous_user_id,
'question': self.test_question,
'answer': self.test_answer,
'content_id': self.test_course_content_id
}
response = self.do_post(self.test_peer_reviews_uri, data)
self.assertEqual(response.status_code, 201)
response = self.do_get(self.test_peer_reviews_uri)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data), 2)
def test_peer_reviews_detail_get(self):
data = {
'workgroup': self.test_workgroup.id,
......@@ -160,6 +189,7 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
'reviewer': self.anonymous_user_id,
'question': self.test_question,
'answer': self.test_answer,
'content_id': self.test_course_content_id,
}
response = self.do_post(self.test_peer_reviews_uri, data)
self.assertEqual(response.status_code, 201)
......@@ -173,10 +203,12 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
)
self.assertEqual(response.data['url'], confirm_uri)
self.assertGreater(response.data['id'], 0)
self.assertEqual(response.data['workgroup'], self.test_workgroup.id)
self.assertEqual(response.data['user'], self.test_peer_user.id)
self.assertEqual(response.data['reviewer'], self.anonymous_user_id)
self.assertEqual(response.data['question'], self.test_question)
self.assertEqual(response.data['answer'], self.test_answer)
self.assertEqual(response.data['content_id'], self.test_course_content_id)
self.assertIsNotNone(response.data['created'])
self.assertIsNotNone(response.data['modified'])
......
......@@ -6,6 +6,7 @@ Run these tests @ Devstack:
"""
import json
import uuid
from urllib import urlencode
from django.contrib.auth.models import User
from django.core.cache import cache
......@@ -54,9 +55,8 @@ class SubmissionReviewsApiTests(ModuleStoreTestCase):
self.test_course_id = unicode(self.course.id)
self.test_bogus_course_id = 'foo/bar/baz'
self.test_course_content_id = "i4x://blah"
self.test_course_content_id = unicode(self.chapter.scope_ids.usage_id)
self.test_bogus_course_content_id = "14x://foo/bar/baz"
self.test_question = "Does the question data come from the XBlock definition?"
self.test_answer = "It sure does! And so does the answer data!"
......@@ -145,6 +145,30 @@ class SubmissionReviewsApiTests(ModuleStoreTestCase):
self.assertIsNotNone(response.data['created'])
self.assertIsNotNone(response.data['modified'])
def test_submission_reviews_list_get(self):
data = {
'submission': self.test_submission.id,
'reviewer': self.anonymous_user_id,
'question': self.test_question,
'answer': self.test_answer,
'content_id': self.test_course_content_id,
}
response = self.do_post(self.test_submission_reviews_uri, data)
self.assertEqual(response.status_code, 201)
data = {
'submission': self.test_submission.id,
'reviewer': self.anonymous_user_id,
'question': self.test_question,
'answer': self.test_answer,
'content_id': self.test_course_content_id,
}
response = self.do_post(self.test_submission_reviews_uri, data)
self.assertEqual(response.status_code, 201)
response = self.do_get(self.test_submission_reviews_uri)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data), 2)
def test_submission_reviews_detail_get(self):
data = {
'submission': self.test_submission.id,
......
......@@ -6,6 +6,7 @@ Run these tests @ Devstack:
"""
import json
import uuid
from urllib import urlencode
from django.contrib.auth.models import User
from django.core.cache import cache
......@@ -55,7 +56,7 @@ class WorkgroupReviewsApiTests(ModuleStoreTestCase):
self.test_course_id = unicode(self.course.id)
self.test_bogus_course_id = 'foo/bar/baz'
self.test_course_content_id = "i4x://blah"
self.test_course_content_id = unicode(self.chapter.scope_ids.usage_id)
self.test_bogus_course_content_id = "14x://foo/bar/baz"
self.test_question = "Does the question data come from the XBlock definition?"
......@@ -145,6 +146,30 @@ class WorkgroupReviewsApiTests(ModuleStoreTestCase):
self.assertIsNotNone(response.data['created'])
self.assertIsNotNone(response.data['modified'])
def test_workgroup_reviews_list_get(self):
data = {
'workgroup': self.test_workgroup.id,
'reviewer': self.anonymous_user_id,
'question': self.test_question,
'answer': self.test_answer,
'content_id': self.test_course_content_id,
}
response = self.do_post(self.test_workgroup_reviews_uri, data)
self.assertEqual(response.status_code, 201)
data = {
'workgroup': self.test_workgroup.id,
'reviewer': self.anonymous_user_id,
'question': self.test_question,
'answer': self.test_answer,
'content_id': self.test_course_content_id,
}
response = self.do_post(self.test_workgroup_reviews_uri, data)
self.assertEqual(response.status_code, 201)
response = self.do_get(self.test_workgroup_reviews_uri)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data), 2)
def test_workgroup_reviews_detail_get(self):
data = {
'workgroup': self.test_workgroup.id,
......
......@@ -7,6 +7,7 @@ Run these tests @ Devstack:
from datetime import datetime
import json
import uuid
from urllib import urlencode
from django.contrib.auth.models import Group, User
from django.core.cache import cache
......@@ -385,18 +386,41 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
'user': self.test_user.id,
'reviewer': self.test_user.username,
'question': 'Test question?',
'answer': 'Test answer!'
'answer': 'Test answer!',
'content_id': self.test_course_content_id
}
response = self.do_post(self.test_peer_reviews_uri, pr_data)
self.assertEqual(response.status_code, 201)
pr_id = response.data['id']
pr1_id = response.data['id']
pr_data = {
'workgroup': workgroup_id,
'user': self.test_user.id,
'reviewer': self.test_user.username,
'question': 'Test question2',
'answer': 'Test answer2',
'content_id': self.test_course_id
}
response = self.do_post(self.test_peer_reviews_uri, pr_data)
self.assertEqual(response.status_code, 201)
pr2_id = response.data['id']
test_uri = '{}{}/'.format(self.test_workgroups_uri, workgroup_id)
peer_reviews_uri = '{}peer_reviews/'.format(test_uri)
response = self.do_get(peer_reviews_uri)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data[0]['id'], pr_id)
self.assertEqual(len(response.data), 2)
self.assertEqual(response.data[0]['id'], pr1_id)
self.assertEqual(response.data[0]['reviewer'], self.test_user.username)
content_id = {"content_id": self.test_course_content_id}
test_uri = '{}{}/peer_reviews/?{}'.format(self.test_workgroups_uri, workgroup_id, urlencode(content_id))
response = self.do_get(test_uri)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data), 1)
self.assertEqual(response.data[0]['id'], pr1_id)
self.assertEqual(response.data[0]['reviewer'], self.test_user.username)
def test_workgroups_workgroup_reviews_get(self):
data = {
'name': self.test_workgroup_name,
......@@ -409,16 +433,36 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
'workgroup': workgroup_id,
'reviewer': self.test_user.username,
'question': 'Test question?',
'answer': 'Test answer!'
'answer': 'Test answer!',
'content_id': self.test_course_content_id
}
response = self.do_post(self.test_workgroup_reviews_uri, wr_data)
self.assertEqual(response.status_code, 201)
wr_id = response.data['id']
wr1_id = response.data['id']
wr_data = {
'workgroup': workgroup_id,
'reviewer': self.test_user.username,
'question': 'Test question?',
'answer': 'Test answer!',
'content_id': self.test_course_id
}
response = self.do_post(self.test_workgroup_reviews_uri, wr_data)
self.assertEqual(response.status_code, 201)
test_uri = '{}{}/'.format(self.test_workgroups_uri, workgroup_id)
workgroup_reviews_uri = '{}workgroup_reviews/'.format(test_uri)
response = self.do_get(workgroup_reviews_uri)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data[0]['id'], wr_id)
self.assertEqual(len(response.data), 2)
self.assertEqual(response.data[0]['id'], wr1_id)
self.assertEqual(response.data[0]['reviewer'], self.test_user.username)
content_id = {"content_id": self.test_course_content_id}
test_uri = '{}{}/workgroup_reviews/?{}'.format(self.test_workgroups_uri, workgroup_id, urlencode(content_id))
response = self.do_get(test_uri)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data), 1)
self.assertEqual(response.data[0]['id'], wr1_id)
self.assertEqual(response.data[0]['reviewer'], self.test_user.username)
def test_workgroups_submissions_get(self):
......
......@@ -179,6 +179,9 @@ class WorkgroupsViewSet(viewsets.ModelViewSet):
View Peer Reviews for a specific Workgroup
"""
peer_reviews = WorkgroupPeerReview.objects.filter(workgroup=pk)
content_id = self.request.QUERY_PARAMS.get('content_id', None)
if content_id is not None:
peer_reviews = peer_reviews.filter(content_id=content_id)
response_data = []
if peer_reviews:
for peer_review in peer_reviews:
......@@ -192,6 +195,10 @@ class WorkgroupsViewSet(viewsets.ModelViewSet):
View Workgroup Reviews for a specific Workgroup
"""
workgroup_reviews = WorkgroupReview.objects.filter(workgroup=pk)
content_id = self.request.QUERY_PARAMS.get('content_id', None)
if content_id is not None:
workgroup_reviews = workgroup_reviews.filter(content_id=content_id)
response_data = []
if workgroup_reviews:
for workgroup_review in workgroup_reviews:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment