oddb2xml 2.5.0 → 2.5.1

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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/Elexis_Artikelstamm_v003.xsd +387 -0
  4. data/Elexis_Artikelstamm_v5.xsd +513 -0
  5. data/Gemfile +2 -6
  6. data/History.txt +11 -0
  7. data/README.md +35 -27
  8. data/artikelstamm.md +68 -0
  9. data/bin/compare_v5 +41 -0
  10. data/bin/oddb2xml +3 -15
  11. data/data/article_overrides.yaml +51859 -0
  12. data/data/gtin2ignore.yaml +30510 -0
  13. data/data/product_overrides.yaml +4 -0
  14. data/lib/oddb2xml/builder.rb +543 -192
  15. data/lib/oddb2xml/cli.rb +82 -62
  16. data/lib/oddb2xml/compare.rb +189 -0
  17. data/lib/oddb2xml/compressor.rb +6 -3
  18. data/lib/oddb2xml/downloader.rb +79 -64
  19. data/lib/oddb2xml/extractor.rb +67 -40
  20. data/lib/oddb2xml/options.rb +76 -77
  21. data/lib/oddb2xml/parslet_compositions.rb +18 -1
  22. data/lib/oddb2xml/util.rb +25 -3
  23. data/lib/oddb2xml/version.rb +1 -1
  24. data/oddb2xml.gemspec +8 -5
  25. data/oddb2xml.xsd +1 -0
  26. data/spec/artikelstamm_spec.rb +383 -0
  27. data/spec/builder_spec.rb +147 -118
  28. data/spec/calc_spec.rb +3 -15
  29. data/spec/cli_spec.rb +24 -35
  30. data/spec/compare_spec.rb +24 -0
  31. data/spec/compressor_spec.rb +1 -3
  32. data/spec/data/Elexis_Artikelstamm_v5.xsd +513 -0
  33. data/spec/data/Preparations.xml +2200 -0
  34. data/spec/data/Publications.xls +0 -0
  35. data/spec/data/artikelstamm_N_010917.xml +39 -0
  36. data/spec/data/artikelstamm_N_011217.xml +17 -0
  37. data/spec/data/artikelstamm_P_010917.xml +86 -0
  38. data/spec/data/artikelstamm_P_011217.xml +63 -0
  39. data/spec/data/oddb2xml_files_lppv.txt +2 -0
  40. data/spec/data/refdata_NonPharma.xml +38 -0
  41. data/spec/data/refdata_Pharma.xml +220 -0
  42. data/spec/data/swissmedic_orphan.xlsx +0 -0
  43. data/spec/data/swissmedic_package.xlsx +0 -0
  44. data/spec/data/transfer.dat +59 -19
  45. data/spec/data/v5_first.xml +102 -0
  46. data/spec/data/v5_second.xml +184 -0
  47. data/spec/data_helper.rb +72 -0
  48. data/spec/downloader_spec.rb +19 -27
  49. data/spec/extractor_spec.rb +27 -33
  50. data/spec/fixtures/vcr_cassettes/artikelstamm.json +1 -0
  51. data/spec/options_spec.rb +73 -66
  52. data/spec/spec_helper.rb +73 -24
  53. data/test_options.rb +4 -2
  54. metadata +100 -21
  55. data/spec/data/XMLPublications.zip +0 -0
  56. data/spec/data/compressor/oddb_article.xml +0 -0
  57. data/spec/data/compressor/oddb_fi.xml +0 -0
  58. data/spec/data/compressor/oddb_fi_product.xml +0 -0
  59. data/spec/data/compressor/oddb_limitation.xml +0 -0
  60. data/spec/data/compressor/oddb_product.xml +0 -0
  61. data/spec/data/compressor/oddb_substance.xml +0 -0
@@ -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
- FileUtils.rm(xlsx_name, :verbose => true) if File.exists?(xlsx_name)
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(:all) do
317
- VCR.configure do |c|
318
- c.before_record(:epha) do |i|
319
- if /epha/.match(i.request.uri)
320
- puts "#{Time.now}: #{__LINE__}: URI was #{i.request.uri}"
321
- lines = i.response.body.split("\n")
322
- to_add = lines[0..5]
323
- iksnrs = []; Oddb2xml::GTINS_DRUGS.each{ |x| iksnrs << x[4..9] }
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 }
@@ -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 = { :refdata=>true,
68
+ expected = {:data_origin=>"refdata",
69
+ :refdata=>true,
70
70
  :_type=>:pharma,
71
- :ean=> Oddb2xml::LEVETIRACETAM_GTIN.to_i,
71
+ :ean13=> Oddb2xml::LEVETIRACETAM_GTIN.to_s,
72
72
  :pharmacode=> pharma_code_LEVETIRACETAM,
73
- :last_change => @@last_change,
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 = 58519
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
- :ean=>7611600441020,
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 7680620690084 correctly" do
129
+ it "should handle pub_price for #{Oddb2xml::LEVETIRACETAM_GTIN} correctly" do
131
130
  @items = subject.to_hash
132
- no_pharma = @items[7680620690084]
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(7680620690084)
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][:ean] == ean13.to_s }[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(NR_PACKS)
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 95
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(7680316440115) }
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(921929) }
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(20652) }
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(8807890) }
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
- it "should set the correct Ethacridin description" do
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' => 'CER’8 after sting Roll-on 20 ml',
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"}
@@ -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
- options = Oddb2xml::Options.new
30
- specify { expect(options.opts).to eq Default_opts }
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
- options = Oddb2xml::Options.new
35
- options.parser.parse!('-c tar.gz'.split(' '))
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(options.opts).to eq expected }
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
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
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
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
52
+ specify { expect(test_opts).to eq expected }
58
53
  end
59
54
 
60
55
  context 'when -a is given' do
61
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
59
+ specify { expect(test_opts).to eq expected }
66
60
  end
67
61
 
68
62
  context 'when --append is given' do
69
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
66
+ specify { expect(test_opts).to eq expected }
74
67
  end
75
68
 
76
69
  context 'when -e is given' do
77
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
76
+ specify { expect(test_opts).to eq expected }
85
77
  end
86
78
 
87
79
  context 'when -e -I 80 is given' do
88
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
87
+ specify { expect(test_opts).to eq expected }
97
88
  end
98
89
 
99
90
  context 'when -f dat is given' do
100
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
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
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
103
+ specify { expect(test_opts).to eq expected }
115
104
  end
116
105
 
117
106
  context 'when -I 80 is given' do
118
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
111
+ specify { expect(test_opts).to eq expected }
124
112
  end
125
113
 
126
114
  context 'when -o is given' do
127
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
118
+ specify { expect(test_opts).to eq expected }
132
119
  end
133
120
 
134
121
  context 'when -i ean14 is given' do
135
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
125
+ specify { expect(test_opts).to eq expected }
140
126
  end
141
127
 
142
128
  context 'when -x addr is given' do
143
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
132
+ specify { expect(test_opts).to eq expected }
148
133
  end
149
134
 
150
135
  context 'when -p zurrose is given' do
151
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
139
+ specify { expect(test_opts).to eq expected }
156
140
  end
157
141
 
158
142
  context 'when -o fi --log is given' do
159
- options = Oddb2xml::Options.new
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(options.opts).to eq expected }
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
- options = Oddb2xml::Options.new
169
- args = '-a nonpharma -p zurrose'.split(' ')
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(options.opts).to eq expected }
175
- specify { expect(args).to eq ["nonpharma", "zurrose"] } # will lead to an exit 2 in bin/oddb2xml
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 --calc is given' do
179
- options = Oddb2xml::Options.new
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[:calc] = true
184
- specify { expect(options.opts).to eq expected }
185
- specify { expect(args).to eq [] }
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