oddb2xml 2.5.0 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
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