def test_list_discussion_comments_core(self):
        # Create mock discussion
        discussion = data_mocking.create_discussion(
            {
                'title': 'test',
                'description': 'test',
                'project_id': self.project.id
            }, self.session)

        comment1 = data_mocking.create_discussion_comment(
            {
                'discussion_id': discussion.id,
                'project_id': self.project.id,
                'content': 'test'
            }, self.session)

        comment2 = data_mocking.create_discussion_comment(
            {
                'discussion_id': discussion.id,
                'project_id': self.project.id,
                'content': 'test'
            }, self.session)
        result, log = discussion_comment_list.list_discussion_comments_core(
            session=self.session,
            log=regular_log.default(),
            project=self.project,
            discussion=discussion,
        )
        self.assertIsNotNone(result)
        self.assertEqual(len(log['error'].keys()), 0)
        self.assertEqual(len(result), 2)
        ids = [x['id'] for x in result]
        self.assertTrue(comment1.id in ids)
        self.assertTrue(comment2.id in ids)
 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 test_update_discussion_comments_core(self):
        # Create mock discussion
        discussion = data_mocking.create_discussion(
            {
                'title': 'test',
                'description': 'test',
                'project_id': self.project.id
            }, self.session)

        member = self.project_data['users'][0].member

        comment1 = data_mocking.create_discussion_comment(
            {
                'discussion_id': discussion.id,
                'member_created_id': member.id,
                'project_id': self.project.id,
                'content': 'test'
            }, self.session)

        new_content = 'new content.'
        result, log = discussion_comment_update.update_discussion_comments_core(
            session=self.session,
            comment_id=comment1.id,
            content=new_content,
            member=member,
            log=regular_log.default(),
        )
        self.assertTrue(len(log['error'].keys()) == 0)
        self.assertIsNotNone(result)
        self.assertEqual(result['content'], new_content)
    def test_list_discussion_comment_web(self):
        # Create mock discussion
        discussion = data_mocking.create_discussion(
            {
                'title': 'test',
                'description': 'test',
                'project_id': self.project.id
            }, self.session)

        comment1 = data_mocking.create_discussion_comment(
            {
                'discussion_id': discussion.id,
                'project_id': self.project.id,
                'content': 'test'
            }, self.session)

        comment2 = data_mocking.create_discussion_comment(
            {
                'discussion_id': discussion.id,
                'project_id': self.project.id,
                'content': 'test'
            }, self.session)

        request_data = {}
        endpoint = "/api/v1/project/{}/discussion/{}/comments".format(
            self.project.project_string_id, discussion.id)
        auth_api = common_actions.create_project_auth(project=self.project,
                                                      session=self.session)
        credentials = b64encode(
            "{}:{}".format(auth_api.client_id,
                           auth_api.client_secret).encode()).decode('utf-8')
        response = self.client.post(endpoint,
                                    data=json.dumps(request_data),
                                    headers={
                                        'directory_id':
                                        str(self.project.directory_default_id),
                                        'Authorization':
                                        'Basic {}'.format(credentials)
                                    })
        data = response.json
        self.assertEqual(response.status_code, 200)
        self.assertTrue('comments' in data)
        self.assertEqual(len(data['comments']), 2)
        ids = [comment['id'] for comment in data['comments']]
        self.assertTrue(comment1.id in ids)
        self.assertTrue(comment2.id in ids)
    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 test_serialize(self):
     discussion = data_mocking.create_discussion(
         {
             'project_id': self.project.id,
             'name': 'test',
             'title': 'test',
         },
         self.session,
     )
     discussion_comment = data_mocking.create_discussion_comment(
         {
             'discussion_id': discussion.id,
             'user_id': self.project_data['users'][0].id,
             'content': 'test'
         }, self.session)
     discussion_comment_data = discussion_comment.serialize()
     self.assertTrue('id' in discussion_comment_data)
     self.assertTrue('user' in discussion_comment_data)
     self.assertTrue('discussion_id' in discussion_comment_data)
     self.assertTrue('content' in discussion_comment_data)
    def test_update_discussion_comment_web(self):
        # Create mock discussion
        discussion = data_mocking.create_discussion(
            {
                'title': 'test',
                'description': 'test',
                'project_id': self.project.id
            }, self.session)
        auth_api = common_actions.create_project_auth(project=self.project,
                                                      session=self.session)
        member = auth_api.member
        comment1 = data_mocking.create_discussion_comment(
            {
                'discussion_id': discussion.id,
                'member_created_id': member.id,
                'project_id': self.project.id,
                'content': 'test'
            }, self.session)

        new_content = 'new content.'
        request_data = {'comment_id': comment1.id, 'content': new_content}
        endpoint = "/api/v1/project/{}/discussion/{}/update-comment".format(
            self.project.project_string_id, discussion.id)

        credentials = b64encode(
            "{}:{}".format(auth_api.client_id,
                           auth_api.client_secret).encode()).decode('utf-8')
        response = self.client.post(endpoint,
                                    data=json.dumps(request_data),
                                    headers={
                                        'directory_id':
                                        str(self.project.directory_default_id),
                                        'Authorization':
                                        'Basic {}'.format(credentials)
                                    })
        data = response.json
        self.assertEqual(response.status_code, 200)
        self.assertTrue('comment' in data)
        self.assertEqual(data['comment']['content'], new_content)
    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)