source: peerreviewplugin/tags/0.12/3.1/codereview/tests/db.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: 2.4 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# Copyright (C) 2016 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"
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        db = self.env.get_read_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        table_len = [
51            ['peerreview', 10],
52            ['peerreviewfile', 11],
53            ['peerreviewcomment', 11],
54            ['peerreviewer', 5],
55            ['peerreviewdata', 9],
56        ]
57        @self.env.with_transaction()
58        def do_insert(db):
59            cursor = db.cursor()
60            cursor.execute("INSERT INTO peerreview (owner) VALUES('tester'); ")
61            cursor.execute("INSERT INTO peerreviewer (review_id) VALUES(1); ")
62            cursor.execute("INSERT INTO peerreviewfile (path) VALUES('/foo/bar'); ")
63            cursor.execute("INSERT INTO peerreviewcomment (author) VALUES('tester'); ")
64            cursor.execute("INSERT INTO peerreviewdata (review_id) VALUES(1); ")
65        for name, row_len in table_len:
66            cursor.execute("SELECT * FROM %s " % name)
67            row = cursor.fetchone()
68            self.assertEqual(row_len, len(row))
69
70
71def db_suite():
72    suite = unittest.TestSuite()
73
74    suite.addTest(unittest.makeSuite(TestDbInitialUpgrade))
75
76    return suite
Note: See TracBrowser for help on using the repository browser.