akdubya-cushion 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +176 -0
- data/README.rdoc +226 -0
- data/Rakefile +65 -0
- data/lib/cushion.rb +97 -0
- data/lib/cushion/core_ext.rb +27 -0
- data/lib/cushion/database.rb +310 -0
- data/lib/cushion/design.rb +33 -0
- data/lib/cushion/document.rb +117 -0
- data/lib/cushion/server.rb +208 -0
- data/spec/cushion_spec.rb +9 -0
- data/spec/database_spec.rb +223 -0
- data/spec/helpers.rb +2 -0
- data/spec/server_spec.rb +119 -0
- metadata +75 -0
data/spec/helpers.rb
ADDED
data/spec/server_spec.rb
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/helpers'
|
|
2
|
+
|
|
3
|
+
describe "Cushion::Server" do
|
|
4
|
+
|
|
5
|
+
before do
|
|
6
|
+
@server = Cushion::Server.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "Operations" do
|
|
10
|
+
|
|
11
|
+
it "should retrieve the welcome message" do
|
|
12
|
+
@server.info["couchdb"].should == "Welcome"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should retrieve active tasks" do
|
|
16
|
+
@server.active_tasks.should == []
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should retrieve the server config" do
|
|
20
|
+
@server.config["couchdb"].should.not.be.nil
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should set config options" do
|
|
24
|
+
@server.set_config("newsection", "newoption", "newvalue").should == "\"newvalue\"\n"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should restart the server" do
|
|
28
|
+
@server.restart["ok"].should.be.true
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should retrieve server stats" do
|
|
32
|
+
@server.stats["httpd_status_codes"].should.not.be.nil
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should retrieve and cache UUIDs from the server" do
|
|
36
|
+
@server.next_uuid.length.should == 32
|
|
37
|
+
@server.instance_variable_get(:@uuids).length.should == 999
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe "Databases" do
|
|
43
|
+
|
|
44
|
+
it "should create and delete databases" do
|
|
45
|
+
@server.create(:server_test)["ok"].should.be.true
|
|
46
|
+
@server.delete(:server_test)["ok"].should.be.true
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should retrieve a list of all databases on the server" do
|
|
50
|
+
@server.create(:server_list_test)
|
|
51
|
+
@server.all_dbs.should.include "server_list_test"
|
|
52
|
+
@server.delete(:server_list_test)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "should recreate a database" do
|
|
56
|
+
@server.recreate(:server_recreate_test).should.be.kind_of Cushion::Database
|
|
57
|
+
@server.all_dbs.should.include "server_recreate_test"
|
|
58
|
+
@server.delete(:server_recreate_test)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "should instantiate a Cushion::Database with server[:dbname]" do
|
|
62
|
+
@server[:server_test].should.be.kind_of Cushion::Database
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "should instantiate a Cushion::Database with db('dbname')" do
|
|
66
|
+
@server.db(:server_test).should.be.kind_of Cushion::Database
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "should create a database if it does not already exist with db!('dbname')" do
|
|
70
|
+
@server.db!(:server_autocreate_test).should.be.kind_of Cushion::Database
|
|
71
|
+
@server.all_dbs.should.include "server_autocreate_test"
|
|
72
|
+
@server.delete(:server_autocreate_test)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
describe "Replication" do
|
|
78
|
+
|
|
79
|
+
before do
|
|
80
|
+
@server.create(:server_replication_test1)
|
|
81
|
+
@server.create(:server_replication_test2)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
after do
|
|
85
|
+
@server.delete(:server_replication_test1)
|
|
86
|
+
@server.delete(:server_replication_test2)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "should replicate databases" do
|
|
90
|
+
@server[:server_replication_test1].save_doc("_id" => "abc")
|
|
91
|
+
@server.replicate(:server_replication_test1, :server_replication_test2)["session_id"].should.not.be.nil
|
|
92
|
+
lambda { @server[:server_replication_test2].open_doc("abc") }.should.not.raise
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
describe "Content Negotiation" do
|
|
98
|
+
|
|
99
|
+
it "should transmit a parsed json request body" do
|
|
100
|
+
@server.send(:construct_payload, {:foo => "bar"},
|
|
101
|
+
:content_type => "application/json").should == "{\"foo\":\"bar\"}"
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "should transmit a plain request body" do
|
|
105
|
+
@server.send(:construct_payload, "Hello Baybay",
|
|
106
|
+
:content_type => "text/plain").should == "Hello Baybay"
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "should return a parsed json body" do
|
|
110
|
+
@server.get('').should.be.kind_of Hash
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "should return a plain string" do
|
|
114
|
+
@server.get('', :accept => "text/plain").should.be.kind_of String
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: akdubya-cushion
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.5.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Aleksander Williams
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
|
|
12
|
+
date: 2009-03-04 00:00:00 -08:00
|
|
13
|
+
default_executable:
|
|
14
|
+
dependencies:
|
|
15
|
+
- !ruby/object:Gem::Dependency
|
|
16
|
+
name: rest-client
|
|
17
|
+
type: :runtime
|
|
18
|
+
version_requirement:
|
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
20
|
+
requirements:
|
|
21
|
+
- - ">="
|
|
22
|
+
- !ruby/object:Gem::Version
|
|
23
|
+
version: "0.9"
|
|
24
|
+
version:
|
|
25
|
+
description: A slim CouchDB client.
|
|
26
|
+
email: alekswilliams@earthlink.net
|
|
27
|
+
executables: []
|
|
28
|
+
|
|
29
|
+
extensions: []
|
|
30
|
+
|
|
31
|
+
extra_rdoc_files: []
|
|
32
|
+
|
|
33
|
+
files:
|
|
34
|
+
- Rakefile
|
|
35
|
+
- README.rdoc
|
|
36
|
+
- LICENSE
|
|
37
|
+
- lib/cushion
|
|
38
|
+
- lib/cushion/database.rb
|
|
39
|
+
- lib/cushion/design.rb
|
|
40
|
+
- lib/cushion/server.rb
|
|
41
|
+
- lib/cushion/document.rb
|
|
42
|
+
- lib/cushion/core_ext.rb
|
|
43
|
+
- lib/cushion.rb
|
|
44
|
+
- spec/server_spec.rb
|
|
45
|
+
- spec/database_spec.rb
|
|
46
|
+
- spec/helpers.rb
|
|
47
|
+
- spec/cushion_spec.rb
|
|
48
|
+
has_rdoc: true
|
|
49
|
+
homepage: http://github.com/akdubya/cushion
|
|
50
|
+
post_install_message:
|
|
51
|
+
rdoc_options: []
|
|
52
|
+
|
|
53
|
+
require_paths:
|
|
54
|
+
- lib
|
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - ">="
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: "0"
|
|
60
|
+
version:
|
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
62
|
+
requirements:
|
|
63
|
+
- - ">="
|
|
64
|
+
- !ruby/object:Gem::Version
|
|
65
|
+
version: "0"
|
|
66
|
+
version:
|
|
67
|
+
requirements: []
|
|
68
|
+
|
|
69
|
+
rubyforge_project:
|
|
70
|
+
rubygems_version: 1.2.0
|
|
71
|
+
signing_key:
|
|
72
|
+
specification_version: 2
|
|
73
|
+
summary: A slim CouchDB client.
|
|
74
|
+
test_files: []
|
|
75
|
+
|