getting into view land
This commit is contained in:
parent
d356e2356a
commit
097ab935c6
|
@ -36,19 +36,25 @@ class CouchRest
|
||||||
end
|
end
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def put uri, payload = nil
|
def put uri, doc = nil
|
||||||
response = RestClient.put(uri, payload)
|
payload = JSON.unparse doc if doc
|
||||||
JSON.parse response
|
JSON.parse(RestClient.put(uri, payload))
|
||||||
end
|
end
|
||||||
|
|
||||||
def get uri
|
def get uri
|
||||||
response = RestClient.get(uri)
|
JSON.parse(RestClient.get(uri))
|
||||||
JSON.parse response
|
end
|
||||||
|
|
||||||
|
def post uri, doc = nil
|
||||||
|
payload = JSON.unparse doc if doc
|
||||||
|
JSON.parse(RestClient.post(uri, payload))
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete uri
|
def delete uri
|
||||||
response = RestClient.delete(uri)
|
JSON.parse(RestClient.delete(uri))
|
||||||
JSON.parse response
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,10 +4,29 @@ class CouchRest
|
||||||
def initialize host, name
|
def initialize host, name
|
||||||
@name = name
|
@name = name
|
||||||
@host = host
|
@host = host
|
||||||
|
@root = "#{host}/#{name}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def documents
|
||||||
|
view "_all_docs"
|
||||||
|
end
|
||||||
|
|
||||||
|
def view name
|
||||||
|
CouchRest.get "#{@root}/#{name}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def save doc
|
||||||
|
if doc['_id']
|
||||||
|
url = doc['_id']
|
||||||
|
CouchRest.put "#{@root}/#{doc['_id']}", doc
|
||||||
|
else
|
||||||
|
CouchRest.post "#{@root}", doc
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def delete!
|
def delete!
|
||||||
CouchRest.delete "#{host}/#{name}"
|
CouchRest.delete @root
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -4,9 +4,16 @@ describe CouchRest do
|
||||||
|
|
||||||
before(:each) do
|
before(:each) do
|
||||||
@cr = CouchRest.new("http://local.grabb.it:5984")
|
@cr = CouchRest.new("http://local.grabb.it:5984")
|
||||||
db = @cr.database('couchrest-test')
|
@db = @cr.database('couchrest-test')
|
||||||
begin
|
begin
|
||||||
db.delete!
|
@db.delete!
|
||||||
|
rescue RestClient::Request::RequestFailed
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
after(:each) do
|
||||||
|
begin
|
||||||
|
@db.delete!
|
||||||
rescue RestClient::Request::RequestFailed
|
rescue RestClient::Request::RequestFailed
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,21 +4,56 @@ describe CouchRest::Database do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
@cr = CouchRest.new("http://local.grabb.it:5984")
|
@cr = CouchRest.new("http://local.grabb.it:5984")
|
||||||
begin
|
begin
|
||||||
@cr.create_db('couchrest-test')
|
@db = @cr.create_db('couchrest-test')
|
||||||
rescue RestClient::Request::RequestFailed
|
rescue RestClient::Request::RequestFailed
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
describe "deleting one" do
|
|
||||||
before(:each) do
|
after(:each) do
|
||||||
|
begin
|
||||||
|
@db.delete!
|
||||||
|
rescue RestClient::Request::RequestFailed
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "inserting documents without an id: POST" do
|
||||||
|
it "should start without the document" do
|
||||||
|
@db.documents.should_not include({'_id' => 'my-doc'})
|
||||||
|
# this needs to be a loop over docs on content with the post
|
||||||
|
# or instead make it return something with a fancy <=> method
|
||||||
|
end
|
||||||
|
it "should create the document" do
|
||||||
|
r = @db.save({'lemons' => 'from texas', 'and' => 'spain'})
|
||||||
|
@db.documents.should include(r)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "with documents in it" do
|
||||||
|
before(:each) do
|
||||||
|
# @db.create_doc()
|
||||||
|
end
|
||||||
|
it "should list them" do
|
||||||
|
ds = @db.documents
|
||||||
|
ds['rows'].should be_an_instance_of(Array)
|
||||||
|
# ds[:total_rows].should be_greater_than 0
|
||||||
|
# should I use a View class?
|
||||||
|
ds.should be_an_instance_of(CouchRest::View)
|
||||||
|
|
||||||
|
# ds.rows = []
|
||||||
|
# ds.rows.include?(...)
|
||||||
|
# ds.total_rows
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "deleting a database" do
|
||||||
it "should start with the test database" do
|
it "should start with the test database" do
|
||||||
@cr.databases.should include('couchrest-test')
|
@cr.databases.should include('couchrest-test')
|
||||||
end
|
end
|
||||||
it "should delete the database" do
|
it "should delete the database" do
|
||||||
db = @cr.database('couchrest-test')
|
db = @cr.database('couchrest-test')
|
||||||
r = db.delete!
|
# r =
|
||||||
r.should == ""
|
db.delete!
|
||||||
|
# r['ok'].should == true
|
||||||
@cr.databases.should_not include('couchrest-test')
|
@cr.databases.should_not include('couchrest-test')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue