initial commit
This commit is contained in:
commit
c7e432c247
37 changed files with 3472 additions and 0 deletions
24
spec/lib/bioromeo/foodsoft_article_import_bioromeo_spec.rb
Normal file
24
spec/lib/bioromeo/foodsoft_article_import_bioromeo_spec.rb
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
require 'spec_helper'
|
||||
require_relative '../../../lib/foodsoft_article_import'
|
||||
|
||||
describe FoodsoftArticleImport do
|
||||
|
||||
files_path = File.expand_path '../../files', __dir__
|
||||
bioromeo_files_path = File.join(files_path, 'bioromeo')
|
||||
|
||||
dummy_article = {:order_number=>"1", :name => "Wilde aardappels",:article_category => "Aardappels \"nieuwe oogst\"", :deposit => 0, :manufacturer => nil, :origin => "Noordoostpolder, NL", :price => 5.0, :tax => 6, :unit => "5kg", :unit_quantity => 1, :note => "Skal 1234; 123456; Demeter 123456; (Kopervrij)"}
|
||||
|
||||
|
||||
empty = {}
|
||||
|
||||
context "bioromeo" do
|
||||
it 'parses file correctly with type parameter bioromeo' do
|
||||
FoodsoftArticleImport.parse(File.open(File.join(bioromeo_files_path, 'bioromeo_flawless.csv')), type: 'bioromeo') do |new_attrs, status, line|
|
||||
if new_attrs==nil
|
||||
next
|
||||
end
|
||||
expect(new_attrs).to eq dummy_article
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
71
spec/lib/bnn/foodsoft_article_import_bnn_spec.rb
Normal file
71
spec/lib/bnn/foodsoft_article_import_bnn_spec.rb
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
require 'spec_helper'
|
||||
require_relative '../../../lib/foodsoft_article_import'
|
||||
|
||||
describe FoodsoftArticleImport do
|
||||
|
||||
files_path = File.expand_path '../../files', __dir__
|
||||
bnn_files_path = File.join(files_path, 'bnn')
|
||||
|
||||
dummy_article = { name: 'Greek Dressing - Kräuter Mix', order_number: '64721', note: 'Oregano, Basilikum und Minze',
|
||||
manufacturer: 'Medousa, Griechenland Importe', origin: 'GR', article_category: 'Kräutermischungen', unit: '35g', price: '2,89', tax: 7.0, unit_quantity: '6'}
|
||||
|
||||
article = dummy_article.merge({ deposit: 0.08})
|
||||
article_special = article.merge(note: 'Sonderpreis: 2,89 von 20230101 bis 20230201')
|
||||
|
||||
article_2 = dummy_article.merge({manufacturer: nil, article_category: nil})
|
||||
|
||||
article_custom_code = article.merge(article_category: "Schuhe")
|
||||
|
||||
empty = {}
|
||||
|
||||
context 'bnn' do
|
||||
it 'parses bnn file correctly without type parameter' do
|
||||
FoodsoftArticleImport.parse(File.open(File.join(bnn_files_path, 'bnn_flawless.BNN'))) do |new_attrs, status, line|
|
||||
expect(new_attrs).to eq article
|
||||
expect(status).to eq :outlisted
|
||||
end
|
||||
end
|
||||
it 'parses file correctly with type parameter' do
|
||||
FoodsoftArticleImport.parse(File.open(File.join(bnn_files_path, 'bnn_flawless.BNN')), type: 'bnn') do |new_attrs, status, line|
|
||||
expect(new_attrs).to eq article
|
||||
expect(status).to eq :outlisted
|
||||
end
|
||||
end
|
||||
it 'raises error wenn wrong type (except dnb_xml) specified' do
|
||||
expect{FoodsoftArticleImport.parse(File.open(File.join(bnn_files_path, 'bnn_flawless.BNN')),type: 'foodsoft')}.to raise_error(RuntimeError)
|
||||
expect{FoodsoftArticleImport.parse(File.open(File.join(bnn_files_path, 'bnn_flawless.BNN')),type: 'bioromeo')}.to raise_error(RuntimeError)
|
||||
|
||||
expect(FoodsoftArticleImport.parse(File.open(File.join(bnn_files_path, 'bnn_flawless.BNN')),type: 'dnb_xml')).to eq []
|
||||
end
|
||||
it 'parses article with special correctly' do
|
||||
FoodsoftArticleImport.parse(File.open(File.join(bnn_files_path, 'bnn_flawless_special.BNN')), type: 'bnn') do |new_attrs, status, line|
|
||||
expect(new_attrs).to eq article_special
|
||||
expect(status).to eq :special
|
||||
end
|
||||
end
|
||||
it 'parses missing entries correctly' do
|
||||
FoodsoftArticleImport.parse(File.open(File.join(bnn_files_path, 'bnn_missing_entries.BNN')), type: 'bnn') do |new_attrs, status, line|
|
||||
expect(new_attrs).to eq article_2
|
||||
expect(status).to eq nil
|
||||
end
|
||||
end
|
||||
it 'skips rows without order_number' do
|
||||
FoodsoftArticleImport.parse(File.open(File.join(bnn_files_path, 'bnn_missing_order_number.BNN')), type: 'bnn') do |new_attrs, status, line|
|
||||
expect(new_attrs).to eq empty
|
||||
end
|
||||
end
|
||||
it 'joins custom_codes file' do
|
||||
custom_file_path = File.join(files_path, 'custom_codes.yml').to_s
|
||||
FoodsoftArticleImport.parse(File.open(File.join(bnn_files_path, 'bnn_flawless_category.BNN')), custom_file_path: custom_file_path, type: 'bnn') do |new_attrs, status, line|
|
||||
expect(new_attrs).to eq article_custom_code
|
||||
end
|
||||
end
|
||||
it 'parses file with different encoding' do
|
||||
#the bnn file is loaded with encoding ibm850. If file is not ibm850 encoded, some characters might look weird
|
||||
FoodsoftArticleImport.parse(File.open(File.join(bnn_files_path, 'bnn_bad_encoding.BNN')), type: 'bnn') do |new_attrs, status, line|
|
||||
expect(new_attrs[:order_number]).to eq("64721")
|
||||
expect(new_attrs[:name]).to eq("Greek Dressing - Kräuter Mix")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
57
spec/lib/foodsoft/foodsoft_article_import_foodsoft_spec.rb
Normal file
57
spec/lib/foodsoft/foodsoft_article_import_foodsoft_spec.rb
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
require 'spec_helper'
|
||||
require_relative '../../../lib/foodsoft_article_import'
|
||||
|
||||
describe FoodsoftArticleImport do
|
||||
|
||||
files_path = File.expand_path '../../files', __dir__
|
||||
foodsoft_files_path = File.join(files_path, 'foodsoft')
|
||||
|
||||
dummy_article = {:order_number=>"1", :name=>"product", :note=>"bio", :manufacturer=>"someone", :origin=>"eu", :unit=>"1 kg", :price=>"1.23", :tax=>"6", :unit_quantity=>"10", :article_category=>"coolstuff", :deposit=>"0"}
|
||||
|
||||
|
||||
dummy_article_2 = {:order_number=>"12", :name=>"other product", :note=>"bio", :manufacturer=>"someone", :origin=>"eu", :unit=>"2 kg", :price=>"3.45", :tax=>"6", :unit_quantity=>"10", :article_category=>"coolstuff", :deposit=>"0"}
|
||||
|
||||
articles=[dummy_article, dummy_article_2]
|
||||
|
||||
dummy_article_3 = dummy_article.merge({ order_number: ":d8df298"})
|
||||
dummy_article_4 = dummy_article_2.merge({ order_number: ":1f37e39"})
|
||||
articles_number_generated= [dummy_article_3, dummy_article_4]
|
||||
empty = {}
|
||||
|
||||
context "foodsoft" do
|
||||
it 'parses file correctly with type parameter foodsoft' do
|
||||
count =0
|
||||
FoodsoftArticleImport.parse(File.open(File.join(foodsoft_files_path, 'foodsoft_flawless.csv')), type: 'foodsoft') do |new_attrs, status, line|
|
||||
expect(new_attrs).to eq articles[count]
|
||||
expect(status).to eq nil
|
||||
count+=1
|
||||
end
|
||||
end
|
||||
it 'raises error wenn wrong type specified' do
|
||||
expect{FoodsoftArticleImport.parse(File.open(File.join(foodsoft_files_path, 'foodsoft_flawless.csv')),type: 'bioromeo')}.to raise_error(Roo::HeaderRowNotFoundError)
|
||||
expect(FoodsoftArticleImport.parse(File.open(File.join(foodsoft_files_path, 'foodsoft_flawless.csv')),type: 'odin')).to eq []
|
||||
|
||||
expect(FoodsoftArticleImport.parse(File.open(File.join(foodsoft_files_path, 'foodsoft_flawless.csv')),type: 'bnn')).to eq []
|
||||
end
|
||||
it 'parses missing entries correctly' do
|
||||
FoodsoftArticleImport.parse(File.open(File.join(foodsoft_files_path, 'foodsoft_missing_entries.csv')), type: 'foodsoft') do |new_attrs, status, line|
|
||||
expect(status).to eq 'Error: unit, price and tax must be entered'
|
||||
expect(new_attrs[:unit]).to eq "1 kg"
|
||||
expect(new_attrs[:manufacturer]).to eq nil
|
||||
end
|
||||
end
|
||||
it 'generates order numbers for articles without order number' do
|
||||
count=0
|
||||
FoodsoftArticleImport.parse(File.open(File.join(foodsoft_files_path, 'foodsoft_generate_order_number.csv')), type: 'foodsoft') do |new_attrs, status, line|
|
||||
expect(new_attrs).to eq articles_number_generated[count]
|
||||
count+=1
|
||||
end
|
||||
end
|
||||
xit 'joins custom_codes file' do
|
||||
custom_file_path = File.join(files_path, 'custom_codes.yml').to_s
|
||||
FoodsoftArticleImport.parse(File.open(File.join(foodsoft_files_path, 'foodsoft_flawless_custom_category.csv')), custom_file_path: custom_file_path, type: 'foodsoft') do |new_attrs, status, line|
|
||||
expect(new_attrs[:article_category]).to eq "Test Indeling - Test Subindeling"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
67
spec/lib/odin/foodsoft_article_import_odin_spec.rb
Normal file
67
spec/lib/odin/foodsoft_article_import_odin_spec.rb
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
require 'spec_helper'
|
||||
require_relative '../../../lib/foodsoft_article_import'
|
||||
|
||||
describe FoodsoftArticleImport do
|
||||
|
||||
files_path = File.expand_path '../../files', __dir__
|
||||
odin_files_path = File.join(files_path, 'odin')
|
||||
|
||||
dummy_article = {:order_number=>"0109", :name=>"nucli rose", :note=>"Biologisch", :manufacturer=>"NELEMAN", :origin=>"ES", :unit=>"750gr", :price=>"4.52", :unit_quantity=>"6", :tax=>"21", :deposit=>"0", :article_category=>""}
|
||||
|
||||
|
||||
empty = {}
|
||||
|
||||
context "odin/dnb_xml" do
|
||||
it 'parses file correctly with type parameter dnb_xml' do
|
||||
FoodsoftArticleImport.parse(File.open(File.join(odin_files_path, 'odin_flawless.xml')), type: 'dnb_xml') do |new_attrs, status, line|
|
||||
expect(new_attrs).to eq dummy_article
|
||||
expect(status).to eq nil
|
||||
end
|
||||
end
|
||||
it 'parses file correctly with type parameter odin' do
|
||||
FoodsoftArticleImport.parse(File.open(File.join(odin_files_path, 'odin_flawless.xml')), type: 'odin') do |new_attrs, status, line|
|
||||
expect(new_attrs).to eq dummy_article
|
||||
expect(status).to eq nil
|
||||
end
|
||||
end
|
||||
it 'raises error wenn wrong type specified' do
|
||||
expect{FoodsoftArticleImport.parse(File.open(File.join(odin_files_path, 'odin_flawless.xml')),type: 'foodsoft')}.to raise_error(RuntimeError)
|
||||
expect{FoodsoftArticleImport.parse(File.open(File.join(odin_files_path, 'odin_flawless.xml')),type: 'bioromeo')}.to raise_error(RuntimeError)
|
||||
|
||||
expect{FoodsoftArticleImport.parse(File.open(File.join(odin_files_path, 'odin_flawless.xml')),type: 'bnn')}.to raise_error(CSV::MalformedCSVError)
|
||||
end
|
||||
it 'parses missing entries correctly' do
|
||||
FoodsoftArticleImport.parse(File.open(File.join(odin_files_path, 'odin_missing_entries.xml')), type: 'odin') do |new_attrs, status, line|
|
||||
expect(status).to eq :outlisted
|
||||
expect(new_attrs[:unit]).to eq "750st"
|
||||
expect(new_attrs[:manufacturer]).to eq ""
|
||||
end
|
||||
end
|
||||
it 'skips rows without order_number' do
|
||||
FoodsoftArticleImport.parse(File.open(File.join(odin_files_path, 'odin_missing_order_number.xml')), type: 'odin') do |new_attrs, status, line|
|
||||
expect(new_attrs).to eq empty
|
||||
end
|
||||
end
|
||||
it 'joins custom_codes file' do
|
||||
custom_file_path = File.join(files_path, 'custom_codes.yml').to_s
|
||||
FoodsoftArticleImport.parse(File.open(File.join(odin_files_path, 'odin_flawless_custom_category.xml')), custom_file_path: custom_file_path, type: 'odin') do |new_attrs, status, line|
|
||||
expect(new_attrs[:article_category]).to eq "Test Indeling - Test Subindeling"
|
||||
end
|
||||
end
|
||||
|
||||
xit 'parses dummy_article with special correctly' do
|
||||
#TODO: find out whether there are special prices for odin files
|
||||
FoodsoftArticleImport.parse(File.open(File.join(odin_files_path, 'bnn_flawless_special.BNN')), type: 'bnn') do |new_attrs, status, line|
|
||||
expect(new_attrs.manufacturer).to eq nil
|
||||
expect(new_attrs.unit).to eq "750st"
|
||||
end
|
||||
end
|
||||
xit 'parses file with different encoding' do
|
||||
#the bnn file is loaded with encoding ibm850. If file is not ibm850 encoded, some characters might look weird
|
||||
FoodsoftArticleImport.parse(File.open(File.join(odin_files_path, 'bnn_bad_encoding.BNN')), type: 'bnn') do |new_attrs, status, line|
|
||||
expect(new_attrs[:order_number]).to eq("64721")
|
||||
expect(new_attrs[:name]).to eq("Greek Dressing - Kräuter Mix")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue