ConnectionTest::testSelectDatabase()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 10

Duplication

Lines 26
Ratio 100 %

Importance

Changes 0
Metric Value
dl 26
loc 26
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 10
nc 1
nop 0
1
<?php
2
3
namespace CouchDB\Tests;
4
5
use CouchDB\Connection;
6
use CouchDB\Exception\Exception;
7
use GuzzleHttp\Psr7\Response;
8
9
/**
10
 * @author Markus Bachmann <[email protected]>
11
 */
12
class ConnectionTest extends TestCase
13
{
14 View Code Duplication
    public function testListDatabases()
15
    {
16
        $this->mock->append(new Response(200, [], '["_users"]'));
17
        $this->assertEquals(['_users'], $this->connection->listDatabases());
18
19
        $request = $this->mock->getLastRequest();
20
21
        $this->assertEquals('GET', $request->getMethod());
22
        $this->assertEquals('/_all_dbs', $request->getUri()->getPath());
23
    }
24
25
    public function testCreateDatabase()
26
    {
27
        $this->mock->append(new Response(200, [], '{"ok": true}'));
28
        $this->connection->createDatabase('test');
29
30
        $request = $this->mock->getLastRequest();
31
32
        $this->assertEquals('PUT', $request->getMethod());
33
        $this->assertEquals('/test', $request->getUri()->getPath());
34
    }
35
36 View Code Duplication
    public function testSelectDatabase()
37
    {
38
        $this->mock->append(new Response(200, [], <<<JSON
39
{
40
    "compact_running": false,
41
    "db_name": "test",
42
    "disk_format_version": 5,
43
    "disk_size": 12377,
44
    "doc_count": 1,
45
    "doc_del_count": 1,
46
    "instance_start_time": "1267612389906234",
47
    "purge_seq": 0,
48
    "update_seq": 4
49
}
50
JSON
51
        ));
52
53
        $database = $this->connection->selectDatabase('test');
54
        $this->assertInstanceOf('CouchDB\\Database', $database);
55
        $this->assertEquals('test', $database->getName());
56
57
        $request = $this->mock->getLastRequest();
58
59
        $this->assertEquals('GET', $request->getMethod());
60
        $this->assertEquals('/test/', $request->getUri()->getPath());
61
    }
62
63 View Code Duplication
    public function testCreateExistingDatabase()
64
    {
65
        $this->mock->append(new Response(412, [], ''));
66
67
        try {
68
            $this->connection->createDatabase('test');
69
            $this->fail();
70
        } catch (Exception $e) {
71
            $this->assertEquals('The database "test" already exist', $e->getMessage());
72
        }
73
    }
74
75
    /**
76
     * @expectedException CouchDB\Exception\Exception
77
     */
78
    public function testFailingCreateDatabase()
79
    {
80
        $this->mock->append(new Response(200, [], '{"error":"conflict","reason":"Document update conflict."}'));
81
82
        $this->connection->createDatabase('test');
83
    }
84
85
    /**
86
     * @expectedException CouchDB\Exception\InvalidDatabasenameException
87
     */
88
    public function testCreateDatabaseWithInvalidName()
89
    {
90
        $this->connection->createDatabase('Test');
91
    }
92
93 View Code Duplication
    public function testGetNotExistingDatabase()
94
    {
95
        $this->mock->append(new Response(404, []));
96
97
        try {
98
            $this->connection->selectDatabase('test');
99
            $this->fail();
100
        } catch (Exception $e) {
101
            $this->assertEquals('The database "test" does not exist', $e->getMessage());
102
        }
103
    }
104
105
    public function testHasDatabase()
106
    {
107
        $this->mock->append(new Response(404, []));
108
109
        $this->assertFalse($this->connection->hasDatabase('test'));
110
    }
111
112
    public function testHasDatabaseWithExistingDatabase()
113
    {
114
        $this->mock->append(new Response(200, []));
115
116
        $this->assertTrue($this->connection->hasDatabase('test'));
117
    }
118
119
    public function testDropDatabase()
120
    {
121
        $this->mock->append(new Response(200, [], '{"ok": true}'));
122
123
        $this->connection->dropDatabase('test');
124
125
        $request = $this->mock->getLastRequest();
126
127
        $this->assertEquals('DELETE', $request->getMethod());
128
        $this->assertEquals('/test/', $request->getUri()->getPath());
129
    }
130
131 View Code Duplication
    public function testDropNotExistDatabase()
132
    {
133
        $this->mock->append(new Response(404, []));
134
135
        try {
136
            $this->connection->dropDatabase('test');
137
            $this->fail();
138
        } catch (Exception $e) {
139
            $this->assertEquals('The database "test" does not exist', $e->getMessage());
140
        }
141
    }
142
143 View Code Duplication
    public function testGetVersion()
144
    {
145
        $this->mock->append(new Response(200, [], '{"couchdb":"Welcome","version":"0.11.0"}'));
146
147
        $version = $this->connection->version();
148
        $request = $this->mock->getLastRequest();
149
150
        $this->assertEquals('0.11.0', $version);
151
152
        $this->assertEquals('GET', $request->getMethod());
153
        $this->assertEquals('/', $request->getUri()->getPath());
154
    }
155
156
    public function testGetEventManager()
157
    {
158
        $client = $this->getMock('GuzzleHttp\\ClientInterface');
159
        $evm = $this->getMock('Doctrine\\Common\\EventManager');
160
161
        $connection = new Connection($client, $evm);
162
163
        $this->assertEquals($evm, $connection->getEventManager());
164
    }
165
}
166