From 26e7012ef076027e3b98d05b17d71770d40a3993 Mon Sep 17 00:00:00 2001 From: wvengen Date: Sun, 18 Jan 2015 02:20:53 +0100 Subject: [PATCH] Fix import options and add tests --- lib/foodsoft_file.rb | 8 ++++---- spec/fixtures/foodsoft_file_01.ods | Bin 0 -> 21727 bytes spec/fixtures/foodsoft_file_01.xls | Bin 0 -> 15872 bytes spec/fixtures/foodsoft_file_01.xlsx | Bin 0 -> 5621 bytes spec/integration/supplier_spec.rb | 28 ++++++++++++++++------------ 5 files changed, 20 insertions(+), 16 deletions(-) create mode 100644 spec/fixtures/foodsoft_file_01.ods create mode 100644 spec/fixtures/foodsoft_file_01.xls create mode 100644 spec/fixtures/foodsoft_file_01.xlsx diff --git a/lib/foodsoft_file.rb b/lib/foodsoft_file.rb index 43a784c2..6ceba5cf 100644 --- a/lib/foodsoft_file.rb +++ b/lib/foodsoft_file.rb @@ -8,10 +8,10 @@ class FoodsoftFile # the parsed article is a simple hash def self.parse(file, options = {}) filepath = file.is_a?(String) ? file : file.to_path - filename = options[:filename] || filepath - fileext = ::File.extname(filename) - options = {col_sep: ';', encoding: 'utf-8'}.merge(options) - s = Roo::Spreadsheet.open filepath, extension: fileext, csv_options: options + filename = options.delete(:filename) || filepath + fileext = File.extname(filename) + options[:csv_options] = {col_sep: ';', encoding: 'utf-8'}.merge(options[:csv_options]||{}) + s = Roo::Spreadsheet.open(filepath, options.merge({extension: fileext})) row_index = 1 s.each do |row| diff --git a/spec/fixtures/foodsoft_file_01.ods b/spec/fixtures/foodsoft_file_01.ods new file mode 100644 index 0000000000000000000000000000000000000000..2f8a1d8a90387564e781d3b1a263a756b2fa71f3 GIT binary patch literal 21727 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 literal 0 HcmV?d00001 diff --git a/spec/fixtures/foodsoft_file_01.xlsx b/spec/fixtures/foodsoft_file_01.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2bd28fe5ba4e38d3739c2e79bd9904a8d4e14d16 GIT binary patch literal 5621 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 literal 0 HcmV?d00001 diff --git a/spec/integration/supplier_spec.rb b/spec/integration/supplier_spec.rb index 34ec912c..e9be4894 100644 --- a/spec/integration/supplier_spec.rb +++ b/spec/integration/supplier_spec.rb @@ -60,21 +60,25 @@ describe 'supplier', :type => :feature do expect(page).to have_content(article.name) end - it 'can import articles' do - article_category.save! - visit upload_supplier_articles_path(supplier) - attach_file 'articles_file', Rails.root.join('spec/fixtures/foodsoft_file_01.csv') - find('input[type="submit"]').click - expect(find("#articles_0_note").value).to eq "bio ◎" - expect(find("#articles_1_name").value).to eq "Pijnboompitten" + Dir.glob('spec/fixtures/foodsoft_file_01.*') do |file| + it "can import articles from #{file}" do + article_category.save! + visit upload_supplier_articles_path(supplier) + attach_file 'articles_file', Rails.root.join(file) + find('input[type="submit"]').click - 4.times do |i| - select article_category.name, :from => "articles_#{i}_article_category_id" + expect(find("tr:nth-child(1) #new_articles__note").value).to eq "bio ◎" + expect(find("tr:nth-child(2) #new_articles__name").value).to eq "Pijnboompitten" + + 4.times do |i| + all("tr:nth-child(#{i+1}) select > option")[1].select_option + end + find('input[type="submit"]').click + expect(page).to have_content("Pijnboompitten") + + expect(supplier.articles.count).to eq 4 end - find('input[type="submit"]').click - - expect(supplier.articles.count).to eq 4 end end