OSDN Git Service

import format change to hash
[pettanr/pettanr.git] / vendor / plugins / pettan_importer / test / import_spec.rb
index 354c8be..77d3cea 100644 (file)
@@ -5,11 +5,11 @@ require File.expand_path(File.dirname(__FILE__) + '/import')
 
 describe Import do
   before do
-    @t = '{"a": 1, "b": "Z"}'
+    @t = '{"1": {"a": 1, "b": "Z"}}'
     @j = JSON.parse @t
-    @ts = '[{"a": 1, "b": "Z"}, {"a": 2, "b": "Z"}]'
+    @ts = '{"1": {"a": 1, "b": "Z"}, "2": {"a": 2, "b": "Z"}}'
     @js = JSON.parse @ts
-    @tes = '[{"a": 0}, {"a": 0}, {"a": 2, "b": "Z"}]'
+    @tes = '{"1": {"a": 0}, "2": {"a": 0}, "3": {"a": 2, "b": "Z"}}'
     @jes = JSON.parse @tes
     @f = File.expand_path(File.dirname(__FILE__) + '/import.json')
   end
@@ -20,16 +20,31 @@ describe Import do
     context '単体データを渡されたとき' do
       it '一回処理' do
         r = []
-        Import.each_import @j do |i|
+        Import.each_import @j do |n, i|
           r << i
         end
         r.size.should eq 1
       end
+      it '一回処理' do
+        r = []
+        Import.each_import @j do |n, i|
+          r << n
+        end
+        r.first.should eq "1"
+      end
+      it '一回処理' do
+        r = []
+        Import.each_import @j do |n, i|
+          r << i
+        end
+        r.first["a"].should eq 1
+        r.first["b"].should eq "Z"
+      end
     end
     context '複数を渡されたとき' do
       it '二回処理' do
         r = []
-        Import.each_import @js do |i|
+        Import.each_import @js do |n, i|
           r << i
         end
         r.size.should eq 2
@@ -45,24 +60,24 @@ describe Import do
       it 'Json解析を依頼する' do
         JSON.should_receive(:parse_no_except).with(any_args).exactly(1)
         JSON.stub(:parse_no_except).with(any_args).and_return(@j)
-        Import.import(@t) {|attr| Import.new(attr)}
+        Import.import(@t) {|name, attr| Import.new(attr)}
       end
       it '繰り返し処理を依頼する' do
         JSON.stub(:parse_no_except).with(any_args).and_return(@j)
         Import.should_receive(:each_import).with(any_args).exactly(1)
-        Import.import(@t) {|attr| Import.new(attr)}
+        Import.import(@t) {|name, attr| Import.new(attr)}
       end
       it '更新を一回依頼する' do
         JSON.stub(:parse_no_except).with(any_args).and_return(@j)
         Import.any_instance.stub(:valid?).with(any_args).and_return(true)
         #newでスタブを作るとインスタンス生成ができないので、テスト用スタブで
         Import.should_receive(:etest).with(any_args).exactly(1)
-        Import.import(@t) {|attr| Import.etest ; Import.new(attr) }
+        Import.import(@t) {|name, attr| Import.etest ; Import.new(attr) }
       end
       it '[]を返す' do
         JSON.stub(:parse_no_except).with(any_args).and_return(@j)
         Import.any_instance.stub(:valid?).with(any_args).and_return(true)
-        Import.import(@t) {|attr| Import.new(attr)}.should eq []
+        Import.import(@t) {|name, attr| Import.new(attr)}.should eq []
       end
     end
     context '複数データがつつがなく終わるとき' do
@@ -71,10 +86,10 @@ describe Import do
         Import.any_instance.stub(:valid?).with(any_args).and_return(true)
         #newでスタブを作るとインスタンス生成ができないので、テスト用スタブで
         Import.should_receive(:etest).with(any_args).exactly(2)
-        Import.import(@ts) {|attr| Import.etest ; Import.new(attr)}.should eq []
+        Import.import(@ts) {|name, attr| Import.etest ; Import.new(attr)}.should eq []
       end
       it '[]を返す' do
-        Import.import(@ts) {|attr| Import.new(attr)}.should eq []
+        Import.import(@ts) {|name, attr| Import.new(attr)}.should eq []
       end
     end
     #例外ケース
@@ -83,7 +98,7 @@ describe Import do
         JSON.stub(:parse_no_except).with(any_args).and_return(false)
       end
       it 'Falseを返す' do
-        Import.import(@t){|attr| Import.new(attr)}.should be_false
+        Import.import(@t){|name, attr| Import.new(attr)}.should be_false
       end
     end
     context '作成に失敗したとき' do
@@ -91,33 +106,33 @@ describe Import do
         Import.any_instance.stub(:valid?).with(any_args).and_return(false)
       end
       it '配列を返す' do
-        r = Import.import(@t){|attr| Import.new(attr)}
+        r = Import.import(@t){|name, attr| Import.new(attr)}
         r.is_a?(Array).should be_true
       end
       it '配列の中身は一件' do
-        r = Import.import(@t){|attr| Import.new(attr)}
+        r = Import.import(@t){|name, attr| Import.new(attr)}
         r.should have(1).items
       end
       it 'オブジェクトが入っている' do
-        r = Import.import(@t){|attr| Import.new(attr)}
+        r = Import.import(@t){|name, attr| Import.new(attr)}
         r.first.is_a?(Import).should be_true
       end
     end
     context '複数の作成に失敗したとき' do
       #三件中、二件の失敗、一件を成功させ、成功データは戻り値に含まないことを確認する
       it '途中で保存に失敗しても全件更新依頼する' do
-        Import.import(@tes){|attr| Import.create(attr)}
+        Import.import(@tes){|name, attr| Import.create(attr)}
       end
       it '配列を返す' do
-        r = Import.import(@tes){|attr| Import.create(attr)}
+        r = Import.import(@tes){|name, attr| Import.create(attr)}
         r.is_a?(Array).should be_true
       end
       it '配列の中身は2件' do
-        r = Import.import(@tes){|attr| Import.create(attr)}
+        r = Import.import(@tes){|name, attr| Import.create(attr)}
         r.should have(2).items
       end
       it '配列の中身は失敗したオブジェクトが入っている' do
-        r = Import.import(@tes){|attr| Import.create(attr)}
+        r = Import.import(@tes){|name, attr| Import.create(attr)}
         r[0].is_a?(Import).should be_true
         r[0]["a"].should eq 0
         r[1].is_a?(Import).should be_true