Completed
Push — master ( ef5eaa...6d70d2 )
by Lars
03:21 queued 30s
created

ConfigTest   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 123
Duplicated Lines 52.03 %

Coupling/Cohesion

Components 1
Dependencies 3
Metric Value
wmc 13
lcom 1
cbo 3
dl 64
loc 123
rs 10

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
use idiorm\orm\ORM;
4
5
class ConfigTest extends PHPUnit_Framework_TestCase {
6
7
    public function setUp() {
8
        // Enable logging
9
        ORM::configure('logging', true);
10
11
        // Set up the dummy database connection
12
        $db = new MockPDO('sqlite::memory:');
13
        ORM::set_db($db);
14
15
        ORM::configure('id_column', 'primary_key');
16
    }
17
18
    public function tearDown() {
19
        ORM::reset_config();
20
        ORM::reset_db();
21
    }
22
23
    protected function setUpIdColumnOverrides() {
24
        ORM::configure('id_column_overrides', array(
25
            'widget' => 'widget_id',
26
            'widget_handle' => 'widget_handle_id',
27
        ));
28
    }
29
30
    protected function tearDownIdColumnOverrides() {
31
        ORM::configure('id_column_overrides', array());
32
    }
33
34
    public function testSettingIdColumn() {
35
        ORM::for_table('widget')->find_one(5);
36
        $expected = "SELECT * FROM `widget` WHERE `primary_key` = '5' LIMIT 1";
37
        $this->assertEquals($expected, ORM::get_last_query());
38
    }
39
40
    public function testSettingIdColumnOverridesOne() {
41
        $this->setUpIdColumnOverrides();
42
43
        ORM::for_table('widget')->find_one(5);
44
        $expected = "SELECT * FROM `widget` WHERE `widget_id` = '5' LIMIT 1";
45
        $this->assertEquals($expected, ORM::get_last_query());
46
47
        $this->tearDownIdColumnOverrides();
48
    }
49
50
    public function testSettingIdColumnOverridesTwo() {
51
        $this->setUpIdColumnOverrides();
52
53
        ORM::for_table('widget_handle')->find_one(5);
54
        $expected = "SELECT * FROM `widget_handle` WHERE `widget_handle_id` = '5' LIMIT 1";
55
        $this->assertEquals($expected, ORM::get_last_query());
56
57
        $this->tearDownIdColumnOverrides();
58
    }
59
60
    public function testSettingIdColumnOverridesThree() {
61
        $this->setUpIdColumnOverrides();
62
63
        ORM::for_table('widget_nozzle')->find_one(5);
64
        $expected = "SELECT * FROM `widget_nozzle` WHERE `primary_key` = '5' LIMIT 1";
65
        $this->assertEquals($expected, ORM::get_last_query());
66
67
        $this->tearDownIdColumnOverrides();
68
    }
69
70
    public function testInstanceIdColumnOne() {
71
        $this->setUpIdColumnOverrides();
72
73
        ORM::for_table('widget')->use_id_column('new_id')->find_one(5);
74
        $expected = "SELECT * FROM `widget` WHERE `new_id` = '5' LIMIT 1";
75
        $this->assertEquals($expected, ORM::get_last_query());
76
77
        $this->tearDownIdColumnOverrides();
78
    }
79
80
    public function testInstanceIdColumnTwo() {
81
        $this->setUpIdColumnOverrides();
82
83
        ORM::for_table('widget_handle')->use_id_column('new_id')->find_one(5);
84
        $expected = "SELECT * FROM `widget_handle` WHERE `new_id` = '5' LIMIT 1";
85
        $this->assertEquals($expected, ORM::get_last_query());
86
87
        $this->tearDownIdColumnOverrides();
88
    }
89
90
    public function testInstanceIdColumnThree() {
91
        $this->setUpIdColumnOverrides();
92
93
        ORM::for_table('widget_nozzle')->use_id_column('new_id')->find_one(5);
94
        $expected = "SELECT * FROM `widget_nozzle` WHERE `new_id` = '5' LIMIT 1";
95
        $this->assertEquals($expected, ORM::get_last_query());
96
97
        $this->tearDownIdColumnOverrides();
98
    }
99
100
    public function testGetConfig() {
101
        $this->assertTrue(ORM::get_config('logging'));
102
        ORM::configure('logging', false);
103
        $this->assertFalse(ORM::get_config('logging'));
104
        ORM::configure('logging', true);
105
    }
106
107
    public function testGetConfigArray() {
108
        $expected = array(
109
            'connection_string' => 'sqlite::memory:',
110
            'id_column' => 'primary_key',
111
            'id_column_overrides' => array(),
112
            'error_mode' => PDO::ERRMODE_EXCEPTION,
113
            'username' => null,
114
            'password' => null,
115
            'driver_options' => null,
116
            'identifier_quote_character' => '`',
117
            'logging' => true,
118
            'logger' => null,
119
            'caching' => false,
120
            'caching_auto_clear' => false,
121
            'return_result_sets' => false,
122
            'limit_clause_style' => 'limit',
123
        );
124
        $this->assertEquals($expected, ORM::get_config());
125
    }
126
127
}
128