149 lines
4 KiB
Ruby
149 lines
4 KiB
Ruby
# encoding: utf-8
|
|
require File.expand_path('../../spec_helper', __FILE__)
|
|
|
|
describe CouchRest::Model::Base do
|
|
|
|
before do
|
|
@class = Class.new(CouchRest::Model::Base)
|
|
end
|
|
|
|
describe "instance methods" do
|
|
before :each do
|
|
@obj = @class.new
|
|
end
|
|
|
|
describe "#database" do
|
|
it "should respond to" do
|
|
@obj.should respond_to(:database)
|
|
end
|
|
it "should provided class's database" do
|
|
@obj.class.should_receive :database
|
|
@obj.database
|
|
end
|
|
end
|
|
|
|
describe "#server" do
|
|
it "should respond to method" do
|
|
@obj.should respond_to(:server)
|
|
end
|
|
it "should return class's server" do
|
|
@obj.class.should_receive :server
|
|
@obj.server
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "default configuration" do
|
|
|
|
it "should provide environment" do
|
|
@class.environment.should eql(:development)
|
|
end
|
|
it "should provide connection config file" do
|
|
@class.connection_config_file.should eql(File.join(Dir.pwd, 'config', 'couchdb.yml'))
|
|
end
|
|
it "should provided simple connection details" do
|
|
@class.connection[:prefix].should eql('couchrest')
|
|
end
|
|
|
|
end
|
|
|
|
describe "class methods" do
|
|
|
|
describe ".use_database" do
|
|
it "should respond to" do
|
|
@class.should respond_to(:use_database)
|
|
end
|
|
end
|
|
|
|
describe ".database" do
|
|
it "should respond to" do
|
|
@class.should respond_to(:database)
|
|
end
|
|
it "should provide a database object" do
|
|
@class.database.should be_a(CouchRest::Database)
|
|
end
|
|
it "should provide a database with default name" do
|
|
|
|
end
|
|
|
|
end
|
|
|
|
describe ".server" do
|
|
it "should respond to" do
|
|
@class.should respond_to(:server)
|
|
end
|
|
it "should provide a server object" do
|
|
@class.server.should be_a(CouchRest::Server)
|
|
end
|
|
it "should provide a server with default config" do
|
|
@class.server.uri.should eql("http://localhost:5984")
|
|
end
|
|
it "should allow the configuration to be overwritten" do
|
|
@class.connection = {
|
|
:protocol => "https",
|
|
:host => "127.0.0.1",
|
|
:port => '5985',
|
|
:prefix => 'sample',
|
|
:suffix => 'test',
|
|
:username => 'foo',
|
|
:password => 'bar'
|
|
}
|
|
@class.server.uri.should eql("https://foo:bar@127.0.0.1:5985")
|
|
end
|
|
|
|
end
|
|
|
|
describe ".prepare_database" do
|
|
|
|
it "should respond to" do
|
|
@class.should respond_to(:prepare_database)
|
|
end
|
|
|
|
it "should join the database name correctly" do
|
|
@class.connection[:suffix] = 'db'
|
|
db = @class.prepare_database('test')
|
|
db.name.should eql('couchrest_test_db')
|
|
end
|
|
|
|
it "should ignore nil values in database name" do
|
|
@class.connection[:suffix] = nil
|
|
db = @class.prepare_database('test')
|
|
db.name.should eql('couchrest_test')
|
|
end
|
|
end
|
|
|
|
describe "protected methods" do
|
|
|
|
describe ".connection_configuration" do
|
|
it "should provide main config by default" do
|
|
@class.send(:connection_configuration).should eql(@class.connection)
|
|
end
|
|
it "should load file if available" do
|
|
@class.connection_config_file = File.join(FIXTURE_PATH, 'config', 'couchdb.yml')
|
|
hash = @class.send(:connection_configuration)
|
|
hash[:protocol].should eql('https')
|
|
hash[:host].should eql('sample.cloudant.com')
|
|
hash[:join].should eql('_')
|
|
end
|
|
end
|
|
|
|
describe ".load_connection_config_file" do
|
|
it "should provide an empty hash if config not found" do
|
|
@class.send(:load_connection_config_file).should eql({})
|
|
end
|
|
it "should load file if available" do
|
|
@class.connection_config_file = File.join(FIXTURE_PATH, 'config', 'couchdb.yml')
|
|
hash = @class.send(:load_connection_config_file)
|
|
hash[:development].should_not be_nil
|
|
@class.server.uri.should eql("https://test:user@sample.cloudant.com:443")
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
end
|