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