@@ -16,18 +16,20 @@ public function setUp() {
16
16
// the mocks for any test that wants it
17
17
$ couchdb1 = '{"couchdb":"Welcome","uuid":"fce3d5aabfe189c988273c0ffa8d375b","version":"1.6.0","vendor":{"name":"Ubuntu","version":"15.10"}} ' ;
18
18
$ this ->db_response = new Response (200 , [], $ couchdb1 );
19
+
20
+ // offer a use_response for when selecting this database
21
+ $ egdb1 = '{"db_name":"egdb","update_seq":"0-g1AAAABXeJzLYWBgYMpgTmEQTM4vTc5ISXLIyU9OzMnILy7JAUklMiTV____PyuRAY-iPBYgydAApP5D1GYBAJmvHGw","sizes":{"file":8488,"external":0,"active":0},"purge_seq":0,"other":{"data_size":0},"doc_del_count":0,"doc_count":0,"disk_size":8488,"disk_format_version":6,"data_size":0,"compact_running":false,"instance_start_time":"0"} ' ;
22
+ $ this ->use_response = new Response (200 , [], $ egdb1 );
19
23
}
20
24
21
25
public function testGetAllDocs () {
22
- $ egdb1 = '{"db_name":"egdb","update_seq":"0-g1AAAABXeJzLYWBgYMpgTmEQTM4vTc5ISXLIyU9OzMnILy7JAUklMiTV____PyuRAY-iPBYgydAApP5D1GYBAJmvHGw","sizes":{"file":8488,"external":0,"active":0},"purge_seq":0,"other":{"data_size":0},"doc_del_count":0,"doc_count":0,"disk_size":8488,"disk_format_version":6,"data_size":0,"compact_running":false,"instance_start_time":"0"} ' ;
23
- $ use_response = new Response (200 , [], $ egdb1 );
24
26
$ docs = '{"total_rows":2,"offset":0,"rows":[
25
27
{"id":"95613816b3a7490727388ebb470001a6","key":"95613816b3a7490727388ebb470001a6","value":{"rev":"1-71e39cb1ac06a5974a16c72b26969009"},"doc":{"_id":"95613816b3a7490727388ebb470001a6","_rev":"1-71e39cb1ac06a5974a16c72b26969009","sound":"squeak"}},
26
28
{"id":"95613816b3a7490727388ebb4700165a","key":"95613816b3a7490727388ebb4700165a","value":{"rev":"1-1ed93c4b346f531c5e7d4d69b755ee71"},"doc":{"_id":"95613816b3a7490727388ebb4700165a","_rev":"1-1ed93c4b346f531c5e7d4d69b755ee71","noise":"pop"}}
27
29
]} ' ;
28
30
$ docs_response = new Response (200 , [], $ docs );
29
31
30
- $ mock = new MockHandler ([ $ this ->db_response , $ use_response , $ docs_response ]);
32
+ $ mock = new MockHandler ([ $ this ->db_response , $ this -> use_response , $ docs_response ]);
31
33
32
34
$ handler = HandlerStack::create ($ mock );
33
35
$ client = new Client (['handler ' => $ handler ]);
@@ -42,14 +44,12 @@ public function testGetAllDocs() {
42
44
}
43
45
44
46
public function testGetAllDocsWithNoDocs () {
45
- $ egdb1 = '{"db_name":"egdb","update_seq":"0-g1AAAABXeJzLYWBgYMpgTmEQTM4vTc5ISXLIyU9OzMnILy7JAUklMiTV____PyuRAY-iPBYgydAApP5D1GYBAJmvHGw","sizes":{"file":8488,"external":0,"active":0},"purge_seq":0,"other":{"data_size":0},"doc_del_count":0,"doc_count":0,"disk_size":8488,"disk_format_version":6,"data_size":0,"compact_running":false,"instance_start_time":"0"} ' ;
46
- $ use_response = new Response (200 , [], $ egdb1 );
47
47
$ docs = '{"total_rows":0,"offset":0,"rows":[
48
48
49
49
]} ' ;
50
50
$ docs_response = new Response (200 , [], $ docs );
51
51
52
- $ mock = new MockHandler ([ $ this ->db_response , $ use_response , $ docs_response ]);
52
+ $ mock = new MockHandler ([ $ this ->db_response , $ this -> use_response , $ docs_response ]);
53
53
54
54
$ handler = HandlerStack::create ($ mock );
55
55
$ client = new Client (['handler ' => $ handler ]);
@@ -64,14 +64,12 @@ public function testGetAllDocsWithNoDocs() {
64
64
}
65
65
66
66
public function testCreateWithID () {
67
- $ egdb1 = '{"db_name":"egdb","update_seq":"0-g1AAAABXeJzLYWBgYMpgTmEQTM4vTc5ISXLIyU9OzMnILy7JAUklMiTV____PyuRAY-iPBYgydAApP5D1GYBAJmvHGw","sizes":{"file":8488,"external":0,"active":0},"purge_seq":0,"other":{"data_size":0},"doc_del_count":0,"doc_count":0,"disk_size":8488,"disk_format_version":6,"data_size":0,"compact_running":false,"instance_start_time":"0"} ' ;
68
- $ use_response = new Response (200 , [], $ egdb1 );
69
67
$ create = '{"ok":true,"id":"abcde12345","rev":"1-928ec193918889e122e7ad45cfd88e47"} ' ;
70
68
$ create_response = new Response (201 , [], $ create );
71
69
$ fetch = '{"_id":"abcde12345","_rev":"1-928ec193918889e122e7ad45cfd88e47","noise":"howl"} ' ;
72
70
$ fetch_response = new Response (200 , [], $ fetch );
73
71
74
- $ mock = new MockHandler ([ $ this ->db_response , $ use_response , $ create_response , $ fetch_response ]);
72
+ $ mock = new MockHandler ([ $ this ->db_response , $ this -> use_response , $ create_response , $ fetch_response ]);
75
73
$ handler = HandlerStack::create ($ mock );
76
74
$ client = new Client (['handler ' => $ handler ]);
77
75
@@ -86,14 +84,12 @@ public function testCreateWithID() {
86
84
}
87
85
88
86
public function testCreateWithoutID () {
89
- $ egdb1 = '{"db_name":"egdb","update_seq":"0-g1AAAABXeJzLYWBgYMpgTmEQTM4vTc5ISXLIyU9OzMnILy7JAUklMiTV____PyuRAY-iPBYgydAApP5D1GYBAJmvHGw","sizes":{"file":8488,"external":0,"active":0},"purge_seq":0,"other":{"data_size":0},"doc_del_count":0,"doc_count":0,"disk_size":8488,"disk_format_version":6,"data_size":0,"compact_running":false,"instance_start_time":"0"} ' ;
90
- $ use_response = new Response (200 , [], $ egdb1 );
91
87
$ create = '{"ok":true,"id":"95613816b3a7490727388ebb47002c0f","rev":"1-928ec193918889e122e7ad45cfd88e47"} ' ;
92
88
$ create_response = new Response (201 , [], $ create );
93
89
$ fetch = '{"_id":"95613816b3a7490727388ebb47002c0f","_rev":"1-928ec193918889e122e7ad45cfd88e47","noise":"howl"} ' ;
94
90
$ fetch_response = new Response (200 , [], $ fetch );
95
91
96
- $ mock = new MockHandler ([ $ this ->db_response , $ use_response , $ create_response , $ fetch_response ]);
92
+ $ mock = new MockHandler ([ $ this ->db_response , $ this -> use_response , $ create_response , $ fetch_response ]);
97
93
$ handler = HandlerStack::create ($ mock );
98
94
$ client = new Client (['handler ' => $ handler ]);
99
95
@@ -105,4 +101,26 @@ public function testCreateWithoutID() {
105
101
$ this ->assertInstanceOf ('PHPCouchDB\Document ' , $ doc );
106
102
$ this ->assertObjectHasAttribute ('id ' , $ doc );
107
103
}
104
+
105
+ public function testGetDocById () {
106
+ // create the doc with the id (which also triggers a fetch), then fetch it
107
+ $ create = '{"ok":true,"id":"95613816b3a7490727388ebb47002c0f","rev":"1-928ec193918889e122e7ad45cfd88e47"} ' ;
108
+ $ create_response = new Response (201 , [], $ create );
109
+ $ fetch = '{"_id":"95613816b3a7490727388ebb47002c0f","_rev":"1-928ec193918889e122e7ad45cfd88e47","noise":"howl"} ' ;
110
+ $ fetch_response = new Response (200 , [], $ fetch );
111
+
112
+ $ mock = new MockHandler ([ $ this ->db_response , $ this ->use_response , $ create_response , $ fetch_response , $ fetch_response ]);
113
+ $ handler = HandlerStack::create ($ mock );
114
+ $ client = new Client (['handler ' => $ handler ]);
115
+
116
+ // userland code starts
117
+ $ server = new \PHPCouchDB \Server (["client " => $ client ]);
118
+ $ database = $ server ->useDB (["name " => "egdb " ]);
119
+ $ doc = $ database ->create (["noise " => "crackle " ]);
120
+
121
+ $ fetched_doc = $ database ->getDocById ($ doc ->id );
122
+
123
+ $ this ->assertInstanceOf ('PHPCouchDB\Document ' , $ fetched_doc );
124
+ $ this ->assertObjectHasAttribute ('id ' , $ fetched_doc );
125
+ }
108
126
}
0 commit comments