oddb2xml 2.5.0 → 2.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/Elexis_Artikelstamm_v003.xsd +387 -0
- data/Elexis_Artikelstamm_v5.xsd +513 -0
- data/Gemfile +2 -6
- data/History.txt +11 -0
- data/README.md +35 -27
- data/artikelstamm.md +68 -0
- data/bin/compare_v5 +41 -0
- data/bin/oddb2xml +3 -15
- data/data/article_overrides.yaml +51859 -0
- data/data/gtin2ignore.yaml +30510 -0
- data/data/product_overrides.yaml +4 -0
- data/lib/oddb2xml/builder.rb +543 -192
- data/lib/oddb2xml/cli.rb +82 -62
- data/lib/oddb2xml/compare.rb +189 -0
- data/lib/oddb2xml/compressor.rb +6 -3
- data/lib/oddb2xml/downloader.rb +79 -64
- data/lib/oddb2xml/extractor.rb +67 -40
- data/lib/oddb2xml/options.rb +76 -77
- data/lib/oddb2xml/parslet_compositions.rb +18 -1
- data/lib/oddb2xml/util.rb +25 -3
- data/lib/oddb2xml/version.rb +1 -1
- data/oddb2xml.gemspec +8 -5
- data/oddb2xml.xsd +1 -0
- data/spec/artikelstamm_spec.rb +383 -0
- data/spec/builder_spec.rb +147 -118
- data/spec/calc_spec.rb +3 -15
- data/spec/cli_spec.rb +24 -35
- data/spec/compare_spec.rb +24 -0
- data/spec/compressor_spec.rb +1 -3
- data/spec/data/Elexis_Artikelstamm_v5.xsd +513 -0
- data/spec/data/Preparations.xml +2200 -0
- data/spec/data/Publications.xls +0 -0
- data/spec/data/artikelstamm_N_010917.xml +39 -0
- data/spec/data/artikelstamm_N_011217.xml +17 -0
- data/spec/data/artikelstamm_P_010917.xml +86 -0
- data/spec/data/artikelstamm_P_011217.xml +63 -0
- data/spec/data/oddb2xml_files_lppv.txt +2 -0
- data/spec/data/refdata_NonPharma.xml +38 -0
- data/spec/data/refdata_Pharma.xml +220 -0
- data/spec/data/swissmedic_orphan.xlsx +0 -0
- data/spec/data/swissmedic_package.xlsx +0 -0
- data/spec/data/transfer.dat +59 -19
- data/spec/data/v5_first.xml +102 -0
- data/spec/data/v5_second.xml +184 -0
- data/spec/data_helper.rb +72 -0
- data/spec/downloader_spec.rb +19 -27
- data/spec/extractor_spec.rb +27 -33
- data/spec/fixtures/vcr_cassettes/artikelstamm.json +1 -0
- data/spec/options_spec.rb +73 -66
- data/spec/spec_helper.rb +73 -24
- data/test_options.rb +4 -2
- metadata +100 -21
- data/spec/data/XMLPublications.zip +0 -0
- data/spec/data/compressor/oddb_article.xml +0 -0
- data/spec/data/compressor/oddb_fi.xml +0 -0
- data/spec/data/compressor/oddb_fi_product.xml +0 -0
- data/spec/data/compressor/oddb_limitation.xml +0 -0
- data/spec/data/compressor/oddb_product.xml +0 -0
- data/spec/data/compressor/oddb_substance.xml +0 -0
data/spec/downloader_spec.rb
CHANGED
@@ -75,6 +75,12 @@ def common_before
|
|
75
75
|
cleanup_directories_before_run
|
76
76
|
FileUtils.makedirs(Oddb2xml::WorkDir)
|
77
77
|
Dir.chdir(Oddb2xml::WorkDir)
|
78
|
+
WebMock.enable!
|
79
|
+
{ 'https://download.epha.ch/cleaned/matrix.csv' => 'epha_interactions.csv',
|
80
|
+
}.each do |url, file|
|
81
|
+
inhalt = File.read(File.join(Oddb2xml::SpecData, file))
|
82
|
+
stub_request(:get,url).to_return(body: inhalt)
|
83
|
+
end
|
78
84
|
end
|
79
85
|
|
80
86
|
def common_after
|
@@ -199,7 +205,7 @@ def cleanPackungenXlsx(info)
|
|
199
205
|
FileUtils.makedirs(swissmedic_dir)
|
200
206
|
xlsx_name = File.join(swissmedic_dir, name + '.xlsx')
|
201
207
|
if /Packungen/i.match(xlsx_name)
|
202
|
-
|
208
|
+
FileUtils.rm(xlsx_name, :verbose => false) if File.exists?(xlsx_name)
|
203
209
|
File.open(xlsx_name, 'wb+') { |f| f.write(info.response.body) }
|
204
210
|
FileUtils.cp(xlsx_name, File.join(Oddb2xml::SpecData, 'swissmedic_package_downloaded.xlsx'), :verbose => true, :preserve => true)
|
205
211
|
puts "#{Time.now}: #{__LINE__}: Openening saved #{xlsx_name} (#{File.size(xlsx_name)} bytes) will take some time. URI was #{info.request.uri}"
|
@@ -313,37 +319,23 @@ end
|
|
313
319
|
|
314
320
|
describe Oddb2xml::EphaDownloader do
|
315
321
|
include ServerMockHelper
|
316
|
-
before(:
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
iksnrs.each{ |iksnr| to_add << lines.find{ |x| x.index(','+iksnr.to_s+',') } }
|
325
|
-
i.response.body = to_add.compact.join("\n")
|
326
|
-
i.response.body = i.response.body.split("\n")[0..5].join("\n")
|
327
|
-
i.response.headers['Content-Length'] = i.response.body.size
|
328
|
-
end
|
329
|
-
end
|
330
|
-
end
|
331
|
-
VCR.eject_cassette
|
332
|
-
VCR.insert_cassette('oddb2xml', :tag => :epha)
|
333
|
-
@downloader = Oddb2xml::EphaDownloader.new
|
334
|
-
common_before
|
335
|
-
@downloader.download
|
322
|
+
before(:each) do
|
323
|
+
buildr_capture(:stdout) {
|
324
|
+
@downloader = Oddb2xml::EphaDownloader.new
|
325
|
+
common_before
|
326
|
+
Oddb2xml.add_epha_changes_for_ATC(1, 3, force_run: true)
|
327
|
+
@csv = @downloader.download
|
328
|
+
}
|
329
|
+
expect(File.exist?(File.join(Oddb2xml::Downloads, 'epha_interactions.csv'))).to eq(true)
|
336
330
|
end
|
337
331
|
after(:all) do
|
338
332
|
common_after
|
339
333
|
end
|
334
|
+
|
340
335
|
it_behaves_like 'any downloader'
|
341
336
|
|
342
337
|
context 'when download is called' do
|
343
|
-
let(:csv) {
|
344
|
-
Oddb2xml.add_epha_changes_for_ATC(1, 3)
|
345
|
-
@downloader.download
|
346
|
-
}
|
338
|
+
let(:csv) { @csv }
|
347
339
|
it 'should read csv as String' do
|
348
340
|
expect(csv).to be_a String
|
349
341
|
expect(csv.bytes).not_to be nil
|
@@ -394,7 +386,7 @@ describe Oddb2xml::BagXmlDownloader do
|
|
394
386
|
after(:each) do
|
395
387
|
common_after
|
396
388
|
end
|
397
|
-
|
389
|
+
|
398
390
|
it_behaves_like 'any downloader'
|
399
391
|
context 'when download is called' do
|
400
392
|
let(:xml) {
|
@@ -481,7 +473,7 @@ describe Oddb2xml::ZurroseDownloader do
|
|
481
473
|
@downloader.download
|
482
474
|
end
|
483
475
|
after(:each) do common_after end
|
484
|
-
|
476
|
+
|
485
477
|
it_behaves_like 'any downloader'
|
486
478
|
context 'when download is called' do
|
487
479
|
let(:dat) { @downloader.download }
|
data/spec/extractor_spec.rb
CHANGED
@@ -4,7 +4,6 @@ require 'spec_helper'
|
|
4
4
|
require "#{Dir.pwd}/lib/oddb2xml/downloader"
|
5
5
|
ENV['TZ'] = 'UTC' # needed for last_change
|
6
6
|
LAST_CHANGE = "2015-07-03 00:00:00 +0000"
|
7
|
-
NR_PACKS = 24
|
8
7
|
|
9
8
|
def common_before
|
10
9
|
@savedDir = Dir.pwd
|
@@ -63,21 +62,22 @@ describe Oddb2xml::RefdataExtractor do
|
|
63
62
|
|
64
63
|
it "should have correct info for pharmacode 1699947 correctly" do
|
65
64
|
@pharma_items = subject.to_hash
|
66
|
-
pharma_code_LEVETIRACETAM = 5819012
|
65
|
+
pharma_code_LEVETIRACETAM = '5819012'
|
67
66
|
item_found = @pharma_items.values.find{ |x| x[:pharmacode].eql?(pharma_code_LEVETIRACETAM)}
|
68
67
|
expect(item_found).not_to be nil
|
69
|
-
expected = {
|
68
|
+
expected = {:data_origin=>"refdata",
|
69
|
+
:refdata=>true,
|
70
70
|
:_type=>:pharma,
|
71
|
-
:
|
71
|
+
:ean13=> Oddb2xml::LEVETIRACETAM_GTIN.to_s,
|
72
72
|
:pharmacode=> pharma_code_LEVETIRACETAM,
|
73
|
-
:
|
73
|
+
:data_origin => "refdata",
|
74
74
|
:desc_de=>"LEVETIRACETAM DESITIN Mini Filmtab 250 mg 30 Stk",
|
75
75
|
:desc_fr=>"LEVETIRACETAM DESITIN mini cpr pel 250 mg 30 pce",
|
76
76
|
:atc_code=>"N03AX14",
|
77
|
+
:last_change => "2017-12-08 00:00:00 +0000",
|
77
78
|
:company_name=>"Desitin Pharma GmbH",
|
78
79
|
:company_ean=>"7601001320451"}
|
79
80
|
expect(item_found).to eq(expected)
|
80
|
-
expect(@pharma_items.size).to eq(19)
|
81
81
|
end
|
82
82
|
end
|
83
83
|
context 'should handle nonpharma articles' do
|
@@ -89,21 +89,21 @@ describe Oddb2xml::RefdataExtractor do
|
|
89
89
|
|
90
90
|
it "should have correct info for nonpharma with pharmacode 0058502 correctly" do
|
91
91
|
@non_pharma_items = subject.to_hash
|
92
|
-
pharma_code_TUBEGAZE =
|
92
|
+
pharma_code_TUBEGAZE = '0058519'
|
93
93
|
item_found = @non_pharma_items.values.find{ |x| x[:pharmacode].eql?(pharma_code_TUBEGAZE)}
|
94
94
|
expect(item_found).not_to be nil
|
95
95
|
expected = {:refdata=>true,
|
96
96
|
:_type=>:nonpharma,
|
97
|
-
:
|
97
|
+
:ean13=>'7611600441020',
|
98
98
|
:pharmacode=>pharma_code_TUBEGAZE,
|
99
99
|
:last_change => @@last_change,
|
100
|
+
:data_origin => "refdata",
|
100
101
|
:desc_de=>"TUBEGAZE Verband weiss Nr 12 20m Finger gross",
|
101
102
|
:desc_fr=>"TUBEGAZE pans tubul blanc Nr 12 20m doigts grands",
|
102
103
|
:atc_code=>"",
|
103
104
|
:company_name=>"IVF HARTMANN AG",
|
104
105
|
:company_ean=>"7601001000896"}
|
105
106
|
expect(item_found).to eq(expected)
|
106
|
-
expect(@non_pharma_items.size).to eq(9)
|
107
107
|
end
|
108
108
|
end
|
109
109
|
end
|
@@ -125,16 +125,15 @@ describe Oddb2xml::BagXmlExtractor do
|
|
125
125
|
expect(with_pharma[:packages].size).to eq(1)
|
126
126
|
expect(with_pharma[:packages].first[0]).to eq(Oddb2xml::THREE_TC_GTIN)
|
127
127
|
expect(with_pharma[:packages].first[1][:prices][:pub_price][:price]).to eq('205.3')
|
128
|
-
expect(@items.size).to eq(5)
|
129
128
|
end
|
130
|
-
it "should handle pub_price for
|
129
|
+
it "should handle pub_price for #{Oddb2xml::LEVETIRACETAM_GTIN} correctly" do
|
131
130
|
@items = subject.to_hash
|
132
|
-
no_pharma = @items[
|
131
|
+
no_pharma = @items[Oddb2xml::LEVETIRACETAM_GTIN]
|
133
132
|
expect(no_pharma).not_to be_nil
|
134
133
|
expect(no_pharma[:atc_code]).not_to be_nil
|
135
134
|
expect(no_pharma[:pharmacodes]).not_to be_nil
|
136
135
|
expect(no_pharma[:packages].size).to eq(1)
|
137
|
-
expect(no_pharma[:packages].first[0]).to eq(
|
136
|
+
expect(no_pharma[:packages].first[0]).to eq(Oddb2xml::LEVETIRACETAM_GTIN)
|
138
137
|
expect(no_pharma[:packages].first[1][:prices][:pub_price][:price]).to eq('27.8')
|
139
138
|
end
|
140
139
|
end
|
@@ -178,10 +177,10 @@ describe Oddb2xml::SwissmedicExtractor do
|
|
178
177
|
end
|
179
178
|
|
180
179
|
def get_pack_by_ean13(ean13)
|
181
|
-
@packs.find{|pack| pack[1][:
|
180
|
+
@packs.find{|pack| pack[1][:ean13] == ean13.to_s }[1]
|
182
181
|
end
|
183
182
|
it 'should have correct nr of packages' do
|
184
|
-
expect(@packs.size).to eq(
|
183
|
+
expect(@packs.size).to eq(35)
|
185
184
|
end
|
186
185
|
|
187
186
|
it 'should have serocytol' do
|
@@ -217,14 +216,14 @@ describe Oddb2xml::SwissmedicExtractor do
|
|
217
216
|
end
|
218
217
|
|
219
218
|
context 'can parse swissmedic_orphans.xls' do
|
220
|
-
it
|
219
|
+
it do
|
221
220
|
@filename = File.join(Oddb2xml::SpecData, 'swissmedic_orphan.xlsx')
|
222
221
|
expect(File.exists?(@filename)).to eq(true), "File #{@filename} must exists"
|
223
222
|
@packs = Oddb2xml::SwissmedicExtractor.new(@filename, :orphan).to_arry
|
224
|
-
expect(@packs.size).to eq
|
223
|
+
expect(@packs.size).to eq 96
|
225
224
|
expect(@packs.first).to eq("62132")
|
226
225
|
expect(@packs[7]).to eq("00687")
|
227
|
-
|
226
|
+
end
|
228
227
|
end
|
229
228
|
end
|
230
229
|
|
@@ -236,7 +235,7 @@ describe Oddb2xml::EphaExtractor do
|
|
236
235
|
filename = File.join(Oddb2xml::SpecData, 'epha_interactions.csv')
|
237
236
|
string = IO.read(filename)
|
238
237
|
@actions = Oddb2xml::EphaExtractor.new(string).to_arry
|
239
|
-
expect(@actions.size).to eq(2)
|
238
|
+
expect(@actions.size).to eq(2)
|
240
239
|
}
|
241
240
|
end
|
242
241
|
end
|
@@ -275,7 +274,7 @@ describe Oddb2xml::ZurroseExtractor do
|
|
275
274
|
Oddb2xml::ZurroseExtractor.new(dat)
|
276
275
|
end
|
277
276
|
it { expect(subject.to_hash.keys.length).to eq(1) }
|
278
|
-
it { expect(subject.to_hash.keys.first).to eq(
|
277
|
+
it { expect(subject.to_hash.keys.first).to eq(Oddb2xml::FERRO_GRADUMET_GTIN) }
|
279
278
|
it { expect(subject.to_hash.values.first[:price]).to eq("8.95") }
|
280
279
|
end
|
281
280
|
context 'when Estradiol Creme is given' do
|
@@ -286,11 +285,11 @@ describe Oddb2xml::ZurroseExtractor do
|
|
286
285
|
Oddb2xml::ZurroseExtractor.new(dat)
|
287
286
|
end
|
288
287
|
it { expect(subject.to_hash.keys.length).to eq(1) }
|
289
|
-
it { expect(subject.to_hash.keys.first).to eq(7680284070840) }
|
288
|
+
it { expect(subject.to_hash.keys.first).to eq('7680284070840') }
|
290
289
|
it { expect(subject.to_hash.values.first[:vat]).to eq("2") }
|
291
290
|
it { expect(subject.to_hash.values.first[:price]).to eq("9.40") }
|
292
291
|
it { expect(subject.to_hash.values.first[:pub_price]).to eq("16.30") }
|
293
|
-
it { expect(subject.to_hash.values.first[:pharmacode]).to eq(
|
292
|
+
it { expect(subject.to_hash.values.first[:pharmacode]).to eq('0921929') }
|
294
293
|
end
|
295
294
|
context 'when SELSUN Shampoo is given' do
|
296
295
|
subject do
|
@@ -300,11 +299,11 @@ describe Oddb2xml::ZurroseExtractor do
|
|
300
299
|
Oddb2xml::ZurroseExtractor.new(dat)
|
301
300
|
end
|
302
301
|
it { expect(subject.to_hash.keys.length).to eq(1) }
|
303
|
-
it { expect(subject.to_hash.keys.first).to eq(7680172330681) }
|
302
|
+
it { expect(subject.to_hash.keys.first).to eq('7680172330681') }
|
304
303
|
it { expect(subject.to_hash.values.first[:vat]).to eq("2") }
|
305
304
|
it { expect(subject.to_hash.values.first[:price]).to eq("15.76") }
|
306
305
|
it { expect(subject.to_hash.values.first[:pub_price]).to eq("24.30") }
|
307
|
-
it { expect(subject.to_hash.values.first[:pharmacode]).to eq(
|
306
|
+
it { expect(subject.to_hash.values.first[:pharmacode]).to eq('0020652') }
|
308
307
|
it 'should set the correct SALECD cmut code' do expect(subject.to_hash.values.first[:cmut]).to eq("2") end
|
309
308
|
end
|
310
309
|
context 'when SOFRADEX is given' do
|
@@ -325,7 +324,7 @@ describe Oddb2xml::ZurroseExtractor do
|
|
325
324
|
DAT
|
326
325
|
Oddb2xml::ZurroseExtractor.new(dat, true)
|
327
326
|
end
|
328
|
-
it { expect(subject.to_hash.keys.first).to eq(
|
327
|
+
it { expect(subject.to_hash.keys.first).to eq('9999998807890') }
|
329
328
|
it "should set the correct SALECD cmut code" do expect(subject.to_hash.values.first[:cmut]).to eq("2") end
|
330
329
|
it "should set the correct SALECD description" do expect(subject.to_hash.values.first[:description]).to match(/Ethacridin lactat 1.+ 100ml/) end
|
331
330
|
end
|
@@ -340,15 +339,10 @@ describe Oddb2xml::ZurroseExtractor do
|
|
340
339
|
expect(ethacridin[:description]).to eq("EPIMINERAL Paste 20 g")
|
341
340
|
end
|
342
341
|
|
343
|
-
|
344
|
-
ethacridin = subject.to_hash.values.find{ |x| /Ethacridin/i.match(x[:description])}
|
345
|
-
expect(ethacridin[:description]).to eq("Ethacridin lactat 1‰ 100ml")
|
346
|
-
end
|
347
|
-
specials = { 'SEMPER Cookie' => 'SEMPER Cookie-O’s glutenfrei 150 g',
|
342
|
+
specials = { 'SEMPER Cookie' => "SEMPER Cookie-O's Biskuit glutenfrei 150 g",
|
348
343
|
'DermaSilk' => 'DermaSilk Set Body + Strumpfhöschen 24-36 Mon (98)',
|
349
|
-
'after sting Roll-on' => '
|
350
|
-
'Inkosport' => 'Inkosport Activ Pro 80 Himbeer - Joghurt Ds 750g',
|
351
|
-
'Ethacridin' => "Ethacridin lactat 1‰ 100ml",}.
|
344
|
+
'after sting Roll-on' => "CER'8 after sting Roll-on 20 ml",
|
345
|
+
'Inkosport' => 'Inkosport Activ Pro 80 Himbeer - Joghurt Ds 750g',}.
|
352
346
|
each{ | key, value |
|
353
347
|
it "should set the correct #{key} description" do
|
354
348
|
item = subject.to_hash.values.find{ |x| /#{key}/i.match(x[:description])}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"https://raw.githubusercontent.com/elexis/elexis-3-base/master/at.medevit.ch.artikelstamm/lib/Elexis_Artikelstamm_v4.xsd","body":{"encoding":"US-ASCII","base64_string":""},"headers":{"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"],"User-Agent":["Ruby"]}},"response":{"status":{"code":404,"message":"Not Found"},"headers":{"Content-Security-Policy":["default-src 'none'; style-src 'unsafe-inline'"],"Strict-Transport-Security":["max-age=31536000"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["deny"],"X-Xss-Protection":["1; mode=block"],"X-Github-Request-Id":["11B6:11D0:7EA698:867BAB:59A06234"],"Content-Length":["15"],"Accept-Ranges":["bytes"],"Date":["Fri, 25 Aug 2017 17:45:24 GMT"],"Via":["1.1 varnish"],"Connection":["keep-alive"],"X-Served-By":["cache-hhn1525-HHN"],"X-Cache":["MISS"],"X-Cache-Hits":["0"],"X-Timer":["S1503683125.865361,VS0,VE128"],"Vary":["Authorization,Accept-Encoding"],"Access-Control-Allow-Origin":["*"],"X-Fastly-Request-Id":["e2578bd895aaaaa3661fd670d44258eefb954679"],"Expires":["Fri, 25 Aug 2017 17:50:24 GMT"],"Source-Age":["0"]},"body":{"encoding":"UTF-8","base64_string":"NDA0OiBOb3QgRm91bmQK\n"},"http_version":null},"recorded_at":"Fri, 25 Aug 2017 17:45:25 GMT"}],"recorded_with":"VCR 3.0.3"}
|
data/spec/options_spec.rb
CHANGED
@@ -7,182 +7,189 @@ describe Oddb2xml::Options do
|
|
7
7
|
include ServerMockHelper
|
8
8
|
Default_opts = {
|
9
9
|
:fi => false,
|
10
|
-
:adr => false,
|
11
10
|
:address => false,
|
11
|
+
:artikelstamm => false,
|
12
12
|
:nonpharma => false,
|
13
13
|
:extended => false,
|
14
14
|
:compress_ext => nil,
|
15
15
|
:format => :xml,
|
16
16
|
:calc => false,
|
17
17
|
:tag_suffix => nil,
|
18
|
-
:debug => false,
|
19
18
|
:ean14 => false,
|
20
19
|
:skip_download=> false,
|
21
20
|
:log => false,
|
22
21
|
:percent => nil,
|
22
|
+
:use_ra11zip => nil,
|
23
23
|
}
|
24
|
-
context 'when default_opts' do
|
25
|
-
specify { expect(Oddb2xml::Options.default_opts).to eq Default_opts }
|
26
|
-
end
|
27
|
-
|
28
24
|
context 'when no options is passed' do
|
29
|
-
|
30
|
-
|
25
|
+
test_opts = Oddb2xml::Options.parse('-a')
|
26
|
+
opts = Default_opts.clone
|
27
|
+
opts[:nonpharma] = true
|
28
|
+
specify { expect(test_opts).to eq opts }
|
31
29
|
end
|
32
30
|
|
33
31
|
context 'when -c tar.gz option is given' do
|
34
|
-
|
35
|
-
|
36
|
-
specify { expect(options.opts[:compress_ext]).to eq('tar.gz') }
|
32
|
+
test_opts = Oddb2xml::Options.parse('-c tar.gz')
|
33
|
+
specify { expect(test_opts[:compress_ext]).to eq('tar.gz') }
|
37
34
|
expected = Default_opts.clone
|
38
35
|
expected[:compress_ext] = 'tar.gz'
|
39
|
-
specify { expect(
|
36
|
+
specify { expect(test_opts).to eq expected }
|
40
37
|
end
|
41
38
|
|
42
39
|
context 'when -c tar.gz option --skip-download is given' do
|
43
|
-
|
44
|
-
options.parser.parse!('-c tar.gz --skip-download'.split(' '))
|
40
|
+
test_opts = Oddb2xml::Options.parse('-c tar.gz --skip-download')
|
45
41
|
expected = Default_opts.clone
|
46
42
|
expected[:compress_ext] = 'tar.gz'
|
47
43
|
expected[:skip_download] = true
|
48
|
-
specify { expect(
|
44
|
+
specify { expect(test_opts).to eq expected }
|
49
45
|
end
|
50
46
|
|
51
47
|
context 'when -c tar.gz option --skip-download is given' do
|
52
|
-
|
53
|
-
options.parser.parse!('-c tar.gz --skip-download'.split(' '))
|
48
|
+
test_opts = Oddb2xml::Options.parse('-c tar.gz --skip-download')
|
54
49
|
expected = Default_opts.clone
|
55
50
|
expected[:compress_ext] = 'tar.gz'
|
56
51
|
expected[:skip_download] = true
|
57
|
-
specify { expect(
|
52
|
+
specify { expect(test_opts).to eq expected }
|
58
53
|
end
|
59
54
|
|
60
55
|
context 'when -a is given' do
|
61
|
-
|
62
|
-
options.parser.parse!('-a'.split(' '))
|
56
|
+
test_opts = Oddb2xml::Options.parse('-a')
|
63
57
|
expected = Default_opts.clone
|
64
58
|
expected[:nonpharma] = true
|
65
|
-
specify { expect(
|
59
|
+
specify { expect(test_opts).to eq expected }
|
66
60
|
end
|
67
61
|
|
68
62
|
context 'when --append is given' do
|
69
|
-
|
70
|
-
options.parser.parse!('--append '.split(' '))
|
63
|
+
test_opts = Oddb2xml::Options.parse('--append ')
|
71
64
|
expected = Default_opts.clone
|
72
65
|
expected[:nonpharma] = true
|
73
|
-
specify { expect(
|
66
|
+
specify { expect(test_opts).to eq expected }
|
74
67
|
end
|
75
68
|
|
76
69
|
context 'when -e is given' do
|
77
|
-
|
78
|
-
options.parser.parse!('-e'.split(' '))
|
70
|
+
test_opts = Oddb2xml::Options.parse('-e')
|
79
71
|
expected = Default_opts.clone
|
80
72
|
expected[:extended] = true
|
81
73
|
expected[:nonpharma] = true
|
82
74
|
expected[:calc] = true
|
83
75
|
expected[:price] = :zurrose
|
84
|
-
specify { expect(
|
76
|
+
specify { expect(test_opts).to eq expected }
|
85
77
|
end
|
86
78
|
|
87
79
|
context 'when -e -I 80 is given' do
|
88
|
-
|
89
|
-
options.parser.parse!('-e -I 80'.split(' '))
|
80
|
+
test_opts = Oddb2xml::Options.parse('-e -I 80')
|
90
81
|
expected = Default_opts.clone
|
91
82
|
expected[:extended] = true
|
92
83
|
expected[:nonpharma] = true
|
93
84
|
expected[:calc] = true
|
94
85
|
expected[:price] = :zurrose
|
95
86
|
expected[:percent] = 80
|
96
|
-
specify { expect(
|
87
|
+
specify { expect(test_opts).to eq expected }
|
97
88
|
end
|
98
89
|
|
99
90
|
context 'when -f dat is given' do
|
100
|
-
|
101
|
-
options.parser.parse!('-f dat'.split(' '))
|
91
|
+
test_opts = Oddb2xml::Options.parse('-f dat')
|
102
92
|
expected = Default_opts.clone
|
103
93
|
expected[:format] = :dat
|
104
|
-
specify { expect(
|
94
|
+
specify { expect(test_opts).to eq expected }
|
105
95
|
end
|
106
96
|
|
107
97
|
context 'when -f dat -I 80 is given' do
|
108
|
-
|
109
|
-
options.parser.parse!('-f dat -I 80'.split(' '))
|
98
|
+
test_opts = Oddb2xml::Options.parse('-f dat -I 80')
|
110
99
|
expected = Default_opts.clone
|
111
100
|
expected[:format] = :dat
|
112
101
|
expected[:percent] = 80
|
113
102
|
expected[:price] = :zurrose
|
114
|
-
specify { expect(
|
103
|
+
specify { expect(test_opts).to eq expected }
|
115
104
|
end
|
116
105
|
|
117
106
|
context 'when -I 80 is given' do
|
118
|
-
|
119
|
-
options.parser.parse!('-I 80'.split(' '))
|
107
|
+
test_opts = Oddb2xml::Options.parse('-I 80')
|
120
108
|
expected = Default_opts.clone
|
121
109
|
expected[:percent] = 80
|
122
110
|
expected[:price] = :zurrose
|
123
|
-
specify { expect(
|
111
|
+
specify { expect(test_opts).to eq expected }
|
124
112
|
end
|
125
113
|
|
126
114
|
context 'when -o is given' do
|
127
|
-
|
128
|
-
options.parser.parse!('-o'.split(' '))
|
115
|
+
test_opts = Oddb2xml::Options.parse('-o')
|
129
116
|
expected = Default_opts.clone
|
130
117
|
expected[:fi] = true
|
131
|
-
specify { expect(
|
118
|
+
specify { expect(test_opts).to eq expected }
|
132
119
|
end
|
133
120
|
|
134
121
|
context 'when -i ean14 is given' do
|
135
|
-
|
136
|
-
options.parser.parse!('-i ean14'.split(' '))
|
122
|
+
test_opts = Oddb2xml::Options.parse('-i ean14')
|
137
123
|
expected = Default_opts.clone
|
138
124
|
expected[:ean14] = true
|
139
|
-
specify { expect(
|
125
|
+
specify { expect(test_opts).to eq expected }
|
140
126
|
end
|
141
127
|
|
142
128
|
context 'when -x addr is given' do
|
143
|
-
|
144
|
-
options.parser.parse!('-x addr'.split(' '))
|
129
|
+
test_opts = Oddb2xml::Options.parse('-x addr')
|
145
130
|
expected = Default_opts.clone
|
146
131
|
expected[:address] = true
|
147
|
-
specify { expect(
|
132
|
+
specify { expect(test_opts).to eq expected }
|
148
133
|
end
|
149
134
|
|
150
135
|
context 'when -p zurrose is given' do
|
151
|
-
|
152
|
-
options.parser.parse!('-p zurrose'.split(' '))
|
136
|
+
test_opts = Oddb2xml::Options.parse('-p zurrose')
|
153
137
|
expected = Default_opts.clone
|
154
138
|
expected[:price] = :zurrose
|
155
|
-
specify { expect(
|
139
|
+
specify { expect(test_opts).to eq expected }
|
156
140
|
end
|
157
141
|
|
158
142
|
context 'when -o fi --log is given' do
|
159
|
-
|
160
|
-
options.parser.parse!('-o fi --log'.split(' '))
|
143
|
+
test_opts = Oddb2xml::Options.parse('-o fi --log')
|
161
144
|
expected = Default_opts.clone
|
162
145
|
expected[:fi] = true
|
163
146
|
expected[:log] = true
|
164
|
-
specify { expect(
|
147
|
+
specify { expect(test_opts).to eq expected }
|
165
148
|
end
|
166
149
|
|
167
150
|
context 'when -a nonpharma -p zurrose is given' do
|
168
|
-
|
169
|
-
|
170
|
-
options.parser.parse!(args) # .should raise
|
151
|
+
args = '-a nonpharma -p zurrose'
|
152
|
+
test_opts = Oddb2xml::Options.parse(args) # .should raise
|
171
153
|
expected = Default_opts.clone
|
172
154
|
expected[:price] = :zurrose
|
173
155
|
expected[:nonpharma] = true
|
174
|
-
specify { expect(
|
175
|
-
|
156
|
+
specify { expect(test_opts).to eq expected }
|
157
|
+
end
|
158
|
+
|
159
|
+
context 'when --artikelstamm is given' do
|
160
|
+
args = '--artikelstamm'
|
161
|
+
test_opts = Oddb2xml::Options.parse(args) # .should raise
|
162
|
+
expected = Default_opts.clone
|
163
|
+
expected[:price] = :zurrose
|
164
|
+
expected[:extended] = true
|
165
|
+
expected[:artikelstamm] = true
|
166
|
+
specify { expect(test_opts).to eq expected }
|
167
|
+
end
|
168
|
+
|
169
|
+
context 'when -c tar.gz option is given' do
|
170
|
+
test_opts = Oddb2xml::Options.parse('-c tar.gz')
|
171
|
+
specify { expect(test_opts[:compress_ext]).to eq('tar.gz') }
|
172
|
+
expected = Default_opts.clone
|
173
|
+
expected[:compress_ext] = 'tar.gz'
|
174
|
+
specify { expect(test_opts).to eq expected }
|
176
175
|
end
|
177
176
|
|
178
|
-
context 'when
|
179
|
-
|
180
|
-
args = '--calc'.split(' ')
|
181
|
-
options.parser.parse!(args) # .should raise
|
177
|
+
context 'when --use-ra11zip is given' do
|
178
|
+
test_opts = Oddb2xml::Options.parse(' --use-ra11zip some_other_zip')
|
182
179
|
expected = Default_opts.clone
|
183
|
-
expected[:
|
184
|
-
|
185
|
-
|
180
|
+
expected[:use_ra11zip] = 'some_other_zip'
|
181
|
+
# expected[:price] = :zurrose
|
182
|
+
# expected[:extended] = true
|
183
|
+
# expected[:artikelstamm] = true
|
184
|
+
specify { expect(test_opts).to eq expected }
|
186
185
|
end
|
186
|
+
|
187
|
+
context 'when -t swiss is given' do
|
188
|
+
test_opts = Oddb2xml::Options.parse('-t swiss')
|
189
|
+
expected = Default_opts.clone
|
190
|
+
expected[:tag_suffix] = 'swiss'
|
191
|
+
specify { expect(test_opts).to eq expected }
|
192
|
+
end
|
193
|
+
|
187
194
|
end
|
188
195
|
|