mirror of https://gitee.com/bigwinds/arangodb
629 lines
24 KiB
Ruby
629 lines
24 KiB
Ruby
# coding: utf-8
|
|
|
|
require 'rspec'
|
|
require 'uri'
|
|
require './arangodb.rb'
|
|
|
|
describe ArangoDB do
|
|
prefix = "rest-edge"
|
|
|
|
context "creating an edge:" do
|
|
|
|
################################################################################
|
|
## error handling
|
|
################################################################################
|
|
|
|
context "error handling:" do
|
|
it "returns an error if url is missing from" do
|
|
cn = "UnitTestsCollectionEdge"
|
|
cmd = "/_api/edge?collection=#{cn}&createCollection=true"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-missing-from-to", cmd, :body => body)
|
|
|
|
doc.code.should eq(400)
|
|
doc.parsed_response['error'].should eq(true)
|
|
doc.parsed_response['errorNum'].should eq(400)
|
|
doc.parsed_response['code'].should eq(400)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
ArangoDB.drop_collection(cn)
|
|
end
|
|
|
|
it "returns an error if from/to are malformed" do
|
|
cn = "UnitTestsCollectionEdge"
|
|
cmd = "/_api/edge?collection=#{cn}&createCollection=true&from=1&to=1"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-bad-from-to", cmd, :body => body)
|
|
|
|
doc.code.should eq(400)
|
|
doc.parsed_response['error'].should eq(true)
|
|
doc.parsed_response['errorNum'].should eq(1205)
|
|
doc.parsed_response['code'].should eq(400)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
ArangoDB.drop_collection(cn)
|
|
end
|
|
|
|
it "returns an error if from/to are incomplete" do
|
|
cn = "UnitTestsCollectionEdge"
|
|
cmd = "/_api/edge?collection=#{cn}&createCollection=true&from=test&to=test"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-incomplete-from-to", cmd, :body => body)
|
|
|
|
doc.code.should eq(400)
|
|
doc.parsed_response['error'].should eq(true)
|
|
doc.parsed_response['errorNum'].should eq(1205)
|
|
doc.parsed_response['code'].should eq(400)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
ArangoDB.drop_collection(cn)
|
|
end
|
|
|
|
it "returns an error if vertex-handle is missing" do
|
|
cn = "UnitTestsCollectionEdge"
|
|
ArangoDB.drop_collection(cn)
|
|
ArangoDB.create_collection(cn, true, 3) # type 3 = edge collection
|
|
cmd = "/_api/edges/#{cn}"
|
|
doc = ArangoDB.log_get("#{prefix}-missing-handle", cmd)
|
|
|
|
doc.code.should eq(400)
|
|
doc.parsed_response['error'].should eq(true)
|
|
doc.parsed_response['errorNum'].should eq(1205)
|
|
doc.parsed_response['code'].should eq(400)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
ArangoDB.drop_collection(cn)
|
|
end
|
|
|
|
it "returns an error if vertex-handle is empty" do
|
|
cn = "UnitTestsCollectionEdge"
|
|
ArangoDB.drop_collection(cn)
|
|
ArangoDB.create_collection(cn, true, 3) # type 3 = edge collection
|
|
cmd = "/_api/edges/#{cn}?vertex="
|
|
doc = ArangoDB.log_get("#{prefix}-empty-handle", cmd)
|
|
|
|
doc.code.should eq(400)
|
|
doc.parsed_response['error'].should eq(true)
|
|
doc.parsed_response['errorNum'].should eq(1205)
|
|
doc.parsed_response['code'].should eq(400)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
ArangoDB.drop_collection(cn)
|
|
end
|
|
|
|
it "returns an error if collection does not exist" do
|
|
cn = "UnitTestsCollectionEdge"
|
|
ArangoDB.drop_collection(cn)
|
|
cmd = "/_api/edge?collection=#{cn}&from=test&to=test"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-no-collection", cmd, :body => body)
|
|
|
|
doc.code.should eq(404)
|
|
doc.parsed_response['error'].should eq(true)
|
|
doc.parsed_response['errorNum'].should eq(1203)
|
|
doc.parsed_response['code'].should eq(404)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
end
|
|
|
|
it "returns an error if collection does not exist" do
|
|
cn = "UnitTestsCollectionEdge"
|
|
ArangoDB.drop_collection(cn)
|
|
cmd = "/_api/edges/#{cn}?vertex=test"
|
|
doc = ArangoDB.log_get("#{prefix}-no-collection-query", cmd)
|
|
|
|
doc.code.should eq(404)
|
|
doc.parsed_response['error'].should eq(true)
|
|
doc.parsed_response['errorNum'].should eq(1203)
|
|
doc.parsed_response['code'].should eq(404)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
end
|
|
|
|
it "returns an error if document handler is used to create an edge" do
|
|
cn = "UnitTestsCollectionEdge"
|
|
ArangoDB.drop_collection(cn)
|
|
ArangoDB.create_collection(cn, true, 3) # type 3 = edge collection
|
|
cmd = "/_api/document?collection=#{cn}&from=test&to=test"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-wrong-type", cmd, :body => body)
|
|
|
|
doc.code.should eq(400)
|
|
doc.parsed_response['error'].should eq(true)
|
|
doc.parsed_response['errorNum'].should eq(405)
|
|
doc.parsed_response['code'].should eq(400)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
end
|
|
end
|
|
|
|
################################################################################
|
|
## known collection name
|
|
################################################################################
|
|
|
|
context "known collection name:" do
|
|
before do
|
|
@ce = "UnitTestsCollectionEdge"
|
|
@eid = ArangoDB.create_collection(@ce, true, 3) # type 3 = edge collection
|
|
@cv = "UnitTestsCollectionVertex"
|
|
@vid = ArangoDB.create_collection(@cv, true, 2) # type 2 = document collection
|
|
|
|
@reFull = Regexp.new('^[a-zA-Z0-9_\-]+/\d+$')
|
|
@reEdge = Regexp.new('^' + @ce + '/')
|
|
@reVertex = Regexp.new('^' + @cv + '/')
|
|
end
|
|
|
|
after do
|
|
ArangoDB.drop_collection(@ce)
|
|
ArangoDB.drop_collection(@cv)
|
|
end
|
|
|
|
it "creating an edge" do
|
|
cmd = "/_api/document?collection=#{@cv}"
|
|
|
|
# create first vertex
|
|
body = "{ \"a\" : 1 }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reVertex)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id1 = doc.parsed_response['_id']
|
|
|
|
# create second vertex
|
|
body = "{ \"a\" : 2 }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reVertex)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id2 = doc.parsed_response['_id']
|
|
|
|
# create edge
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{id1}&to=#{id2}"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reEdge)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id3 = doc.parsed_response['_id']
|
|
|
|
# check edge
|
|
cmd = "/_api/edge/#{id3}"
|
|
doc = ArangoDB.log_get("#{prefix}-read-edge", cmd)
|
|
|
|
doc.code.should eq(200)
|
|
doc.parsed_response['_id'].should eq(id3)
|
|
doc.parsed_response['_from'].should eq(id1)
|
|
doc.parsed_response['_to'].should eq(id2)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
# create another edge
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{id1}&to=#{id2}"
|
|
body = "{ \"e\" : 1 }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id4 = doc.parsed_response['_id']
|
|
|
|
# check edge
|
|
cmd = "/_api/edge/#{id4}"
|
|
doc = ArangoDB.log_get("#{prefix}-read-edge", cmd)
|
|
|
|
doc.code.should eq(200)
|
|
doc.parsed_response['_id'].should eq(id4)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reEdge)
|
|
doc.parsed_response['_from'].should eq(id1)
|
|
doc.parsed_response['_from'].should match(@reFull)
|
|
doc.parsed_response['_from'].should match(@reVertex)
|
|
doc.parsed_response['_to'].should eq(id2)
|
|
doc.parsed_response['_to'].should match(@reFull)
|
|
doc.parsed_response['_to'].should match(@reVertex)
|
|
doc.parsed_response['e'].should eq(1)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
# create third edge
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{id2}&to=#{id1}"
|
|
body = "{ \"e\" : 2 }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reEdge)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id5 = doc.parsed_response['_id']
|
|
|
|
# check edge
|
|
cmd = "/_api/edge/#{id5}"
|
|
doc = ArangoDB.log_get("#{prefix}-read-edge", cmd)
|
|
|
|
doc.code.should eq(200)
|
|
doc.parsed_response['_id'].should eq(id5)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reEdge)
|
|
doc.parsed_response['_from'].should eq(id2)
|
|
doc.parsed_response['_from'].should match(@reFull)
|
|
doc.parsed_response['_from'].should match(@reVertex)
|
|
doc.parsed_response['_to'].should eq(id1)
|
|
doc.parsed_response['_to'].should match(@reFull)
|
|
doc.parsed_response['_to'].should match(@reVertex)
|
|
doc.parsed_response['e'].should eq(2)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
# check ANY edges
|
|
cmd = "/_api/edges/#{@ce}?vertex=#{id1}"
|
|
doc = ArangoDB.log_get("#{prefix}-read-edges-any", cmd);
|
|
|
|
doc.code.should eq(200)
|
|
doc.parsed_response['edges'].should be_kind_of(Array)
|
|
doc.parsed_response['edges'].length.should be(3)
|
|
|
|
# check IN edges
|
|
cmd = "/_api/edges/#{@ce}?vertex=#{id1}&direction=in"
|
|
doc = ArangoDB.log_get("#{prefix}-read-edges-in", cmd);
|
|
|
|
doc.code.should eq(200)
|
|
doc.parsed_response['edges'].should be_kind_of(Array)
|
|
doc.parsed_response['edges'].length.should be(1)
|
|
|
|
# check OUT edges
|
|
cmd = "/_api/edges/#{@ce}?vertex=#{id1}&direction=out"
|
|
doc = ArangoDB.log_get("#{prefix}-read-edges-out", cmd);
|
|
|
|
doc.code.should eq(200)
|
|
doc.parsed_response['edges'].should be_kind_of(Array)
|
|
doc.parsed_response['edges'].length.should be(2)
|
|
end
|
|
|
|
it "using collection names in from and to" do
|
|
cmd = "/_api/document?collection=#{@cv}"
|
|
|
|
# create a vertex
|
|
body = "{ \"a\" : 1 }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-named", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reVertex)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id = doc.parsed_response['_id']
|
|
# replace collection id with collection name
|
|
translated = URI.escape(id.gsub /^\d+\//, 'UnitTestsCollectionVertex/')
|
|
|
|
# create edge, using collection id
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{id}&to=#{id}"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-named", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reEdge)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
# create edge, using collection names
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{translated}&to=#{translated}"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-named", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reEdge)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
# create edge, using mix of collection names and ids
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{translated}&to=#{id}"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-named", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reEdge)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
# turn parameters around
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{id}&to=#{translated}"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-named", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reEdge)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
end
|
|
|
|
it "using invalid collection names" do
|
|
cmd = "/_api/document?collection=#{@cv}"
|
|
|
|
# create a vertex
|
|
body = "{ \"a\" : 1 }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-invalid-name", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
from = URI.escape("thefox/12345")
|
|
to = URI.escape("thefox/13443466")
|
|
|
|
# create edge, using invalid collection names
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{from}&to=#{to}"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-invalid-name", cmd, :body => body)
|
|
|
|
doc.code.should eq(404)
|
|
doc.parsed_response['error'].should eq(true)
|
|
doc.parsed_response['errorNum'].should eq(1203)
|
|
doc.parsed_response['code'].should eq(404)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
end
|
|
|
|
it "using collection ids in collection, from and to" do
|
|
cmd = "/_api/document?collection=#{@vid}"
|
|
|
|
# create a vertex
|
|
body = "{ \"a\" : 1 }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-id", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reVertex)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id = doc.parsed_response['_id']
|
|
# replace collection name with collection id
|
|
translated = URI.escape(id.gsub /UnitTestsCollectionVertex/, @vid)
|
|
|
|
# create edge, using collection id
|
|
cmd = "/_api/edge?collection=#{@eid}&from=#{id}&to=#{id}"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-named", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should match(@reFull)
|
|
doc.parsed_response['_id'].should match(@reEdge)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
end
|
|
|
|
################################################################################
|
|
## create an edge using keys
|
|
################################################################################
|
|
|
|
it "creating an edge using keys" do
|
|
cmd = "/_api/document?collection=#{@cv}"
|
|
|
|
# create first vertex
|
|
body = "{ \"name\" : \"Fred\", \"_key\" : \"fred\" }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-key", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should eq("#{@cv}/fred")
|
|
doc.parsed_response['_key'].should be_kind_of(String)
|
|
doc.parsed_response['_key'].should eq("fred")
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id1 = doc.parsed_response['_id']
|
|
|
|
# create second vertex
|
|
body = "{ \"name\" : \"John\", \"_key\" : \"john\" }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-key", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should eq("#{@cv}/john")
|
|
doc.parsed_response['_key'].should be_kind_of(String)
|
|
doc.parsed_response['_key'].should eq("john")
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id2 = doc.parsed_response['_id']
|
|
|
|
# create edge
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{id1}&to=#{id2}"
|
|
body = "{ \"what\" : \"fred->john\", \"_key\" : \"edge1\" }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-key", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should eq("#{@ce}/edge1")
|
|
doc.parsed_response['_key'].should be_kind_of(String)
|
|
doc.parsed_response['_key'].should eq("edge1")
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id3 = doc.parsed_response['_id']
|
|
|
|
# check edge
|
|
cmd = "/_api/edge/#{id3}"
|
|
doc = ArangoDB.log_get("#{prefix}-create-edge-key", cmd)
|
|
|
|
doc.code.should eq(200)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.parsed_response['_id'].should eq(id3)
|
|
doc.parsed_response['_key'].should be_kind_of(String)
|
|
doc.parsed_response['_key'].should eq("edge1")
|
|
doc.parsed_response['_from'].should eq(id1)
|
|
doc.parsed_response['_to'].should eq(id2)
|
|
doc.parsed_response['what'].should eq("fred->john")
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
end
|
|
|
|
################################################################################
|
|
## create using invalid keys
|
|
################################################################################
|
|
|
|
it "creating an edge using invalid keys" do
|
|
cmd = "/_api/document?collection=#{@cv}"
|
|
|
|
# create first vertex
|
|
body = "{ \"name\" : \"Fred\", \"_key\" : \"fred\" }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-key-invalid", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id1 = doc.parsed_response['_id']
|
|
|
|
# create second vertex
|
|
body = "{ \"name\" : \"John\", \"_key\" : \"john\" }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-key-invalid", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id2 = doc.parsed_response['_id']
|
|
|
|
# create edge, 1st try
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{@cv}/rak/ov&to=#{@cv}/pj/otr"
|
|
body = "{ }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-key-invalid", cmd, :body => body)
|
|
|
|
doc.code.should eq(400)
|
|
doc.parsed_response['error'].should eq(true)
|
|
doc.parsed_response['errorNum'].should eq(1205)
|
|
doc.parsed_response['code'].should eq(400)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
# create edge, 2nd try
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{@cv}/rakov&to=#{@cv}/pjotr"
|
|
body = "{ \"_key\" : \"the fox\" }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge-key-invalid", cmd, :body => body)
|
|
|
|
doc.code.should eq(400)
|
|
doc.parsed_response['error'].should eq(true)
|
|
doc.parsed_response['errorNum'].should eq(1221)
|
|
doc.parsed_response['code'].should eq(400)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
end
|
|
|
|
end
|
|
|
|
################################################################################
|
|
## known collection name, waitForSync URL param
|
|
################################################################################
|
|
|
|
context "known collection name:" do
|
|
before do
|
|
@ce = "UnitTestsCollectionEdge"
|
|
@eid = ArangoDB.create_collection(@ce, false, 3) # type 3 = edge collection
|
|
@cv = "UnitTestsCollectionVertex"
|
|
@vid = ArangoDB.create_collection(@cv, true, 2) # type 2 = document collection
|
|
end
|
|
|
|
after do
|
|
ArangoDB.drop_collection(@ce)
|
|
ArangoDB.drop_collection(@cv)
|
|
end
|
|
|
|
it "creating an edge, waitForSync URL param=false" do
|
|
# create first vertex
|
|
cmd = "/_api/document?collection=#{@cv}"
|
|
body = "{ \"a\" : 1 }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id1 = doc.parsed_response['_id']
|
|
|
|
# create second vertex
|
|
body = "{ \"a\" : 2 }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id2 = doc.parsed_response['_id']
|
|
|
|
# create edge
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{id1}&to=#{id2}&waitForSync=false"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge", cmd, :body => body)
|
|
|
|
doc.code.should eq(202)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id3 = doc.parsed_response['_id']
|
|
|
|
# check edge
|
|
cmd = "/_api/edge/#{id3}"
|
|
doc = ArangoDB.log_get("#{prefix}-read-edge", cmd)
|
|
|
|
doc.code.should eq(200)
|
|
doc.parsed_response['_id'].should eq(id3)
|
|
doc.parsed_response['_from'].should eq(id1)
|
|
doc.parsed_response['_to'].should eq(id2)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
end
|
|
|
|
it "creating an edge, waitForSync URL param=true" do
|
|
# create first vertex
|
|
cmd = "/_api/document?collection=#{@cv}"
|
|
body = "{ \"a\" : 1 }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id1 = doc.parsed_response['_id']
|
|
|
|
# create second vertex
|
|
body = "{ \"a\" : 2 }"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id2 = doc.parsed_response['_id']
|
|
|
|
# create edge
|
|
cmd = "/_api/edge?collection=#{@ce}&from=#{id1}&to=#{id2}&waitForSync=true"
|
|
body = "{}"
|
|
doc = ArangoDB.log_post("#{prefix}-create-edge", cmd, :body => body)
|
|
|
|
doc.code.should eq(201)
|
|
doc.parsed_response['_id'].should be_kind_of(String)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
|
|
id3 = doc.parsed_response['_id']
|
|
|
|
# check edge
|
|
cmd = "/_api/edge/#{id3}"
|
|
doc = ArangoDB.log_get("#{prefix}-read-edge", cmd)
|
|
|
|
doc.code.should eq(200)
|
|
doc.parsed_response['_id'].should eq(id3)
|
|
doc.parsed_response['_from'].should eq(id1)
|
|
doc.parsed_response['_to'].should eq(id2)
|
|
doc.headers['content-type'].should eq("application/json; charset=utf-8")
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
|