def update_discussion_comments_core(session, comment_id, member, content, log=regular_log.default()): """ Updates a comment. At this point we assume data has been validated so no extra checks are done to the input data. Only check is for permissions of edition. We do not allow editing comments of another user other than the one that has created the original comment. :param session: :param log: :param member: :param project: :param discussion: :param content: :return: """ comment = DiscussionComment.get_by_id(session=session, id=comment_id) if member.id != comment.member_created_id: log['error'][ 'member'] = 'Member cannot update the comment authored by another member. (Permission denied).' return None, log comment = DiscussionComment.update(session=session, content=content, member=member, comment_id=comment_id) comment_data = comment.serialize() return comment_data, log
def new_discussion_comment_core(session, member, user, project, discussion, content, log=regular_log.default()): """ Creates a new comment. At this point we assume data has been validated so no extra checks are done to the input data. :param session: :param log: :param member: :param project: :param discussion: :param content: :return: """ comment = DiscussionComment.new(session=session, content=content, member_created_id=member.id, project_id=project.id, user_id=user.id if user else None, member_updated_id=member.id, discussion_id=discussion.id) comment_data = comment.serialize() return comment_data, log
def test_list(self): # Create mock issue discussion = data_mocking.create_discussion( { 'project_id': self.project.id, 'name': 'test', 'title': 'test', }, self.session, ) comment1 = data_mocking.create_discussion_comment( { 'discussion_id': discussion.id, 'project_id': self.project.id, 'user_id': self.project_data['users'][0].id, 'content': 'test' }, self.session) comment2 = data_mocking.create_discussion_comment( { 'discussion_id': discussion.id, 'project_id': self.project.id, 'user_id': self.project_data['users'][0].id, 'content': 'test2' }, self.session) comments = DiscussionComment.list(session=self.session, project_id=self.project.id, discussion_id=discussion.id) self.assertIsNotNone(comments) self.assertEqual(len(comments), 2) ids = [comment.id for comment in comments] self.assertTrue(comment1.id in ids) self.assertTrue(comment2.id in ids)
def create_discussion_comment(discussion_comment_data, session): issue_comment = DiscussionComment( discussion_id=discussion_comment_data.get('discussion_id'), user_id=discussion_comment_data.get('user_id'), member_created_id=discussion_comment_data.get('member_created_id'), project_id=discussion_comment_data.get('project_id'), content=discussion_comment_data.get('content'), ) session.add(issue_comment) regular_methods.commit_with_rollback(session) return issue_comment
def test_new(self): # Create mock issue discussion = data_mocking.create_discussion( { 'project_id': self.project.id, 'name': 'test', 'title': 'test', }, self.session, ) content = 'thecontent' issue_comment = DiscussionComment.new(session=self.session, content=content, discussion_id=discussion.id) self.assertIsNotNone(issue_comment) self.assertEqual(issue_comment.content, content) self.assertEqual(issue_comment.discussion_id, discussion.id)
def test_get_by_id(self): # Create mock issue discussion = data_mocking.create_discussion( { 'project_id': self.project.id, 'name': 'test', 'title': 'test', }, self.session, ) issue_comment = data_mocking.create_discussion_comment( { 'discussion_id': discussion.id, 'user_id': self.project_data['users'][0].id, 'content': 'test' }, self.session) issue_comment2 = DiscussionComment.get_by_id(self.session, issue_comment.id) self.assertEqual(issue_comment, issue_comment2)
def list_discussion_comments_core(session, project, discussion, log=regular_log.default()): """ List comments of the discussion. At this point we assume data has been validated so no extra checks are done to the input data. :param session: :param log: :param member: :param project: :param discussion: :param content: :return: """ comments = DiscussionComment.list(session=session, project_id=project.id, discussion_id=discussion.id) comment_data = [comment.serialize() for comment in comments] return comment_data, log
def test_update(self): # Create mock issue discussion = data_mocking.create_discussion( { 'project_id': self.project.id, 'name': 'test', 'title': 'test', }, self.session, ) comment1 = data_mocking.create_discussion_comment( { 'discussion_id': discussion.id, 'user_id': self.project_data['users'][0].id, 'content': 'test' }, self.session) new_content = 'new_content' comment = DiscussionComment.update(session=self.session, comment_id=comment1.id, member=None, content=new_content) self.assertIsNotNone(comment) self.assertEqual(comment.content, new_content)