source: peerreviewplugin/tags/0.12/3.1/codereview/tests/comment_callback.py

Last change on this file was 15525, checked in by Cinc-th, 7 years ago

PeerReviewPlugin: make tests work on OS X.

File size: 3.2 KB
Line 
1# -*- coding: utf-8 -*-
2
3import unittest
4from trac.test import EnvironmentStub, Mock, MockPerm
5from ..model import  PeerReviewModel, ReviewFileModel, PeerReviewModelProvider
6from ..peerReviewCommentCallback import PeerReviewCommentHandler
7
8__author__ = 'Cinc'
9__copyright__ = "Copyright 2016"
10__license__ = "BSD"
11
12
13def _prepare_file_data(env):
14    # review_id, path, start, end, revision, status
15    files = [
16        [1, '/foo/bar', 5, 100, '1234', 'new'],
17        [1, '/foo/bar2', 6, 101, '1234', 'new'],
18        [2, '/foo/bar', 5, 100, '1234', 'new'],
19        [2, '/foo/bar2', 6, 101, '1234', 'new'],
20        [3, '/foo/bar', 5, 100, '1234', 'new'],
21        [3, '/foo/bar2', 6, 101, '1234', 'new'],
22        [4, '/foo/bar', 5, 100, '1234', 'new'],
23        [4, '/foo/bar2', 6, 101, '1234', 'new'],
24    ]
25    for f in files:
26        rfm = ReviewFileModel(env)
27        rfm['review_id'] = f[0]
28        rfm['path'] = f[1]
29        rfm['line_start'] = f[2]
30        rfm['line_end'] = f[3]
31        rfm['revision'] = f[4]
32        rfm['status'] = f[5]
33        rfm.insert()
34
35
36def _prepare_review_data(env):
37    # name, status
38    revs = [
39        ['name1', 'new'],
40        ['name2', 'closed'],
41        ['name3', 'new'],
42        ['name4', 'foo']
43    ]
44    for rev in revs:
45        r = PeerReviewModel(env)
46        r['name'] = rev[0]
47        r['status'] = rev[1]
48        r.insert()
49
50
51def _prepare_comment_data(env):
52    pass
53
54
55class TestCommentHelper(unittest.TestCase):
56
57    @classmethod
58    def setUpClass(cls):
59        cls.env = EnvironmentStub(default_data=True, enable=['trac.*', 'codereview.*'])
60        PeerReviewModelProvider(cls.env).environment_created()
61        _prepare_file_data(cls.env)
62        _prepare_review_data(cls.env)
63        _prepare_comment_data(cls.env)
64        cls.plugin = PeerReviewCommentHandler(cls.env)
65        cls.req = Mock(href=Mock(), perm=MockPerm())
66        cls.req.authname = 'tester'
67
68    @classmethod
69    def tearDownClass(cls):
70        cls.env.shutdown()
71
72    def test_review_is_closed(self):
73        self.req.args = {
74            'IDFile': 1
75        }
76        self.assertFalse(self.plugin.review_is_closed(self.req))
77        self.req.args = {
78            'IDFile': 4
79        }
80        self.assertTrue(self.plugin.review_is_closed(self.req))
81        self.req.args = {
82            'IDFile': 7
83        }
84        self.assertFalse(self.plugin.review_is_closed(self.req))
85
86    def test_get_comment_tree(self):
87        """Only checks if the correct review is selected from the file id."""
88        # There is no test for correct comment tree atm.
89        self.req.args = {
90            'IDFile': 3
91        }
92        data = {}
93        self.plugin.get_comment_tree(self.req, data)
94        self.assertIsNone(data.get('fileID'))
95        self.assertIsNone(data.get('review'))
96
97        self.req.args['LineNum'] = 2
98        self.plugin.get_comment_tree(self.req, data)
99        self.assertTrue(isinstance(data.get('review'), PeerReviewModel))
100        self.assertEqual(2, data.get('review')['review_id'])
101
102
103def comment_callback_suite():
104    suite = unittest.TestSuite()
105
106    suite.addTest(unittest.makeSuite(TestCommentHelper))
107
108    return suite
Note: See TracBrowser for help on using the repository browser.