couchmodel 0.1.0.beta2
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 +20 -0
- data/README.rdoc +156 -0
- data/Rakefile +20 -0
- data/lib/core_extension/array.rb +14 -0
- data/lib/core_extension/string.rb +12 -0
- data/lib/couch_model/active_model.rb +86 -0
- data/lib/couch_model/base/accessor.rb +39 -0
- data/lib/couch_model/base/association.rb +63 -0
- data/lib/couch_model/base/finder.rb +28 -0
- data/lib/couch_model/base/setup.rb +88 -0
- data/lib/couch_model/base.rb +117 -0
- data/lib/couch_model/collection.rb +84 -0
- data/lib/couch_model/configuration.rb +68 -0
- data/lib/couch_model/database.rb +64 -0
- data/lib/couch_model/design.rb +92 -0
- data/lib/couch_model/server.rb +44 -0
- data/lib/couch_model/transport.rb +68 -0
- data/lib/couch_model/view.rb +52 -0
- data/lib/couch_model.rb +15 -0
- data/spec/fake_transport.yml +202 -0
- data/spec/fake_transport_helper.rb +27 -0
- data/spec/integration/basic_spec.rb +125 -0
- data/spec/integration/design/membership.design +5 -0
- data/spec/integration/design/user.design +2 -0
- data/spec/lib/core_extension/array_spec.rb +24 -0
- data/spec/lib/core_extension/string_spec.rb +22 -0
- data/spec/lib/couch_model/active_model_spec.rb +228 -0
- data/spec/lib/couch_model/base_spec.rb +169 -0
- data/spec/lib/couch_model/collection_spec.rb +100 -0
- data/spec/lib/couch_model/configuration_spec.rb +117 -0
- data/spec/lib/couch_model/core/accessor_spec.rb +59 -0
- data/spec/lib/couch_model/core/association_spec.rb +114 -0
- data/spec/lib/couch_model/core/finder_spec.rb +24 -0
- data/spec/lib/couch_model/core/setup_spec.rb +88 -0
- data/spec/lib/couch_model/database_spec.rb +165 -0
- data/spec/lib/couch_model/design/association_test_model_one.design +5 -0
- data/spec/lib/couch_model/design/base_test_model.design +10 -0
- data/spec/lib/couch_model/design/setup_test_model.design +10 -0
- data/spec/lib/couch_model/design_spec.rb +144 -0
- data/spec/lib/couch_model/server_spec.rb +64 -0
- data/spec/lib/couch_model/transport_spec.rb +44 -0
- data/spec/lib/couch_model/view_spec.rb +166 -0
- data/spec/lib/couch_model_spec.rb +3 -0
- data/spec/spec_helper.rb +27 -0
- metadata +128 -0
@@ -0,0 +1,117 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "spec_helper"))
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "lib", "couch_model", "configuration"))
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "lib", "couch_model", "database"))
|
4
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "lib", "couch_model", "design"))
|
5
|
+
|
6
|
+
describe CouchModel::Configuration do
|
7
|
+
|
8
|
+
describe "design_directory=" do
|
9
|
+
|
10
|
+
it "should set the design directory" do
|
11
|
+
CouchModel::Configuration.design_directory = "test"
|
12
|
+
CouchModel::Configuration.design_directory.should == "test"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "register_database" do
|
18
|
+
|
19
|
+
before :each do
|
20
|
+
CouchModel::Configuration.databases.clear
|
21
|
+
@database = CouchModel::Database.new :name => "test"
|
22
|
+
@other = CouchModel::Database.new :name => "test"
|
23
|
+
end
|
24
|
+
|
25
|
+
def do_register
|
26
|
+
CouchModel::Configuration.register_database @database
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should add the database" do
|
30
|
+
do_register
|
31
|
+
CouchModel::Configuration.databases.should include(@database)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should return a database with equal parameters if such is added before" do
|
35
|
+
CouchModel::Configuration.register_database @other
|
36
|
+
do_register.object_id.should == @other.object_id
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "setup_databases" do
|
42
|
+
|
43
|
+
before :each do
|
44
|
+
CouchModel::Configuration.class_variable_set :@@databases, [ ]
|
45
|
+
end
|
46
|
+
|
47
|
+
def do_setup
|
48
|
+
CouchModel::Configuration.setup_databases
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "for an existing database" do
|
52
|
+
|
53
|
+
before :each do
|
54
|
+
@database = CouchModel::Database.new :name => "test"
|
55
|
+
CouchModel::Configuration.register_database @database
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should not create the database" do
|
59
|
+
@database.should_not_receive(:create!)
|
60
|
+
do_setup
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "for a not-existing database" do
|
66
|
+
|
67
|
+
before :each do
|
68
|
+
@database = CouchModel::Database.new :name => "new_database"
|
69
|
+
CouchModel::Configuration.register_database @database
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should create the database" do
|
73
|
+
@database.should_receive(:create!)
|
74
|
+
do_setup
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "register_design" do
|
82
|
+
|
83
|
+
before :each do
|
84
|
+
CouchModel::Configuration.designs.clear
|
85
|
+
@database = CouchModel::Database.new :name => "test"
|
86
|
+
@design = CouchModel::Design.new @database, :id => "test_design"
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should add the design" do
|
90
|
+
CouchModel::Configuration.register_design @design
|
91
|
+
CouchModel::Configuration.designs.should include(@design)
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "setup_designs" do
|
97
|
+
|
98
|
+
before :each do
|
99
|
+
CouchModel::Configuration.class_variable_set :@@designs, [ ]
|
100
|
+
|
101
|
+
@database = CouchModel::Database.new :name => "test"
|
102
|
+
@design = CouchModel::Design.new @database, :id => "test_design"
|
103
|
+
CouchModel::Configuration.register_design @design
|
104
|
+
end
|
105
|
+
|
106
|
+
def do_setup
|
107
|
+
CouchModel::Configuration.setup_designs
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should push the design" do
|
111
|
+
@design.should_receive(:push)
|
112
|
+
do_setup
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "spec_helper"))
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "..", "lib", "couch_model", "base"))
|
3
|
+
|
4
|
+
class AccessorTestModel < CouchModel::Base
|
5
|
+
|
6
|
+
setup_database :url => "http://localhost:5984/test"
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
describe AccessorTestModel do
|
11
|
+
|
12
|
+
before :each do
|
13
|
+
@model = AccessorTestModel.new :id => "test_model_1"
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "key_reader" do
|
17
|
+
|
18
|
+
before :each do
|
19
|
+
AccessorTestModel.key_reader :test
|
20
|
+
@model = AccessorTestModel.new
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should define a reader method" do
|
24
|
+
@model.should respond_to(:test)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "key_writer" do
|
30
|
+
|
31
|
+
before :each do
|
32
|
+
AccessorTestModel.key_writer :test
|
33
|
+
@model = AccessorTestModel.new
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should define a writer method" do
|
37
|
+
@model.should respond_to(:test=)
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "key_accessor" do
|
43
|
+
|
44
|
+
before :each do
|
45
|
+
AccessorTestModel.key_accessor :test
|
46
|
+
@model = AccessorTestModel.new
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should define a reader method" do
|
50
|
+
@model.should respond_to(:test)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should define a writer method" do
|
54
|
+
@model.should respond_to(:test=)
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "spec_helper"))
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "..", "lib", "couch_model", "base"))
|
3
|
+
|
4
|
+
CouchModel::Configuration.design_directory = File.join File.dirname(__FILE__), "..", "design"
|
5
|
+
|
6
|
+
class AssociationTestModelOne < CouchModel::Base
|
7
|
+
|
8
|
+
setup_database :url => "http://localhost:5984/test"
|
9
|
+
|
10
|
+
key_accessor :name
|
11
|
+
|
12
|
+
belongs_to :related, :class_name => "AssociationTestModelTwo"
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
class AssociationTestModelTwo < CouchModel::Base
|
17
|
+
|
18
|
+
setup_database :url => "http://localhost:5984/test"
|
19
|
+
|
20
|
+
key_accessor :name
|
21
|
+
|
22
|
+
has_many :related,
|
23
|
+
:class_name => "AssociationTestModelOne",
|
24
|
+
:view_name => :by_related_id_and_name,
|
25
|
+
:query => lambda { |name| { :startkey => [ self.id, (name || nil) ], :endkey => [ self.id, (name || { }) ] } }
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
describe AssociationTestModelOne do
|
30
|
+
|
31
|
+
before :each do
|
32
|
+
@model = AssociationTestModelOne.find "test_model_1"
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "belongs_to" do
|
36
|
+
|
37
|
+
it "should define the :related_id accessor methods" do
|
38
|
+
@model.should respond_to(:related_id)
|
39
|
+
@model.should respond_to(:related_id=)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should define the :related method" do
|
43
|
+
@model.should respond_to(:related)
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "related" do
|
49
|
+
|
50
|
+
it "should return a model" do
|
51
|
+
@model.related.should be_instance_of(AssociationTestModelTwo)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "related=" do
|
57
|
+
|
58
|
+
before :each do
|
59
|
+
@other = AssociationTestModelTwo.find "test_model_2"
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should set the relation to nil" do
|
63
|
+
@model.related_id = "test"
|
64
|
+
@model.related = nil
|
65
|
+
@model.related_id.should be_nil
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should set the relation" do
|
69
|
+
@model.related = @other
|
70
|
+
@model.related_id.should == "test_model_2"
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should raise an ArgumentError on wrong class" do
|
74
|
+
lambda do
|
75
|
+
@model.related = "test"
|
76
|
+
end.should raise_error(ArgumentError)
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
describe AssociationTestModelTwo do
|
84
|
+
|
85
|
+
before :each do
|
86
|
+
@model = AssociationTestModelTwo.find "test_model_2"
|
87
|
+
end
|
88
|
+
|
89
|
+
describe "has_many" do
|
90
|
+
|
91
|
+
it "should define the :related method" do
|
92
|
+
@model.should respond_to(:related)
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "related" do
|
98
|
+
|
99
|
+
before :each do
|
100
|
+
@other = AssociationTestModelOne.find "test_model_1"
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should return a collection" do
|
104
|
+
@model.related.should be_instance_of(CouchModel::Collection)
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should include the test model one" do
|
108
|
+
@model.related.should include(@other)
|
109
|
+
@model.related(@other.name).should include(@other)
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "spec_helper"))
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "..", "lib", "couch_model", "base"))
|
3
|
+
|
4
|
+
class FinderTestModel < CouchModel::Base
|
5
|
+
|
6
|
+
setup_database :url => "http://localhost:5984/test"
|
7
|
+
|
8
|
+
key_accessor :name
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
describe FinderTestModel do
|
13
|
+
|
14
|
+
describe "find" do
|
15
|
+
|
16
|
+
it "should find the model" do
|
17
|
+
model = FinderTestModel.find "test_model_1"
|
18
|
+
model.should be_instance_of(FinderTestModel)
|
19
|
+
model.name.should == "phil"
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "spec_helper"))
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "..", "lib", "couch_model", "base"))
|
3
|
+
|
4
|
+
CouchModel::Configuration.design_directory = File.join File.dirname(__FILE__), "..", "design"
|
5
|
+
|
6
|
+
class SetupTestModel < CouchModel::Base
|
7
|
+
|
8
|
+
setup_database :url => "http://localhost:5984/test"
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
describe SetupTestModel do
|
13
|
+
|
14
|
+
describe "setup_database" do
|
15
|
+
|
16
|
+
before :each do
|
17
|
+
@design = SetupTestModel.design
|
18
|
+
@design.stub!(:push)
|
19
|
+
CouchModel::Design.stub!(:new).and_return(@design)
|
20
|
+
|
21
|
+
@options = { :url => "http://localhost:5984/test" }
|
22
|
+
end
|
23
|
+
|
24
|
+
def do_setup
|
25
|
+
SetupTestModel.setup_database @options
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should initialize the database" do
|
29
|
+
do_setup
|
30
|
+
SetupTestModel.database.url.should == @options[:url]
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should register the database" do
|
34
|
+
do_setup
|
35
|
+
CouchModel::Configuration.databases.should include(SetupTestModel.database)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should register just one database if two databases has been set up" do
|
39
|
+
database = SetupTestModel.database
|
40
|
+
do_setup
|
41
|
+
database.object_id.should == SetupTestModel.database.object_id
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should setup the database on initialization if requested" do
|
45
|
+
@options[:setup_on_initialization] = true
|
46
|
+
database = SetupTestModel.database
|
47
|
+
database.should_receive(:setup!).with(@options)
|
48
|
+
CouchModel::Database.stub!(:new).and_return(database)
|
49
|
+
do_setup
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should initialize the design" do
|
53
|
+
do_setup
|
54
|
+
SetupTestModel.design.should be_instance_of(CouchModel::Design)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should register the design" do
|
58
|
+
do_setup
|
59
|
+
CouchModel::Configuration.designs.should include(SetupTestModel.design)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should generate the class view" do
|
63
|
+
do_setup
|
64
|
+
SetupTestModel.design.views.first.name.should == CouchModel::Configuration::CLASS_VIEW_NAME
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should define the view methods" do
|
68
|
+
do_setup
|
69
|
+
SetupTestModel.should respond_to(:test_view)
|
70
|
+
SetupTestModel.test_view.should be_instance_of(CouchModel::Collection)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should push the design on initialization if requested" do
|
74
|
+
@options[:setup_on_initialization] = true
|
75
|
+
@design.should_receive(:push)
|
76
|
+
do_setup
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should raise an ArgumentError on missing url option" do
|
80
|
+
@options[:url] = nil
|
81
|
+
lambda do
|
82
|
+
do_setup
|
83
|
+
end.should raise_error(ArgumentError)
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
@@ -0,0 +1,165 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "spec_helper"))
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "lib", "couch_model", "database"))
|
3
|
+
|
4
|
+
describe CouchModel::Database do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
@database = CouchModel::Database.new :name => "test"
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "==" do
|
11
|
+
|
12
|
+
before :each do
|
13
|
+
@other = CouchModel::Database.new :name => "test"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should be true when comparing two equal databases" do
|
17
|
+
@database.should == @other
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should be false when comparing two different databases" do
|
21
|
+
@other = CouchModel::Database.new :name => "other"
|
22
|
+
@database.should_not == @other
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should be false when comparing two databases with on different servers" do
|
26
|
+
@other = CouchModel::Database.new :name => "test", :server => CouchModel::Server.new(:host => "other")
|
27
|
+
@database.should_not == @other
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "===" do
|
33
|
+
|
34
|
+
before :each do
|
35
|
+
@other = CouchModel::Database.new :name => "test"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should be true when comparing a database object with itself" do
|
39
|
+
@database.should === @database
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should be false when comparing a database object with another database object" do
|
43
|
+
@database.should_not === @other
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "create!" do
|
49
|
+
|
50
|
+
before :each do
|
51
|
+
@response = { :code => "201" }
|
52
|
+
CouchModel::Transport.stub!(:request).and_return(@response)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should create the database" do
|
56
|
+
CouchModel::Transport.should_receive(:request).with(:put, /test$/, anything).and_return(@response)
|
57
|
+
@database.create!
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "delete!" do
|
63
|
+
|
64
|
+
before :each do
|
65
|
+
@response = { :code => "200" }
|
66
|
+
CouchModel::Transport.stub!(:request).and_return(@response)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should delete the database" do
|
70
|
+
CouchModel::Transport.should_receive(:request).with(:delete, /test$/, anything).and_return(@response)
|
71
|
+
@database.delete!
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "setup!" do
|
77
|
+
|
78
|
+
before :each do
|
79
|
+
@database.stub!(:create!)
|
80
|
+
@database.stub!(:delete!)
|
81
|
+
@database.stub!(:exists?).and_return(true)
|
82
|
+
@options = { }
|
83
|
+
end
|
84
|
+
|
85
|
+
def do_setup
|
86
|
+
@database.setup! @options
|
87
|
+
end
|
88
|
+
|
89
|
+
describe "with delete_if_exists set to true" do
|
90
|
+
|
91
|
+
before :each do
|
92
|
+
@options.merge! :delete_if_exists => true
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should delete an existing database" do
|
96
|
+
@database.should_receive(:delete!)
|
97
|
+
do_setup
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should not delete a not-existing database" do
|
101
|
+
@database.stub!(:exists?).and_return(false)
|
102
|
+
@database.should_not_receive(:delete!)
|
103
|
+
do_setup
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should create the database" do
|
107
|
+
@database.should_receive(:create!)
|
108
|
+
do_setup
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "with delete_if_exists set to false" do
|
114
|
+
|
115
|
+
before :each do
|
116
|
+
@options.merge! :delete_if_exists => false
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should create a not-existing database" do
|
120
|
+
@database.stub!(:exists?).and_return(false)
|
121
|
+
@database.should_receive(:create!)
|
122
|
+
do_setup
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should not create an existing database" do
|
126
|
+
@database.should_not_receive(:create!)
|
127
|
+
do_setup
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
|
134
|
+
describe "informations" do
|
135
|
+
|
136
|
+
it "should return database informations" do
|
137
|
+
informations = @database.informations
|
138
|
+
informations.should have_key("db_name")
|
139
|
+
informations.should have_key("doc_count")
|
140
|
+
end
|
141
|
+
|
142
|
+
end
|
143
|
+
|
144
|
+
describe "exists?" do
|
145
|
+
|
146
|
+
it "should be true" do
|
147
|
+
@database.exists?.should be_true
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should be false if no database with the given name exists" do
|
151
|
+
database = CouchModel::Database.new :name => "invalid"
|
152
|
+
database.exists?.should be_false
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
describe "documents" do
|
158
|
+
|
159
|
+
it "should return a collection" do
|
160
|
+
@database.documents.should be_instance_of(CouchModel::Collection)
|
161
|
+
end
|
162
|
+
|
163
|
+
end
|
164
|
+
|
165
|
+
end
|