sandozxmlconv 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gemtest +0 -0
- data/History.txt +6 -0
- data/LICENSE +339 -0
- data/README.txt +25 -0
- data/Rakefile +38 -0
- data/doc/index.rbx +14 -0
- data/doc/propharma.rbx +57 -0
- data/doc/resources/xmlconv.css +94 -0
- data/doc/soap.rbx +55 -0
- data/doc/sunstore.rbx +57 -0
- data/doc/unilog.rbx +57 -0
- data/doc/volksapotheke.rbx +57 -0
- data/doc/wbmb.rbx +56 -0
- data/etc/trans_handler.yml +0 -0
- data/lib/conversion/bdd_csv.rb +60 -0
- data/lib/conversion/pharmacieplus_bdd.rb +140 -0
- data/lib/conversion/propharma_bdd.rb +100 -0
- data/lib/conversion/sunstore_bdd.rb +222 -0
- data/lib/conversion/wbmb_bdd.rb +200 -0
- data/lib/conversion/xundart_bdd.rb +73 -0
- data/lib/postprocess/bbmb.rb +88 -0
- data/lib/postprocess/bbmb2.rb +102 -0
- data/lib/postprocess/soap.rb +15 -0
- data/lib/sandozxmlconv.rb +3 -0
- data/test/mock.rb +149 -0
- data/test/rcov +2 -0
- data/test/suite.rb +16 -0
- data/test/test_conversion/pharmacieplus_bdd.rb +224 -0
- data/test/test_conversion/propharma_bdd.rb +101 -0
- data/test/test_conversion/sunstore_bdd.rb +159 -0
- data/test/test_conversion/wbmb_bdd.rb +206 -0
- data/test/test_conversion/xundart_bdd.rb +93 -0
- data/test/test_integration/pharmacieplus_csv.rb +205 -0
- data/test/test_integration/propharma_csv.rb +129 -0
- data/test/test_integration/sunstore_csv.rb +79 -0
- data/test/test_integration/xundart_csv.rb +71 -0
- data/test/test_postprocess/bbmb.rb +229 -0
- data/test/test_postprocess/bbmb2.rb +441 -0
- data/test/test_postprocess/soap.rb +37 -0
- metadata +123 -0
@@ -0,0 +1,129 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Integration::TestProPharmaI2 -- xmlconv2 -- 17.09.2007 -- hwyss@ywesee.com
|
3
|
+
|
4
|
+
$: << File.expand_path('..', File.dirname(__FILE__))
|
5
|
+
$: << File.expand_path('../../lib', File.dirname(__FILE__))
|
6
|
+
|
7
|
+
require 'test/unit'
|
8
|
+
require 'xmlconv/util/transaction'
|
9
|
+
require 'xmlconv/util/destination'
|
10
|
+
require 'conversion/propharma_bdd'
|
11
|
+
require 'conversion/bdd_csv'
|
12
|
+
|
13
|
+
module XmlConv
|
14
|
+
module Integration
|
15
|
+
class TestProPharmaI2 < Test::Unit::TestCase
|
16
|
+
def setup
|
17
|
+
@target_dir = File.expand_path('data/propharma_csv',
|
18
|
+
File.dirname(__FILE__))
|
19
|
+
clear_dir
|
20
|
+
end
|
21
|
+
def teardown
|
22
|
+
clear_dir
|
23
|
+
end
|
24
|
+
def clear_dir
|
25
|
+
if(File.exist?(@target_dir))
|
26
|
+
FileUtils.rm_r(@target_dir)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
def test_propharma_csv
|
30
|
+
XmlConv::CONFIG.default_filename = '%s%s_%s.txt'
|
31
|
+
src = <<-EOS
|
32
|
+
[KUNDE]
|
33
|
+
idt=4100606423
|
34
|
+
nam=Heimstaette Baerau
|
35
|
+
ort=3552 Brau
|
36
|
+
[BSTELL]
|
37
|
+
ref=103492
|
38
|
+
dat=A80213
|
39
|
+
tim=1353
|
40
|
+
[ARTIK]
|
41
|
+
typ=P
|
42
|
+
phc=02839238
|
43
|
+
art=CARSOL CR TABL 200 MG 200 STK
|
44
|
+
mge=2
|
45
|
+
[ARTIK]
|
46
|
+
typ=P
|
47
|
+
phc=02839296
|
48
|
+
art=CARSOL CR TABL 400 MG 200 STK
|
49
|
+
mge=5
|
50
|
+
[ARTIK]
|
51
|
+
typ=P
|
52
|
+
phc=02550609
|
53
|
+
art=CITALOPRAM ECOSOL FILMTABL 40 MG 100 STK
|
54
|
+
mge=1
|
55
|
+
[ARTIK]
|
56
|
+
typ=P
|
57
|
+
phc=02940977
|
58
|
+
art=ECODOLOR RET TABL 100 MG 50 STK
|
59
|
+
mge=10
|
60
|
+
[ARTIK]
|
61
|
+
typ=P
|
62
|
+
phc=01301850
|
63
|
+
art=ECODUREX TABL 5/50 100 STK
|
64
|
+
mge=3
|
65
|
+
[ARTIK]
|
66
|
+
typ=P
|
67
|
+
phc=02128827
|
68
|
+
art=ECOFENAC LIPOGEL 1 % 100 G
|
69
|
+
mge=50
|
70
|
+
[ARTIK]
|
71
|
+
typ=P
|
72
|
+
phc=02128773
|
73
|
+
art=NORSOL TABL 400 MG 42 STK
|
74
|
+
mge=2
|
75
|
+
[ARTIK]
|
76
|
+
typ=P
|
77
|
+
phc=02919753
|
78
|
+
art=OMED TAB FILMTABL 20 MG 100 STK
|
79
|
+
mge=20
|
80
|
+
[ARTIK]
|
81
|
+
typ=P
|
82
|
+
phc=03463433
|
83
|
+
art=OMEPRAZOL SANDOZ ECO KAPS 40 MG 56 STK
|
84
|
+
mge=20
|
85
|
+
[ARTIK]
|
86
|
+
typ=P
|
87
|
+
phc=02965635
|
88
|
+
art=PRAVASTA ECO TABL 20 MG 100 STK
|
89
|
+
mge=3
|
90
|
+
[ARTIK]
|
91
|
+
typ=P
|
92
|
+
phc=02965730
|
93
|
+
art=TORASIS TABL 5 MG 100 STK
|
94
|
+
mge=10
|
95
|
+
[ARTIK]
|
96
|
+
typ=P
|
97
|
+
phc=03663623
|
98
|
+
art=METO ZEROK RET TABL 25 MG 100 STK
|
99
|
+
mge=1
|
100
|
+
EOS
|
101
|
+
ast = Conversion::ProPharmaBdd.parse(src)
|
102
|
+
bdd = Conversion::ProPharmaBdd.convert(ast)
|
103
|
+
csv_docs = Conversion::BddCsv.convert(bdd)
|
104
|
+
assert_instance_of(Array, csv_docs)
|
105
|
+
csv_doc = csv_docs.first
|
106
|
+
assert_match(/^4100606423_.*\.txt/, csv_doc.filename)
|
107
|
+
result = csv_doc.to_s.split("\n")
|
108
|
+
dstr = Date.today.strftime("%d%m%Y")
|
109
|
+
expected = <<-EOS
|
110
|
+
4100606423,,#{dstr},,02839238,,,2,,103492,
|
111
|
+
4100606423,,#{dstr},,02839296,,,5,,103492,
|
112
|
+
4100606423,,#{dstr},,02550609,,,1,,103492,
|
113
|
+
4100606423,,#{dstr},,02940977,,,10,,103492,
|
114
|
+
4100606423,,#{dstr},,01301850,,,3,,103492,
|
115
|
+
4100606423,,#{dstr},,02128827,,,50,,103492,
|
116
|
+
4100606423,,#{dstr},,02128773,,,2,,103492,
|
117
|
+
4100606423,,#{dstr},,02919753,,,20,,103492,
|
118
|
+
4100606423,,#{dstr},,03463433,,,20,,103492,
|
119
|
+
4100606423,,#{dstr},,02965635,,,3,,103492,
|
120
|
+
4100606423,,#{dstr},,02965730,,,10,,103492,
|
121
|
+
4100606423,,#{dstr},,03663623,,,1,,103492,
|
122
|
+
EOS
|
123
|
+
expected.split("\n").each_with_index { |line, index|
|
124
|
+
assert_equal(line, result[index])
|
125
|
+
}
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# TestPharmaciePlusI2 -- xmlconv2 -- 21.08.2006 -- hwyss@ywesee.com
|
3
|
+
|
4
|
+
$: << File.expand_path('..', File.dirname(__FILE__))
|
5
|
+
$: << File.expand_path('../../lib', File.dirname(__FILE__))
|
6
|
+
|
7
|
+
require 'test/unit'
|
8
|
+
require 'xmlconv/util/transaction'
|
9
|
+
require 'xmlconv/util/destination'
|
10
|
+
require 'conversion/sunstore_bdd'
|
11
|
+
require 'conversion/bdd_csv'
|
12
|
+
|
13
|
+
module XmlConv
|
14
|
+
module Integration
|
15
|
+
class TestXmlI2 < Test::Unit::TestCase
|
16
|
+
def setup
|
17
|
+
@src = <<-XML
|
18
|
+
<?xml version="1.0" encoding="ISO-8859-1"?>
|
19
|
+
<customerOrder xmlns="http://www.e-galexis.com/schemas/"
|
20
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
21
|
+
xsi:schemaLocation="http://www.e-galexis.com/schemas/ http://www.e-galexis.com/schemas/POS/customerOrder/customerOrder.xsd"
|
22
|
+
backLogDesired="true" compressionDesired="false" language="de"
|
23
|
+
productDescriptionDesired="false" roundUpForCondition="true"
|
24
|
+
version="1.0">
|
25
|
+
<client number="test" password="test" />
|
26
|
+
<orderHeader deliveryDate="2002-08-25"
|
27
|
+
referenceNumber="123ABCDE9012345" mannerOfTransport="tour"
|
28
|
+
urgent="false">
|
29
|
+
<deliveryAddress line1="Superkunde" line4="Linkestrasse 99"
|
30
|
+
line5PostalCode="3322" line5City="Schönbühl">
|
31
|
+
<addressLine2And3Text line2="Dorfladen" line3="Frau Muster" />
|
32
|
+
</deliveryAddress>
|
33
|
+
</orderHeader>
|
34
|
+
<orderLines>
|
35
|
+
<productOrderLine orderQuantity="10" roundUpForCondition="true"
|
36
|
+
backLogDesired="false">
|
37
|
+
<pharmaCode id="1336630" />
|
38
|
+
</productOrderLine>
|
39
|
+
<productLabelOrderLine defaultOrderQuantity="5">
|
40
|
+
<EAN id="7680123456789" />
|
41
|
+
<supplierProductNumber EANsupplierId="54321678091432"
|
42
|
+
id="123.234-2" />
|
43
|
+
</productLabelOrderLine>
|
44
|
+
</orderLines>
|
45
|
+
</customerOrder>
|
46
|
+
XML
|
47
|
+
@xml_doc = REXML::Document.new(@src)
|
48
|
+
@target_dir = File.expand_path('data/pharmacieplus_csv',
|
49
|
+
File.dirname(__FILE__))
|
50
|
+
clear_dir
|
51
|
+
end
|
52
|
+
def teardown
|
53
|
+
clear_dir
|
54
|
+
end
|
55
|
+
def clear_dir
|
56
|
+
if(File.exist?(@target_dir))
|
57
|
+
FileUtils.rm_r(@target_dir)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
def test_pharmacieplus_csv
|
61
|
+
XmlConv::CONFIG.default_filename = "%s%s_%s.txt"
|
62
|
+
bdd = Conversion::SunStoreBdd.convert(@xml_doc)
|
63
|
+
csv_docs = Conversion::BddCsv.convert(bdd)
|
64
|
+
assert_instance_of(Array, csv_docs)
|
65
|
+
csv_doc = csv_docs.first
|
66
|
+
assert_match(/^test_.*\.txt/, csv_doc.filename)
|
67
|
+
result = csv_doc.to_s.split("\n")
|
68
|
+
dstr = Date.today.strftime("%d%m%Y")
|
69
|
+
expected = <<-EOS
|
70
|
+
,test,#{dstr},,1336630,,,10,,123ABCDE9012345,
|
71
|
+
,test,#{dstr},,,7680123456789,,5,,123ABCDE9012345,
|
72
|
+
EOS
|
73
|
+
expected.split("\n").each_with_index { |line, index|
|
74
|
+
assert_equal(line, result[index])
|
75
|
+
}
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# TestPharmaciePlusI2 -- xmlconv2 -- 21.08.2006 -- hwyss@ywesee.com
|
3
|
+
|
4
|
+
$: << File.expand_path('..', File.dirname(__FILE__))
|
5
|
+
$: << File.expand_path('../../lib', File.dirname(__FILE__))
|
6
|
+
|
7
|
+
require 'test/unit'
|
8
|
+
require 'xmlconv/util/transaction'
|
9
|
+
require 'xmlconv/util/destination'
|
10
|
+
require 'conversion/xundart_bdd'
|
11
|
+
require 'conversion/bdd_csv'
|
12
|
+
|
13
|
+
module XmlConv
|
14
|
+
module Integration
|
15
|
+
class TestXmlI2 < Test::Unit::TestCase
|
16
|
+
def setup
|
17
|
+
@src = <<-XML
|
18
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
19
|
+
<commande xmlns="http://www.xundart.ch" date="7/2/2009 5:29:52 PM" id="1234">
|
20
|
+
<com-pharma ean="7601010273543">
|
21
|
+
<livraison><last-name>Dr. med. Xxxxx Xxxxxx</last-name><address><street>Xxxxxxxxxxxxxxxxx 19</street><zip>9524</zip><city>Zuzwil</city></address></livraison>
|
22
|
+
<article ean="7680568730217" pharmacode="3938385" qte_facture="19"><desc>Torasemid Sandoz eco Tabl 2.5 mg 20 Stk</desc></article>
|
23
|
+
<article ean="7680569080175" pharmacode="3729807" qte_facture="2"><desc>Omeprazol Sandoz eco Filmtabl/Stechamp Filmtabl 20 mg 56 Stk</desc></article>
|
24
|
+
<article ean="7680162790136" pharmacode="0384673" qte_facture="3"><desc>Calcium Sandoz Ampullen 90 mg 10% 5x10 ml Ampullen</desc></article></com-pharma>
|
25
|
+
|
26
|
+
<com-pharma ean="7601010273963">
|
27
|
+
<livraison><last-name>Dr. med. Xxxxxxxxx Xxxxxxx</last-name><address><street>Xxxxxxxxxxxxx 3</street><zip>9602</zip><city>Bazenheid</city></address></livraison>
|
28
|
+
<article ean="7680560350208" pharmacode="3275944" qte_facture="3"><desc>Simcora Filmtabl 60 mg 100 Stk</desc></article></com-pharma>
|
29
|
+
|
30
|
+
<com-pharma ean="7601000000000">
|
31
|
+
<livraison><last-name> Max Muster</last-name><address><street>St. Jakob-Strasse 56a</street><zip>9000</zip><city>St. Gallen</city></address></livraison>
|
32
|
+
<article ean="7680562030047" pharmacode="3296509" qte_facture="5"><desc>Amoxicillin Sandoz Disp Tabl 1000 mg 20 Tabl</desc></article>
|
33
|
+
<article ean="7680162790136" pharmacode="0384673" qte_facture="1"><desc>Calcium Sandoz Ampullen 90 mg 10% 5x10 ml Ampullen</desc></article>
|
34
|
+
<article ean="7680562030184" pharmacode="3401484" qte_facture="10"><desc>Amoxicillin Sandoz Disp Tabl 750 mg 20 Tabl</desc></article></com-pharma>
|
35
|
+
</commande>
|
36
|
+
XML
|
37
|
+
@xml_doc = REXML::Document.new(@src)
|
38
|
+
@target_dir = File.expand_path('data/pharmacieplus_csv',
|
39
|
+
File.dirname(__FILE__))
|
40
|
+
clear_dir
|
41
|
+
end
|
42
|
+
def teardown
|
43
|
+
clear_dir
|
44
|
+
end
|
45
|
+
def clear_dir
|
46
|
+
if(File.exist?(@target_dir))
|
47
|
+
FileUtils.rm_r(@target_dir)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
def test_pharmacieplus_csv
|
51
|
+
XmlConv::CONFIG.default_filename = "%s%s_%s.txt"
|
52
|
+
bdd = Conversion::PharmaciePlusBdd.convert(@xml_doc)
|
53
|
+
csv_docs = Conversion::BddCsv.convert(bdd)
|
54
|
+
assert_instance_of(Array, csv_docs)
|
55
|
+
csv_doc = csv_docs.first
|
56
|
+
assert_match(/^7601010273543_.*\.txt/, csv_doc.filename)
|
57
|
+
result = csv_doc.to_s.split("\n")
|
58
|
+
dstr = Date.today.strftime("%d%m%Y")
|
59
|
+
expected = <<-EOS
|
60
|
+
,7601010273543,#{dstr},,3938385,7680568730217,,"",,1234,
|
61
|
+
,7601010273543,#{dstr},,3729807,7680569080175,,"",,1234,
|
62
|
+
,7601010273543,#{dstr},,0384673,7680162790136,,"",,1234,
|
63
|
+
EOS
|
64
|
+
|
65
|
+
expected.split("\n").each_with_index { |line, index|
|
66
|
+
assert_equal(line, result[index])
|
67
|
+
}
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,229 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# PostProcess::TestBbmb -- xmlconv2 -- 25.08.2006 -- hwyss@ywesee.com
|
3
|
+
|
4
|
+
$: << File.expand_path('../../lib', File.dirname(__FILE__))
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'postprocess/bbmb'
|
8
|
+
require 'flexmock'
|
9
|
+
require 'conversion/pharmacieplus_bdd'
|
10
|
+
|
11
|
+
module XmlConv
|
12
|
+
module PostProcess
|
13
|
+
class TestBbmb < Test::Unit::TestCase
|
14
|
+
def test_inject
|
15
|
+
src = <<-XML
|
16
|
+
<?xml version="1.0" encoding="ISO-8859-1"?>
|
17
|
+
<commande id="1861" date="2006-08-16T09:32:35.303+02:00" xmlns="http://www.ofac.ch/XEDO">
|
18
|
+
<groupe>
|
19
|
+
<last-name>pharmacieplus Directe</last-name>
|
20
|
+
<first-name> </first-name>
|
21
|
+
<other-name>Messieurs Eric Bussat + Christian Rouvinez</other-name>
|
22
|
+
<address>
|
23
|
+
<street>les courbes 5</street>
|
24
|
+
<zip>1121</zip>
|
25
|
+
<city>Bremblens</city>
|
26
|
+
</address>
|
27
|
+
<telecom>
|
28
|
+
<phone number="021 811 48 88"/>
|
29
|
+
<fax number="021 811 48 89"/>
|
30
|
+
</telecom>
|
31
|
+
<online>
|
32
|
+
<email>secretariat@pharmacieplus.ch</email>
|
33
|
+
</online>
|
34
|
+
</groupe>
|
35
|
+
<fournisseur ean="7601001000681">
|
36
|
+
<last-name>GLOBOPHARM AG</last-name>
|
37
|
+
<first-name> </first-name>
|
38
|
+
<address>
|
39
|
+
<street>Seestrasse 200</street>
|
40
|
+
<zip>8700</zip>
|
41
|
+
<city>KUESNACHT</city>
|
42
|
+
<country>CH</country>
|
43
|
+
</address>
|
44
|
+
</fournisseur>
|
45
|
+
<com-global>
|
46
|
+
<article ean="7680543802083" pharmacode="2054106" qte-livraison="12" qte-facture="10">
|
47
|
+
<desc>ANTRA MUPS 10 Tabl 10 mg 100 Stk</desc>
|
48
|
+
<cond-com>
|
49
|
+
<bonus facture="10" livre="12"/>
|
50
|
+
</cond-com>
|
51
|
+
</article>
|
52
|
+
<article ean="7680543800386" pharmacode="2054081" qte-livraison="12" qte-facture="10">
|
53
|
+
<desc>ANTRA MUPS 10 Tabl 10 mg 28 Stk</desc>
|
54
|
+
<cond-com>
|
55
|
+
<bonus facture="10" livre="12"/>
|
56
|
+
</cond-com>
|
57
|
+
</article>
|
58
|
+
<article ean="7680543801949" pharmacode="2054098" qte-livraison="30" qte-facture="20">
|
59
|
+
<desc>ANTRA MUPS 10 Tabl 10 mg 56 Stk</desc>
|
60
|
+
<cond-com>
|
61
|
+
<bonus facture="10" livre="15"/>
|
62
|
+
</cond-com>
|
63
|
+
</article>
|
64
|
+
<article ean="7680543802403" pharmacode="2054158" qte-livraison="15" qte-facture="10">
|
65
|
+
<desc>ANTRA MUPS 20 Tabl 20 mg 100 Stk</desc>
|
66
|
+
<cond-com>
|
67
|
+
<bonus facture="10" livre="15"/>
|
68
|
+
</cond-com>
|
69
|
+
</article>
|
70
|
+
<article ean="7680543800898" pharmacode="2054129" qte-livraison="13" qte-facture="13">
|
71
|
+
<desc>ANTRA MUPS 20 Tabl 20 mg 14 Stk</desc>
|
72
|
+
<cond-com rabais="10.0"/>
|
73
|
+
</article>
|
74
|
+
<article ean="7680543800973" pharmacode="2054135" qte-livraison="28" qte-facture="20">
|
75
|
+
<desc>ANTRA MUPS 20 Tabl 20 mg 28 Stk</desc>
|
76
|
+
<cond-com>
|
77
|
+
<bonus facture="10" livre="14"/>
|
78
|
+
</cond-com>
|
79
|
+
</article>
|
80
|
+
<article ean="7680543802328" pharmacode="2054141" qte-livraison="17" qte-facture="17">
|
81
|
+
<desc>ANTRA MUPS 20 Tabl 20 mg 56 Stk</desc>
|
82
|
+
<cond-com rabais="15.0"/>
|
83
|
+
</article>
|
84
|
+
<article ean="7680543800706" pharmacode="2054112" qte-livraison="28" qte-facture="20">
|
85
|
+
<desc>ANTRA MUPS 20 Tabl 20 mg 7 Stk</desc>
|
86
|
+
<cond-com>
|
87
|
+
<bonus facture="10" livre="14"/>
|
88
|
+
</cond-com>
|
89
|
+
</article>
|
90
|
+
<article ean="7680548750532" pharmacode="2204899" qte-livraison="11" qte-facture="11">
|
91
|
+
<desc>ATACAND PLUS Tabl 16/12.5 mg 28 Stk</desc>
|
92
|
+
<cond-com rabais="5.0"/>
|
93
|
+
</article>
|
94
|
+
<article ean="7680548750617" pharmacode="2204907" qte-livraison="30" qte-facture="20">
|
95
|
+
<desc>ATACAND PLUS Tabl 16/12.5 mg 98 Stk</desc>
|
96
|
+
<cond-com>
|
97
|
+
<bonus facture="10" livre="15"/>
|
98
|
+
</cond-com>
|
99
|
+
</article>
|
100
|
+
</com-global>
|
101
|
+
<com-pharma ean="7601001368095">
|
102
|
+
<livraison>
|
103
|
+
<last-name>Pharmacie du Mandement</last-name>
|
104
|
+
<first-name> </first-name>
|
105
|
+
<other-name> Monsieur Fr�d�ric Recipient </other-name>
|
106
|
+
<address>
|
107
|
+
<street>3e adresse e-mail</street>
|
108
|
+
<zip>1242</zip>
|
109
|
+
<city>Satigny</city>
|
110
|
+
</address>
|
111
|
+
</livraison>
|
112
|
+
<article ean="7680543801949" pharmacode="2054098" qte-livraison="15" qte-facture="10">
|
113
|
+
<desc>ANTRA MUPS 10 Tabl 10 mg 56 Stk</desc>
|
114
|
+
</article>
|
115
|
+
<article ean="7680543802403" pharmacode="2054158" qte-livraison="15" qte-facture="10">
|
116
|
+
<desc>ANTRA MUPS 20 Tabl 20 mg 100 Stk</desc>
|
117
|
+
</article>
|
118
|
+
<article ean="7680543800898" pharmacode="2054129" qte-livraison="6" qte-facture="6">
|
119
|
+
<desc>ANTRA MUPS 20 Tabl 20 mg 14 Stk</desc>
|
120
|
+
</article>
|
121
|
+
<article ean="7680543802328" pharmacode="2054141" qte-livraison="9" qte-facture="9">
|
122
|
+
<desc>ANTRA MUPS 20 Tabl 20 mg 56 Stk</desc>
|
123
|
+
</article>
|
124
|
+
<article ean="7680543800706" pharmacode="2054112" qte-livraison="28" qte-facture="20">
|
125
|
+
<desc>ANTRA MUPS 20 Tabl 20 mg 7 Stk</desc>
|
126
|
+
</article>
|
127
|
+
<article ean="7680548750532" pharmacode="2204899" qte-livraison="11" qte-facture="11">
|
128
|
+
<desc>ATACAND PLUS Tabl 16/12.5 mg 28 Stk</desc>
|
129
|
+
</article>
|
130
|
+
<article ean="7680548750617" pharmacode="2204907" qte-livraison="30" qte-facture="20">
|
131
|
+
<desc>ATACAND PLUS Tabl 16/12.5 mg 98 Stk</desc>
|
132
|
+
</article>
|
133
|
+
</com-pharma>
|
134
|
+
<com-pharma ean="7601001368491">
|
135
|
+
<livraison>
|
136
|
+
<last-name>Pharm. Ecole-de-M�decine</last-name>
|
137
|
+
<first-name> </first-name>
|
138
|
+
<other-name> Madame Fran�oise Recipient </other-name>
|
139
|
+
<address>
|
140
|
+
<street>3e adresse e-mail</street>
|
141
|
+
<zip>1205</zip>
|
142
|
+
<city>Gen�ve</city>
|
143
|
+
</address>
|
144
|
+
</livraison>
|
145
|
+
<article ean="7680543802083" pharmacode="2054106" qte-livraison="12" qte-facture="10">
|
146
|
+
<desc>ANTRA MUPS 10 Tabl 10 mg 100 Stk</desc>
|
147
|
+
</article>
|
148
|
+
<article ean="7680543800386" pharmacode="2054081" qte-livraison="12" qte-facture="10">
|
149
|
+
<desc>ANTRA MUPS 10 Tabl 10 mg 28 Stk</desc>
|
150
|
+
</article>
|
151
|
+
<article ean="7680543801949" pharmacode="2054098" qte-livraison="15" qte-facture="10">
|
152
|
+
<desc>ANTRA MUPS 10 Tabl 10 mg 56 Stk</desc>
|
153
|
+
</article>
|
154
|
+
<article ean="7680543800898" pharmacode="2054129" qte-livraison="7" qte-facture="7">
|
155
|
+
<desc>ANTRA MUPS 20 Tabl 20 mg 14 Stk</desc>
|
156
|
+
</article>
|
157
|
+
<article ean="7680543800973" pharmacode="2054135" qte-livraison="28" qte-facture="20">
|
158
|
+
<desc>ANTRA MUPS 20 Tabl 20 mg 28 Stk</desc>
|
159
|
+
</article>
|
160
|
+
<article ean="7680543802328" pharmacode="2054141" qte-livraison="8" qte-facture="8">
|
161
|
+
<desc>ANTRA MUPS 20 Tabl 20 mg 56 Stk</desc>
|
162
|
+
</article>
|
163
|
+
</com-pharma>
|
164
|
+
</commande>
|
165
|
+
XML
|
166
|
+
xml_doc = REXML::Document.new(src)
|
167
|
+
bdd = Conversion::PharmaciePlusBdd.convert(xml_doc)
|
168
|
+
transaction = FlexMock.new
|
169
|
+
transaction.should_receive(:model).and_return { bdd }
|
170
|
+
bbmb = FlexMock.new
|
171
|
+
expected_orders = [
|
172
|
+
[
|
173
|
+
[{:article_ean13=>"7680543801949", :article_pcode=>"2054098"}, 15],
|
174
|
+
[{:article_ean13=>"7680543802403", :article_pcode=>"2054158"}, 15],
|
175
|
+
[{:article_ean13=>"7680543800898", :article_pcode=>"2054129"}, 6],
|
176
|
+
[{:article_ean13=>"7680543802328", :article_pcode=>"2054141"}, 9],
|
177
|
+
[{:article_ean13=>"7680543800706", :article_pcode=>"2054112"}, 28],
|
178
|
+
[{:article_ean13=>"7680548750532", :article_pcode=>"2204899"}, 11],
|
179
|
+
[{:article_ean13=>"7680548750617", :article_pcode=>"2204907"}, 30],
|
180
|
+
],
|
181
|
+
[
|
182
|
+
[{:article_ean13=>"7680543802083", :article_pcode=>"2054106"}, 12],
|
183
|
+
[{:article_ean13=>"7680543800386", :article_pcode=>"2054081"}, 12],
|
184
|
+
[{:article_ean13=>"7680543801949", :article_pcode=>"2054098"}, 15],
|
185
|
+
[{:article_ean13=>"7680543800898", :article_pcode=>"2054129"}, 7],
|
186
|
+
[{:article_ean13=>"7680543800973", :article_pcode=>"2054135"}, 28],
|
187
|
+
[{:article_ean13=>"7680543802328", :article_pcode=>"2054141"}, 8],
|
188
|
+
],
|
189
|
+
]
|
190
|
+
expected_infos = [
|
191
|
+
{
|
192
|
+
:order_reference => "1861",
|
193
|
+
:order_comment => <<-EOS.strip
|
194
|
+
7601001368095
|
195
|
+
Monsieur Fr�d�ric Recipient
|
196
|
+
Pharmacie du Mandement
|
197
|
+
3e adresse e-mail
|
198
|
+
1242 Satigny
|
199
|
+
EOS
|
200
|
+
},
|
201
|
+
{
|
202
|
+
:order_reference => "1861",
|
203
|
+
:order_comment => <<-EOS.strip
|
204
|
+
7601001368491
|
205
|
+
Madame Fran�oise Recipient
|
206
|
+
Pharm. Ecole-de-M�decine
|
207
|
+
3e adresse e-mail
|
208
|
+
1205 Gen�ve
|
209
|
+
EOS
|
210
|
+
},
|
211
|
+
]
|
212
|
+
bbmb.should_receive(:inject_order).times(2)\
|
213
|
+
.and_return { |short, id, order, info|
|
214
|
+
assert_equal('gag', short)
|
215
|
+
assert_equal('221200', id)
|
216
|
+
assert_equal(expected_orders.shift, order)
|
217
|
+
assert_equal(expected_infos.shift, info)
|
218
|
+
raise "some error"
|
219
|
+
}
|
220
|
+
svc = DRb.start_service('druby://localhost:0', bbmb)
|
221
|
+
assert_raises(RuntimeError) {
|
222
|
+
Bbmb.inject(svc.uri, 'gag', '221200', transaction)
|
223
|
+
}
|
224
|
+
ensure
|
225
|
+
svc.stop_service
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
229
|
+
end
|