| 1 | # -*- coding: utf-8 -*- |
|---|
| 2 | |
|---|
| 3 | import unittest |
|---|
| 4 | from trac.test import EnvironmentStub, Mock, MockPerm |
|---|
| 5 | from ..model import PeerReviewModel, ReviewFileModel, PeerReviewModelProvider |
|---|
| 6 | from ..peerReviewCommentCallback import PeerReviewCommentHandler |
|---|
| 7 | from ..peerReviewPerform import get_parent_file_id |
|---|
| 8 | |
|---|
| 9 | |
|---|
| 10 | __author__ = 'Cinc' |
|---|
| 11 | __copyright__ = "Copyright 2016" |
|---|
| 12 | __license__ = "BSD" |
|---|
| 13 | |
|---|
| 14 | |
|---|
| 15 | def _prepare_file_data(env): |
|---|
| 16 | # review_id, path, start, end, revision, status |
|---|
| 17 | files = [ |
|---|
| 18 | [1, '/foo/bar', 5, 100, '1234', 'new'], |
|---|
| 19 | [1, '/foo/bar2', 6, 101, '1234', 'new'], |
|---|
| 20 | [2, '/foo/bar', 5, 100, '1234', 'new'], |
|---|
| 21 | [2, '/foo/bar2', 6, 101, '12346', 'new'], |
|---|
| 22 | [2, '/foo/bar3', 7, 102, '12347', 'new'], |
|---|
| 23 | [3, '/foo/bar2', 6, 101, '1234', 'new'], |
|---|
| 24 | [4, '/foo/bar', 5, 100, '1234', 'new'], |
|---|
| 25 | [4, '/foo/bar2', 6, 101, '1234', 'new'], |
|---|
| 26 | ] |
|---|
| 27 | for f in files: |
|---|
| 28 | rfm = ReviewFileModel(env) |
|---|
| 29 | rfm['review_id'] = f[0] |
|---|
| 30 | rfm['path'] = f[1] |
|---|
| 31 | rfm['line_start'] = f[2] |
|---|
| 32 | rfm['line_end'] = f[3] |
|---|
| 33 | rfm['revision'] = f[4] |
|---|
| 34 | rfm['status'] = f[5] |
|---|
| 35 | rfm.insert() |
|---|
| 36 | |
|---|
| 37 | |
|---|
| 38 | def _prepare_review_data(env): |
|---|
| 39 | # name, status |
|---|
| 40 | revs = [ |
|---|
| 41 | ['name1', 'new'], |
|---|
| 42 | ['name2', 'closed'], |
|---|
| 43 | ['name3', 'new'], |
|---|
| 44 | ['name4', 'foo'] |
|---|
| 45 | ] |
|---|
| 46 | for rev in revs: |
|---|
| 47 | r = PeerReviewModel(env) |
|---|
| 48 | r['name'] = rev[0] |
|---|
| 49 | r['status'] = rev[1] |
|---|
| 50 | r.insert() |
|---|
| 51 | |
|---|
| 52 | |
|---|
| 53 | class TestReviewFileModel(unittest.TestCase): |
|---|
| 54 | |
|---|
| 55 | @classmethod |
|---|
| 56 | def setUpClass(cls): |
|---|
| 57 | cls.env = EnvironmentStub(default_data=True, enable=['trac.*', 'codereview.*']) |
|---|
| 58 | PeerReviewModelProvider(cls.env).environment_created() |
|---|
| 59 | _prepare_file_data(cls.env) |
|---|
| 60 | _prepare_review_data(cls.env) |
|---|
| 61 | cls.plugin = PeerReviewCommentHandler(cls.env) |
|---|
| 62 | cls.req = Mock(href=Mock(), perm=MockPerm()) |
|---|
| 63 | cls.req.authname = 'tester' |
|---|
| 64 | |
|---|
| 65 | @classmethod |
|---|
| 66 | def tearDownClass(cls): |
|---|
| 67 | cls.env.shutdown() |
|---|
| 68 | |
|---|
| 69 | def test_get_parent_file_id(self): |
|---|
| 70 | class RFile(object): |
|---|
| 71 | pass |
|---|
| 72 | |
|---|
| 73 | rf_old = ReviewFileModel(self.env) |
|---|
| 74 | rf_old['path'] = '/foo/bar' |
|---|
| 75 | rf_old['line_start'] = 5 |
|---|
| 76 | rf_old['line_end'] = 100 |
|---|
| 77 | self.assertEqual(1, get_parent_file_id(self.env, rf_old, 1)) |
|---|
| 78 | self.assertEqual(3, get_parent_file_id(self.env, rf_old, 2)) |
|---|
| 79 | self.assertEqual(0, get_parent_file_id(self.env, rf_old, 3)) |
|---|
| 80 | self.assertEqual(7, get_parent_file_id(self.env, rf_old, 4)) |
|---|
| 81 | |
|---|
| 82 | |
|---|
| 83 | def reviewfile_model_suite(): |
|---|
| 84 | suite = unittest.TestSuite() |
|---|
| 85 | |
|---|
| 86 | suite.addTest(unittest.makeSuite(TestReviewFileModel)) |
|---|
| 87 | |
|---|
| 88 | return suite |
|---|