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

Last change on this file was 18049, checked in by Cinc-th, 3 years ago

PeerReviewPlugin: replaced decorator with_transaction from trac.db with env.db_transaction context manager. Replace env.get_read_db() with env.db_query context manager.

Refs #13972

File size: 2.5 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# Copyright (C) 2016-2021 Cinc
4# All rights reserved.
5#
6# This software is licensed as described in the file COPYING.txt, which
7# you should have received as part of this distribution.
8#
9# Author: Cinc
10#
11
12import unittest
13from trac.test import *
14from ..model import PeerReviewModelProvider
15
16__author__ = 'Cinc'
17__copyright__ = "Copyright 2016-2021"
18__license__ = "BSD"
19
20
21class TestDbInitialUpgrade(unittest.TestCase):
22    """Note that this only tests a clean install atm."""
23
24    @classmethod
25    def setUpClass(cls):
26        cls.env = EnvironmentStub(enable=['trac.*', 'codereview.*'])
27
28    @classmethod
29    def tearDownClass(cls):
30        cls.env.shutdown()
31
32    def test_db_init(self):
33        # Update database schema
34        self.assertIsNone(PeerReviewModelProvider(self.env).environment_created())
35        # Check for correct versions
36        with self.env.db_query as db:
37            cursor = db.cursor()
38            tables = [
39                ['peerreview_version', 6],
40                ['peerreviewfile_version', 5],
41                ['peerreviewcomment_version', 6],
42                ['peerreviewer_version', 5],
43                ['peerreviewdata_version', 3],
44            ]
45            for name, ver in tables:
46                cursor.execute("select value FROM system WHERE name = %s", (name,))
47                row = cursor.fetchone()
48                self.assertEqual(ver, int(row[0]))
49            # Check row len
50        with self.env.db_transaction as db:
51            table_len = [
52                ['peerreview', 10],
53                ['peerreviewfile', 11],
54                ['peerreviewcomment', 11],
55                ['peerreviewer', 5],
56                ['peerreviewdata', 9],
57            ]
58            cursor = db.cursor()
59            cursor.execute("INSERT INTO peerreview (owner) VALUES('tester'); ")
60            cursor.execute("INSERT INTO peerreviewer (review_id) VALUES(1); ")
61            cursor.execute("INSERT INTO peerreviewfile (path) VALUES('/foo/bar'); ")
62            cursor.execute("INSERT INTO peerreviewcomment (author) VALUES('tester'); ")
63            cursor.execute("INSERT INTO peerreviewdata (review_id) VALUES(1); ")
64            for name, row_len in table_len:
65                cursor.execute("SELECT * FROM %s " % name)
66                row = cursor.fetchone()
67                self.assertEqual(row_len, len(row))
68
69
70def db_suite():
71    suite = unittest.TestSuite()
72
73    suite.addTest(unittest.makeSuite(TestDbInitialUpgrade))
74
75    return suite
Note: See TracBrowser for help on using the repository browser.