working specy stuff i hope
This commit is contained in:
parent
2c42cf1ca5
commit
32c01fadad
1
deps/rest-client
vendored
Submodule
1
deps/rest-client
vendored
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit d484781d75ff5f986412103f9f68b6be6fc223fc
|
54
lib/couch_rest.rb
Normal file
54
lib/couch_rest.rb
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
require File.dirname(__FILE__) + '/../deps/rest-client/lib/rest_client'
|
||||||
|
require "rubygems"
|
||||||
|
gem "json"
|
||||||
|
begin
|
||||||
|
require "json/ext"
|
||||||
|
rescue LoadError
|
||||||
|
$stderr.puts "C version of json (fjson) could not be loaded, using pure ruby one"
|
||||||
|
require "json/pure"
|
||||||
|
end
|
||||||
|
require File.dirname(__FILE__) + '/database'
|
||||||
|
|
||||||
|
class CouchRest
|
||||||
|
attr_accessor :uri
|
||||||
|
def initialize server
|
||||||
|
@uri = server
|
||||||
|
end
|
||||||
|
|
||||||
|
# list all databases on the server
|
||||||
|
def databases
|
||||||
|
CouchRest.get "#{@uri}/_all_dbs"
|
||||||
|
end
|
||||||
|
|
||||||
|
def database name
|
||||||
|
CouchRest::Database.new(@uri, name)
|
||||||
|
end
|
||||||
|
|
||||||
|
# get the welcome message
|
||||||
|
def info
|
||||||
|
CouchRest.get "#{@uri}/"
|
||||||
|
end
|
||||||
|
|
||||||
|
# create a database
|
||||||
|
def create_db name
|
||||||
|
CouchRest.put "#{@uri}/#{name}"
|
||||||
|
database name
|
||||||
|
end
|
||||||
|
|
||||||
|
class << self
|
||||||
|
def put uri, payload = nil
|
||||||
|
response = RestClient.put(uri, payload)
|
||||||
|
JSON.parse response
|
||||||
|
end
|
||||||
|
|
||||||
|
def get uri
|
||||||
|
response = RestClient.get(uri)
|
||||||
|
JSON.parse response
|
||||||
|
end
|
||||||
|
|
||||||
|
def delete uri
|
||||||
|
response = RestClient.delete(uri)
|
||||||
|
JSON.parse response
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,13 +0,0 @@
|
||||||
require 'uri'
|
|
||||||
|
|
||||||
class Couchrest
|
|
||||||
|
|
||||||
def initialize server
|
|
||||||
@server = URI.parse server
|
|
||||||
end
|
|
||||||
|
|
||||||
def databases
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
13
lib/database.rb
Normal file
13
lib/database.rb
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
class CouchRest
|
||||||
|
class Database
|
||||||
|
attr_accessor :host, :name
|
||||||
|
def initialize host, name
|
||||||
|
@name = name
|
||||||
|
@host = host
|
||||||
|
end
|
||||||
|
|
||||||
|
def delete!
|
||||||
|
CouchRest.delete "#{host}/#{name}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
60
spec/couch_rest_spec.rb
Normal file
60
spec/couch_rest_spec.rb
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
require File.dirname(__FILE__) + '/../lib/couchrest'
|
||||||
|
|
||||||
|
describe CouchRest do
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
@cr = CouchRest.new("http://local.grabb.it:5984")
|
||||||
|
db = @cr.database('couchrest-test')
|
||||||
|
begin
|
||||||
|
db.delete!
|
||||||
|
rescue RestClient::Request::RequestFailed
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "getting info" do
|
||||||
|
it "should list databases" do
|
||||||
|
@cr.databases.should be_an_instance_of(Array)
|
||||||
|
end
|
||||||
|
it "should get info" do
|
||||||
|
@cr.info.should == {"couchdb"=>"Welcome", "version"=>"0.0.0"}
|
||||||
|
@cr.info.class.should == Hash
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "initializing a database" do
|
||||||
|
it "should return a db" do
|
||||||
|
db = @cr.database('couchrest-test')
|
||||||
|
db.should be_an_instance_of(CouchRest::Database)
|
||||||
|
db.host.should == @cr.uri
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "successfully creating a database" do
|
||||||
|
it "should start without a database" do
|
||||||
|
@cr.databases.should_not include('couchrest-test')
|
||||||
|
end
|
||||||
|
it "should return the created database" do
|
||||||
|
db = @cr.create_db('couchrest-test')
|
||||||
|
db.should be_an_instance_of(CouchRest::Database)
|
||||||
|
end
|
||||||
|
it "should create the database" do
|
||||||
|
db = @cr.create_db('couchrest-test')
|
||||||
|
@cr.databases.should include('couchrest-test')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "failing to create a database because the name is taken" do
|
||||||
|
before(:each) do
|
||||||
|
db = @cr.create_db('couchrest-test')
|
||||||
|
end
|
||||||
|
it "should start with the test database" do
|
||||||
|
@cr.databases.should include('couchrest-test')
|
||||||
|
end
|
||||||
|
it "should PUT the database and raise an error" do
|
||||||
|
lambda{
|
||||||
|
@cr.create_db('couchrest-test')
|
||||||
|
}.should raise_error(RestClient::Request::RequestFailed)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -1,39 +0,0 @@
|
||||||
require File.dirname(__FILE__) + '/../lib/couchrest'
|
|
||||||
|
|
||||||
describe Couchrest do
|
|
||||||
|
|
||||||
before(:each) do
|
|
||||||
@cr = Couchrest.new("http://local.grabb.it:5984")
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "getting status" do
|
|
||||||
it "should list databases" do
|
|
||||||
@cr.databases.should be_an Array
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "successfully creating a database" do
|
|
||||||
it "should start without a database" do
|
|
||||||
end
|
|
||||||
it "should PUT the database" do
|
|
||||||
|
|
||||||
end
|
|
||||||
it "should return the created databse" do
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "failing to create a database because the name is taken" do
|
|
||||||
it "should start without a database" do
|
|
||||||
|
|
||||||
end
|
|
||||||
it "should PUT the database and raise an error" do
|
|
||||||
|
|
||||||
end
|
|
||||||
it "should not result in another database" do
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
19
spec/database_spec.rb
Normal file
19
spec/database_spec.rb
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
require File.dirname(__FILE__) + '/../lib/couchrest'
|
||||||
|
|
||||||
|
describe Couchrest::Database do
|
||||||
|
before(:each) do
|
||||||
|
@cr = Couchrest.new("http://local.grabb.it:5984")
|
||||||
|
end
|
||||||
|
describe "deleting one" do
|
||||||
|
it "should start with the test database" do
|
||||||
|
@cr.databases.should include('couchrest-test')
|
||||||
|
end
|
||||||
|
it "should delete the database" do
|
||||||
|
db = @cr.database('couchrest-test')
|
||||||
|
r = db.delete!
|
||||||
|
r.should == ""
|
||||||
|
@cr.databases.should_not include('couchrest-test')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in a new issue