source: peerreviewplugin/trunk/codereview/tests/test_reviewer.py

Last change on this file was 17439, checked in by Cinc-th, 4 years ago

PeerReviewPlugin: replaced deprecated env.get_red_db() in PeerReviewMain.resource_exists(). Added tests for resource handling. Improved test suite creation. Removal of minor debug output.

File size: 3.5 KB
Line 
1# -*- coding: utf-8 -*-
2
3import unittest
4from datetime import datetime
5from codereview.model import PeerReviewerModel, PeerReviewModelProvider
6from trac.test import EnvironmentStub
7from trac.util.datefmt import to_datetime, to_utimestamp
8
9
10def _prepare_review_data(env):
11    # owner, status, name, notes, parent_id
12    revs = [
13        ['Rev1', 'bar', to_utimestamp(to_datetime(datetime(2019, 2, 4))), 'name1', 'note1', 0],
14        ['Rev1', 'closed', to_utimestamp(to_datetime(datetime(2019, 3, 4))), 'name2', 'note2', 0],
15        ['Rev2', 'bar', to_utimestamp(to_datetime(datetime(2019, 3, 14))), 'name3', 'note3', 1],
16        ['Rev3', 'foo', to_utimestamp(to_datetime(datetime(2019, 4, 4))), 'name4', 'note4', 2]
17    ]
18
19    with env.db_transaction as db:
20        cursor = db.cursor()
21        for rev in revs:
22            cursor.execute("INSERT INTO peerreview (owner, status, created, name, notes, parent_id) "
23                           "VALUES (%s,%s,%s,%s,%s,%s)", rev)
24
25
26class TestPeerReviewerModel(unittest.TestCase):
27
28    def setUp(self):
29        self.env = EnvironmentStub(default_data=True, enable=['trac.*', 'codereview.*'])
30        PeerReviewModelProvider(self.env).environment_created()
31
32    def tearDown(self):
33        self.env.shutdown()
34
35    def test_insert_delete(self):
36        names = ('user1', 'user2', 'user3')
37        for user in names:
38            rev = PeerReviewerModel(self.env)
39            rev['review_id'] = 3
40            rev['reviewer'] = user
41            rev['vote'] = -1
42            rev.insert()
43        rows = []
44        for row in self.env.db_query("SELECT * FROM peerreviewer"):
45            self.assertEqual(5, len(row))
46            rows.append(row)
47        self.assertEqual(3, len(rows))
48
49        names2 = ('user4', 'user5')
50        for user in names2:
51            rev = PeerReviewerModel(self.env)
52            rev['review_id'] = 4
53            rev['reviewer'] = user
54            rev['vote'] = -1
55            rev.insert()
56        users = []
57        for row in self.env.db_query("SELECT * FROM peerreviewer"):
58            self.assertEqual(5, len(row))
59            users.append(row[2])
60        self.assertEqual(5, len(users))
61        # Check if different users are created
62        for item in names + names2:
63            self.assertIn(item, users)
64
65        # Test deletion
66        rev = PeerReviewerModel(self.env, 2)
67        rev.delete()
68        users = []
69        for row in self.env.db_query("SELECT * FROM peerreviewer"):
70            self.assertEqual(5, len(row))
71            users.append(row[2])
72        self.assertEqual(4, len(users))
73        self.assertNotIn('user2', users)
74
75    def test_select_by_review_id(self):
76        # Preparation
77        # reviewer (name), review_id
78        names = (['user1', 3], ['user2', 3], ['user3', 3],
79                 ['user4', 4], ['user5', 4])
80        for user in names:
81            rev = PeerReviewerModel(self.env)
82            rev['review_id'] = user[1]
83            rev['reviewer'] = user[0]
84            rev['vote'] = -1
85            rev.insert()
86        users = []
87        for row in self.env.db_query("SELECT * FROM peerreviewer"):
88            self.assertEqual(5, len(row))
89            users.append(row[2])
90        self.assertEqual(5, len(users))
91
92        # Test
93        reviewers = list(PeerReviewerModel.select_by_review_id(self.env, 3))
94        self.assertEqual(3, len(reviewers))
95        for rev in reviewers:
96            self.assertIn(rev['reviewer'], ('user1', 'user2', 'user3'))
97
98def test_suite():
99    suite = unittest.TestSuite()
100    suite.addTest(unittest.makeSuite(TestPeerReviewerModel))
101    return suite
Note: See TracBrowser for help on using the repository browser.