spec/source_sync_spec.rb in rhosync-2.1.16 vs spec/source_sync_spec.rb in rhosync-2.1.17.beta1
- old
+ new
@@ -7,10 +7,12 @@
before(:each) do
@s = Source.load(@s_fields[:name],@s_params)
@ss = SourceSync.new(@s)
end
+ let(:mock_schema) { {"property" => { "name" => "string", "brand" => "string" }, "version" => "1.0"} }
+
it "should create SourceSync" do
@ss.adapter.is_a?(SampleAdapter).should == true
end
it "should fail to create SourceSync with InvalidArgumentError" do
@@ -76,16 +78,29 @@
it "should process source adapter schema" do
mock_schema_method([SampleAdapter]) do
expected = {'1'=>@product1,'2'=>@product2}
set_state('test_db_storage' => expected)
@ss.process_query
- verify_result(@s.docname(:md) => expected,
- @s.docname(:schema) => "{\"property\":{\"brand\":\"string\",\"name\":\"string\"},\"version\":\"1.0\"}",
- @s.docname(:schema_sha1) => "8c148c8c1a66c7baf685c07d58bea360da87981b")
+ verify_result(@s.docname(:md) => expected)
+ JSON.parse(Store.get_value(@s.docname(:schema))).should == mock_schema
+ Store.get_value(@s.docname(:schema_sha1)).should == get_sha1(mock_schema['version'])
end
end
-
+
+ it "should raise exception if source adapter schema has no version key/value pair" do
+ mock_schema_no_version_method([SampleAdapter]) do
+ expected = {'1'=>@product1,'2'=>@product2}
+ set_state('test_db_storage' => expected)
+ @ss.process_query
+ errordoc = @s.docname(:errors)
+ errors = {}
+ Store.lock(errordoc) { errors = Store.get_data(errordoc) }
+ errors.empty?().should == false
+ errors["query-error"]["message"].should == "Mandatory version key is not defined in source adapter schema method"
+ end
+ end
+
it "should process source adapter with stash" do
expected = {'1'=>@product1,'2'=>@product2}
set_state('test_db_storage' => expected)
#@ss.adapter.should_receive(:stash_result).once
@ss.process_query('stash_result' => true)
@@ -150,11 +165,10 @@
)
@ss.update(@c.id)
verify_result(
@c.docname(:update_errors) =>
{"#{ERROR}-error"=>{"message"=>msg}, ERROR=>data[ERROR]},
- @c.docname(:update) => {'4'=> { 'price' => '199.99'}},
@c.docname(:update_rollback) => {ERROR=>{"price"=>"99.99"}})
end
end
describe "delete" do
@@ -172,12 +186,10 @@
it "should do delete with errors" do
msg = "Error delete record"
data = add_error_object({'2'=>@product2},msg)
set_state(@c.docname(:delete) => data)
@ss.delete(@c.id)
- verify_result(@c.docname(:delete_errors) =>
- {"#{ERROR}-error"=>{"message"=>msg}, ERROR=>data[ERROR]},
- @c.docname(:delete) => {'2'=>@product2})
+ verify_result(@c.docname(:delete_errors) => {"#{ERROR}-error"=>{"message"=>msg}, ERROR=>data[ERROR]})
end
end
describe "cud" do
it "should do process_cud" do
\ No newline at end of file