From 18536e4c902fab2021524e4ee0986c9f45d2b384 Mon Sep 17 00:00:00 2001 From: "Michael B. Klein" Date: Mon, 14 Jun 2010 09:53:10 -0700 Subject: [PATCH] Added primary ID to ORDERS LIN 020; updated tests --- lib/openils/mapper.rb | 17 +++++++++++------ test/map_spec.rb | 2 +- test/openils_map_spec.rb | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/openils/mapper.rb b/lib/openils/mapper.rb index b40dd5ef7..5b7043bbc 100644 --- a/lib/openils/mapper.rb +++ b/lib/openils/mapper.rb @@ -38,8 +38,17 @@ OpenILS::Mapper.map 'order' do |mapper,key,value| mapper.add("CNT", { 'C270' => { '6066' => value['line_items'] } }) end +def map_identifier(data) + id = { '7140' => data['id'] } + if data['id-qualifier'] + id['7143'] = data['id-qualifier'] + end + id +end + OpenILS::Mapper.map 'item' do |mapper,key,value| - mapper.add('LIN', { 'C212' => { '7143' => nil }, '1082' => value['line_index'] }) + primary_id = map_identifier(value['identifiers'].first) + mapper.add('LIN', { 'C212' => primary_id, '1082' => value['line_index'] }) # use Array#inject() to group the identifiers in groups of 5. # Same as Array#in_groups_of() without the active_support dependency. @@ -53,11 +62,7 @@ OpenILS::Mapper.map 'item' do |mapper,key,value| id_groups.each { |group| ids = group.compact.collect { |data| - id = { '7140' => data['id'] } - if data['id-qualifier'] - id['7143'] = data['id-qualifier'] - end - id + map_identifier(data) } mapper.add('PIA',{ 'C212' => ids }) } diff --git a/test/map_spec.rb b/test/map_spec.rb index 02975afde..f4591f612 100644 --- a/test/map_spec.rb +++ b/test/map_spec.rb @@ -114,7 +114,7 @@ describe EDI::E::Mapper do } # Can't compare everything because of timestamping, so we'll just compare # the bodies for a high degree of confidence - interchange.to_hash['body'].should == [{"ORDERS"=>[["UNH", {"S009"=>{"0052"=>"D", "0054"=>"96A", "0065"=>"ORDERS", "0051"=>"UN"}, "0062"=>"1"}], ["BGM", {"1225"=>"9", "C002"=>{"1001"=>"220"}, "1004"=>"2"}], ["DTM", {"C507"=>{"2379"=>"102", "2380"=>"20090331", "2005"=>"137"}}], ["NAD", {"C080"=>{"3036"=>[]}, "C058"=>{"3124"=>[]}, "C059"=>{"3042"=>[]}, "C082"=>{"3039"=>"3472205", "3055"=>"91"}, "SG2"=>[["RFF", {"C506"=>{"1153"=>"API", "1154"=>"3472205 0001"}}]], "3035"=>"BY"}], ["NAD", {"C080"=>{"3036"=>[]}, "C058"=>{"3124"=>[]}, "C059"=>{"3042"=>[]}, "C082"=>{"3039"=>"3472205", "3055"=>"31B"}, "SG2"=>[["RFF", {"C506"=>{"1153"=>"API", "1154"=>"3472205 0001"}}]], "3035"=>"BY"}], ["NAD", {"C080"=>{"3036"=>[]}, "C058"=>{"3124"=>[]}, "C059"=>{"3042"=>[]}, "C082"=>{"3039"=>"1556150", "3055"=>"31B"}, "3035"=>"SU"}], ["NAD", {"C080"=>{"3036"=>[]}, "C058"=>{"3124"=>[]}, "C059"=>{"3042"=>[]}, "C082"=>{"3039"=>"1556150", "3055"=>"91"}, "SG2"=>[["RFF", {"C506"=>{"1153"=>"IA", "1154"=>"1865"}}]], "3035"=>"SU"}], ["CUX", {"C504"=>[{"6345"=>"USD", "6347"=>"2", "6343"=>"9"}]}], ["LIN", {"SG25"=>[["PIA", {"C212"=>[{"7140"=>"03-0010837", "7143"=>"SA"}], "4347"=>"5"}], ["IMD", {"C273"=>{"7008"=>["Discernment"]}, "7077"=>"F", "7081"=>"BTI"}], ["IMD", {"C273"=>{"7008"=>["Concord Records,"]}, "7077"=>"F", "7081"=>"BPU"}], ["IMD", {"C273"=>{"7008"=>["1986."]}, "7077"=>"F", "7081"=>"BPD"}], ["IMD", {"C273"=>{"7008"=>["1 sound disc :"]}, "7077"=>"F", "7081"=>"BPH"}], ["QTY", {"C186"=>{"6060"=>2, "6063"=>"21"}}], ["PRI", {"C509"=>{"5125"=>"AAB", "5118"=>35.95}}], ["RFF", {"C506"=>{"1153"=>"LI", "1154"=>"2/1"}}]], "1082"=>1}], ["LIN", {"SG25"=>[["PIA", {"C212"=>[{"7140"=>"03-0010840", "7143"=>"SA"}], "4347"=>"5"}], ["IMD", {"C273"=>{"7008"=>["The inner source"]}, "7077"=>"F", "7081"=>"BTI"}], ["IMD", {"C273"=>{"7008"=>["Duke, George, 1946-"]}, "7077"=>"F", "7081"=>"BAU"}], ["IMD", {"C273"=>{"7008"=>["MPS Records,"]}, "7077"=>"F", "7081"=>"BPU"}], ["IMD", {"C273"=>{"7008"=>["1973."]}, "7077"=>"F", "7081"=>"BPD"}], ["IMD", {"C273"=>{"7008"=>["2 sound discs :"]}, "7077"=>"F", "7081"=>"BPH"}], ["QTY", {"C186"=>{"6060"=>1, "6063"=>"21"}}], ["PRI", {"C509"=>{"5125"=>"AAB", "5118"=>28.95}}], ["RFF", {"C506"=>{"1153"=>"LI", "1154"=>"2/2"}}]], "1082"=>2}], ["UNS", {"0081"=>"S"}], ["CNT", {"C270"=>{"6069"=>"2", "6066"=>2}}], ["UNT", {"0074"=>33, "0062"=>"1"}]]}] + interchange.to_hash['body'].should == [{"ORDERS"=>[["UNH", {"S009"=>{"0052"=>"D", "0054"=>"96A", "0065"=>"ORDERS", "0051"=>"UN"}, "0062"=>"1"}], ["BGM", {"1225"=>"9", "C002"=>{"1001"=>"220"}, "1004"=>"2"}], ["DTM", {"C507"=>{"2379"=>"102", "2380"=>"20090331", "2005"=>"137"}}], ["NAD", {"3035"=>"BY", "SG2"=>[["RFF", {"C506"=>{"1153"=>"API", "1154"=>"3472205 0001"}}]], "C082"=>{"3039"=>"3472205", "3055"=>"91"}}], ["NAD", {"3035"=>"BY", "SG2"=>[["RFF", {"C506"=>{"1153"=>"API", "1154"=>"3472205 0001"}}]], "C082"=>{"3039"=>"3472205", "3055"=>"31B"}}], ["NAD", {"3035"=>"SU", "C082"=>{"3039"=>"1556150", "3055"=>"31B"}}], ["NAD", {"3035"=>"SU", "SG2"=>[["RFF", {"C506"=>{"1153"=>"IA", "1154"=>"1865"}}]], "C082"=>{"3039"=>"1556150", "3055"=>"91"}}], ["CUX", {"C504"=>[{"6345"=>"USD", "6347"=>"2", "6343"=>"9"}]}], ["LIN", {"SG25"=>[["PIA", {"4347"=>"5", "C212"=>[{"7140"=>"03-0010837", "7143"=>"SA"}]}], ["IMD", {"C273"=>{"7008"=>["Discernment"]}, "7077"=>"F", "7081"=>"BTI"}], ["IMD", {"C273"=>{"7008"=>["Concord Records,"]}, "7077"=>"F", "7081"=>"BPU"}], ["IMD", {"C273"=>{"7008"=>["1986."]}, "7077"=>"F", "7081"=>"BPD"}], ["IMD", {"C273"=>{"7008"=>["1 sound disc :"]}, "7077"=>"F", "7081"=>"BPH"}], ["QTY", {"C186"=>{"6060"=>2, "6063"=>"21"}}], ["PRI", {"C509"=>{"5125"=>"AAB", "5118"=>35.95}}], ["RFF", {"C506"=>{"1153"=>"LI", "1154"=>"2/1"}}]], "1082"=>1}], ["LIN", {"SG25"=>[["PIA", {"4347"=>"5", "C212"=>[{"7140"=>"03-0010840", "7143"=>"SA"}]}], ["IMD", {"C273"=>{"7008"=>["The inner source"]}, "7077"=>"F", "7081"=>"BTI"}], ["IMD", {"C273"=>{"7008"=>["Duke, George, 1946-"]}, "7077"=>"F", "7081"=>"BAU"}], ["IMD", {"C273"=>{"7008"=>["MPS Records,"]}, "7077"=>"F", "7081"=>"BPU"}], ["IMD", {"C273"=>{"7008"=>["1973."]}, "7077"=>"F", "7081"=>"BPD"}], ["IMD", {"C273"=>{"7008"=>["2 sound discs :"]}, "7077"=>"F", "7081"=>"BPH"}], ["QTY", {"C186"=>{"6060"=>1, "6063"=>"21"}}], ["PRI", {"C509"=>{"5125"=>"AAB", "5118"=>28.95}}], ["RFF", {"C506"=>{"1153"=>"LI", "1154"=>"2/2"}}]], "1082"=>2}], ["UNS", {"0081"=>"S"}], ["CNT", {"C270"=>{"6069"=>"2", "6066"=>2}}], ["UNT", {"0074"=>33, "0062"=>"1"}]]}] end end \ No newline at end of file diff --git a/test/openils_map_spec.rb b/test/openils_map_spec.rb index 04db02b68..25114b47a 100644 --- a/test/openils_map_spec.rb +++ b/test/openils_map_spec.rb @@ -34,7 +34,7 @@ describe OpenILS::Mapper do it "should create a message from high-level JEDI input" do json = File.read(File.join(File.dirname(__FILE__), 'test_po.json')) @map = OpenILS::Mapper.from_json(%{{ "body": [{ "ORDERS": #{json}}], "sender": "123456", "recipient": {"id": "999999999", "id-qualifier": "1"}}}) - @map.message.to_s.should == "UNH+1+ORDERS:D:96A:UN'BGM+220+2+9'DTM+137:20090331:102'NAD+BY+3472205::91'RFF+API:3472205 0001'NAD+BY+3472205::31B'RFF+API:3472205 0001'NAD+SU+1556150::31B'NAD+SU+1556150::91'RFF+IA:1865'CUX+2:USD:9'LIN+1'PIA+5+03-0010837:SA'IMD+F+BTI+:::Discernment'IMD+F+BPU+:::Concord Records,'IMD+F+BPD+:::1986.'IMD+F+BPH+:::1 sound disc ?:'QTY+21:2'PRI+AAB:35.95'RFF+LI:2/1'LIN+2'PIA+5+03-0010840:SA'IMD+F+BTI+:::The inner source'IMD+F+BAU+:::Duke, George, 1946-'IMD+F+BPU+:::MPS Records,'IMD+F+BPD+:::1973.'IMD+F+BPH+:::2 sound discs ?:'QTY+21:1'PRI+AAB:28.95'RFF+LI:2/2'UNS+S'CNT+2:2'UNT+33+1'" + @map.message.to_s.should == "UNH+1+ORDERS:D:96A:UN'BGM+220+2+9'DTM+137:20090331:102'NAD+BY+3472205::91'RFF+API:3472205 0001'NAD+BY+3472205::31B'RFF+API:3472205 0001'NAD+SU+1556150::31B'NAD+SU+1556150::91'RFF+IA:1865'CUX+2:USD:9'LIN+1++03-0010837:SA'PIA+5+03-0010837:SA'IMD+F+BTI+:::Discernment'IMD+F+BPU+:::Concord Records,'IMD+F+BPD+:::1986.'IMD+F+BPH+:::1 sound disc ?:'QTY+21:2'PRI+AAB:35.95'RFF+LI:2/1'LIN+2++03-0010840:SA'PIA+5+03-0010840:SA'IMD+F+BTI+:::The inner source'IMD+F+BAU+:::Duke, George, 1946-'IMD+F+BPU+:::MPS Records,'IMD+F+BPD+:::1973.'IMD+F+BPH+:::2 sound discs ?:'QTY+21:1'PRI+AAB:28.95'RFF+LI:2/2'UNS+S'CNT+2:2'UNT+33+1'" @map.header.cS002.to_s.should == "123456:31B" @map.header.cS003.to_s.should == "999999999:1" end -- 2.11.0