Пример #1
0
 def test_create_success(self, parent_id):
     data = self.minimal_data.copy()
     if parent_id:
         data["parent_id"] = parent_id
         self.register_get_comment_response({
             "thread_id": "test_thread",
             "id": parent_id
         })
     self.register_post_comment_response(
         {
             "id": "test_comment",
             "username": self.user.username
         },
         thread_id="test_thread",
         parent_id=parent_id)
     saved = self.save_and_reserialize(data)
     expected_url = (f"/api/v1/comments/{parent_id}" if parent_id else
                     "/api/v1/threads/test_thread/comments")
     assert urlparse(httpretty.last_request().path).path == expected_url  # lint-amnesty, pylint: disable=no-member
     assert parsed_body(httpretty.last_request()) == {
         'course_id': [str(self.course.id)],
         'body': ['Test body'],
         'user_id': [str(self.user.id)],
         'anonymous': ['False'],
         'anonymous_to_peers': ['False'],
     }
     assert saved['id'] == 'test_comment'
     assert saved['parent_id'] == parent_id
Пример #2
0
 def test_update_all(self, read):
     self.register_put_thread_response(self.existing_thread.attributes)
     data = {
         "topic_id": "edited_topic",
         "type": "question",
         "title": "Edited Title",
         "raw_body": "Edited body",
         "read": read,
     }
     saved = self.save_and_reserialize(data, self.existing_thread)
     assert parsed_body(httpretty.last_request()) == {
         'course_id': [str(self.course.id)],
         'commentable_id': ['edited_topic'],
         'thread_type': ['question'],
         'title': ['Edited Title'],
         'body': ['Edited body'],
         'anonymous': ['False'],
         'anonymous_to_peers': ['False'],
         'closed': ['False'],
         'pinned': ['False'],
         'user_id': [str(self.user.id)],
         'read': [str(read)]
     }
     for key in data:
         assert saved[key] == data[key]
Пример #3
0
 def test_update_anonymous(self):
     """
     Test that serializer correctly deserializes the anonymous field when
     updating an existing comment.
     """
     self.register_put_comment_response(self.existing_comment.attributes)
     data = {
         "anonymous": True,
     }
     self.save_and_reserialize(data, self.existing_comment)
     assert parsed_body(httpretty.last_request())["anonymous"] == ['True']
Пример #4
0
 def test_update_empty(self):
     self.register_put_comment_response(self.existing_comment.attributes)
     self.save_and_reserialize({}, instance=self.existing_comment)
     assert parsed_body(httpretty.last_request()) == {
         'body': ['Original body'],
         'course_id': [str(self.course.id)],
         'user_id': [str(self.user.id)],
         'anonymous': ['False'],
         'anonymous_to_peers': ['False'],
         'endorsed': ['False']
     }
Пример #5
0
 def test_create_anonymous(self):
     """
     Test that serializer correctly deserializes the anonymous field when
     creating a new comment.
     """
     self.register_post_comment_response({"username": self.user.username},
                                         thread_id="test_thread")
     data = self.minimal_data.copy()
     data["anonymous"] = True
     self.save_and_reserialize(data)
     assert parsed_body(httpretty.last_request())["anonymous"] == ['True']
Пример #6
0
 def test_update_empty(self):
     self.register_put_thread_response(self.existing_thread.attributes)
     self.save_and_reserialize({}, self.existing_thread)
     assert parsed_body(httpretty.last_request()) == {
         'course_id': [str(self.course.id)],
         'commentable_id': ['original_topic'],
         'thread_type': ['discussion'],
         'title': ['Original Title'],
         'body': ['Original body'],
         'anonymous': ['False'],
         'anonymous_to_peers': ['False'],
         'closed': ['False'],
         'pinned': ['False'],
         'user_id': [str(self.user.id)],
         'read': ['False']
     }
Пример #7
0
 def test_create_all_fields(self):
     self.register_post_thread_response({
         "id": "test_id",
         "username": self.user.username
     })
     data = self.minimal_data.copy()
     data["group_id"] = 42
     self.save_and_reserialize(data)
     assert parsed_body(httpretty.last_request()) == {
         'course_id': [str(self.course.id)],
         'commentable_id': ['test_topic'],
         'thread_type': ['discussion'],
         'title': ['Test Title'],
         'body': ['Test body'],
         'user_id': [str(self.user.id)],
         'group_id': ['42'],
         'anonymous': ['False'],
         'anonymous_to_peers': ['False'],
     }
Пример #8
0
 def test_create_minimal(self):
     self.register_post_thread_response({
         "id": "test_id",
         "username": self.user.username
     })
     saved = self.save_and_reserialize(self.minimal_data)
     assert urlparse(httpretty.last_request().path).path ==\
            '/api/v1/test_topic/threads'  # lint-amnesty, pylint: disable=no-member
     assert parsed_body(httpretty.last_request()) == {
         'course_id': [str(self.course.id)],
         'commentable_id': ['test_topic'],
         'thread_type': ['discussion'],
         'title': ['Test Title'],
         'body': ['Test body'],
         'user_id': [str(self.user.id)],
         'anonymous': ['False'],
         'anonymous_to_peers': ['False'],
     }
     assert saved['id'] == 'test_id'
Пример #9
0
 def test_create_endorsed(self):
     # TODO: The comments service doesn't populate the endorsement field on
     # comment creation, so this is sadly realistic
     self.register_post_comment_response({"username": self.user.username},
                                         thread_id="test_thread")
     data = self.minimal_data.copy()
     data["endorsed"] = True
     saved = self.save_and_reserialize(data)
     assert parsed_body(httpretty.last_request()) == {
         'course_id': [str(self.course.id)],
         'body': ['Test body'],
         'user_id': [str(self.user.id)],
         'endorsed': ['True'],
         'anonymous': ['False'],
         'anonymous_to_peers': ['False'],
     }
     assert saved['endorsed']
     assert saved['endorsed_by'] is None
     assert saved['endorsed_by_label'] is None
     assert saved['endorsed_at'] is None
Пример #10
0
 def test_update_all(self):
     cs_response_data = self.existing_comment.attributes.copy()
     cs_response_data["endorsement"] = {
         "user_id": str(self.user.id),
         "time": "2015-06-05T00:00:00Z",
     }
     self.register_put_comment_response(cs_response_data)
     data = {"raw_body": "Edited body", "endorsed": True}
     saved = self.save_and_reserialize(data, instance=self.existing_comment)
     assert parsed_body(httpretty.last_request()) == {
         'body': ['Edited body'],
         'course_id': [str(self.course.id)],
         'user_id': [str(self.user.id)],
         'anonymous': ['False'],
         'anonymous_to_peers': ['False'],
         'endorsed': ['True'],
         'endorsement_user_id': [str(self.user.id)]
     }
     for key in data:
         assert saved[key] == data[key]
     assert saved['endorsed_by'] == self.user.username
     assert saved['endorsed_at'] == '2015-06-05T00:00:00Z'
Пример #11
0
 def test_create_all_fields(self):
     data = self.minimal_data.copy()
     data["parent_id"] = "test_parent"
     data["endorsed"] = True
     self.register_get_comment_response({
         "thread_id": "test_thread",
         "id": "test_parent"
     })
     self.register_post_comment_response(
         {
             "id": "test_comment",
             "username": self.user.username
         },
         thread_id="test_thread",
         parent_id="test_parent")
     self.save_and_reserialize(data)
     assert parsed_body(httpretty.last_request()) == {
         'course_id': [str(self.course.id)],
         'body': ['Test body'],
         'user_id': [str(self.user.id)],
         'endorsed': ['True'],
         'anonymous': ['False'],
         'anonymous_to_peers': ['False'],
     }