Refactor importer setup and fix shipping_category usage

This commit is contained in:
Matt-Yorkley
2019-04-30 14:01:59 +01:00
committed by Matt-Yorkley
parent fd31a76fba
commit c04c54ebf6

View File

@@ -42,24 +42,22 @@ describe ProductImport::ProductImporter do
let(:permissions) { OpenFoodNetwork::Permissions.new(user) }
let(:shipping_category_id_str) { Spree::ShippingCategory.all.first.id.to_s }
after(:each) do
File.delete('/tmp/test-m.csv')
end
describe "importing products from a spreadsheet" do
before do
csv_data = CSV.generate do |csv|
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "variant_unit_name", "on_demand", "shipping_category_id"]
csv << ["Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", "", "", shipping_category_id_str]
csv << ["Potatoes", "User Enterprise", "Vegetables", "6", "6.50", "2", "kg", "", "", shipping_category_id_str]
csv << ["Pea Soup", "User Enterprise", "Vegetables", "8", "5.50", "750", "ml", "", "0", shipping_category_id_str]
csv << ["Salad", "User Enterprise", "Vegetables", "7", "4.50", "1", "", "bags", "", shipping_category_id_str]
csv << ["Hot Cross Buns", "User Enterprise", "Cake", nil, "3.50", "1", "", "buns", "1", shipping_category_id_str]
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "variant_unit_name", "on_demand", "shipping_category"]
csv << ["Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", "", "", shipping_category.name]
csv << ["Potatoes", "User Enterprise", "Vegetables", "6", "6.50", "2", "kg", "", "", shipping_category.name]
csv << ["Pea Soup", "User Enterprise", "Vegetables", "8", "5.50", "750", "ml", "", "0", shipping_category.name]
csv << ["Salad", "User Enterprise", "Vegetables", "7", "4.50", "1", "", "bags", "", shipping_category.name]
csv << ["Hot Cross Buns", "User Enterprise", "Cake", "7", "3.50", "1", "", "buns", "1", shipping_category.name]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'product_list'}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data
end
after { File.delete('/tmp/test-m.csv') }
it "returns the number of entries" do
expect(@importer.item_count).to eq(5)
@@ -137,16 +135,12 @@ describe ProductImport::ProductImporter do
describe "when uploading a spreadsheet with some invalid entries" do
before do
csv_data = CSV.generate do |csv|
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "shipping_category_id"]
csv << ["Good Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", shipping_category_id_str]
csv << ["Bad Potatoes", "", "Vegetables", "6", "6.50", "1", "", shipping_category_id_str]
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "shipping_category"]
csv << ["Good Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", shipping_category.name]
csv << ["Bad Potatoes", "", "Vegetables", "6", "6.50", "1", "", shipping_category.name]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'product_list'}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data
end
after { File.delete('/tmp/test-m.csv') }
it "validates entries" do
@importer.validate_entries
@@ -181,12 +175,8 @@ describe ProductImport::ProductImporter do
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "variant_unit_name", "on_demand", "shipping_category"]
csv << ["Shipping Test", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", "", nil, nil]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'product_list'}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data
end
after { File.delete('/tmp/test-m.csv') }
it "raises an error" do
@importer.validate_entries
@@ -203,12 +193,8 @@ describe ProductImport::ProductImporter do
csv << ["Product 1", "Non-existent Enterprise", "Vegetables", "5", "5.50", "500", "g"]
csv << ["Product 2", "Non-Producer", "Vegetables", "5", "5.50", "500", "g"]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'product_list'}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data
end
after { File.delete('/tmp/test-m.csv') }
it "adds enterprise errors" do
@importer.validate_entries
@@ -222,16 +208,12 @@ describe ProductImport::ProductImporter do
describe "adding new variants to existing products and updating exiting products" do
before do
csv_data = CSV.generate do |csv|
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category_id"]
csv << ["Hypothetical Cake", "Another Enterprise", "Cake", "5", "5.50", "500", "g", "Preexisting Banana", shipping_category_id_str]
csv << ["Hypothetical Cake", "Another Enterprise", "Cake", "6", "3.50", "500", "g", "Emergent Coffee", shipping_category_id_str]
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category"]
csv << ["Hypothetical Cake", "Another Enterprise", "Cake", "5", "5.50", "500", "g", "Preexisting Banana", shipping_category.name]
csv << ["Hypothetical Cake", "Another Enterprise", "Cake", "6", "3.50", "500", "g", "Emergent Coffee", shipping_category.name]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'product_list'}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data
end
after { File.delete('/tmp/test-m.csv') }
it "validates entries" do
@importer.validate_entries
@@ -268,17 +250,13 @@ describe ProductImport::ProductImporter do
describe "adding new product and sub-variant at the same time" do
before do
csv_data = CSV.generate do |csv|
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category_id"]
csv << ["Potatoes", "User Enterprise", "Vegetables", "5", "3.50", "500", "g", "Small Bag", shipping_category_id_str]
csv << ["Chives", "User Enterprise", "Vegetables", "6", "4.50", "500", "g", "Bag of Chives", shipping_category_id_str]
csv << ["Potatoes", "User Enterprise", "Vegetables", "6", "5.50", "2", "kg", "Big Bag", shipping_category_id_str]
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category"]
csv << ["Potatoes", "User Enterprise", "Vegetables", "5", "3.50", "500", "g", "Small Bag", shipping_category.name]
csv << ["Chives", "User Enterprise", "Vegetables", "6", "4.50", "500", "g", "Small Bag", shipping_category.name]
csv << ["Potatoes", "User Enterprise", "Vegetables", "6", "5.50", "2", "kg", "Big Bag", shipping_category.name]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'product_list'}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data
end
after { File.delete('/tmp/test-m.csv') }
it "validates entries" do
@importer.validate_entries
@@ -313,16 +291,12 @@ describe ProductImport::ProductImporter do
describe "updating various fields" do
before do
csv_data = CSV.generate do |csv|
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "on_demand", "sku", "shipping_category_id"]
csv << ["Beetroot", "And Another Enterprise", "Vegetables", "5", "3.50", "500", "g", "0", nil, shipping_category_id_str]
csv << ["Tomato", "And Another Enterprise", "Vegetables", "6", "5.50", "500", "g", "1", "TOMS", shipping_category_id_str]
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "on_demand", "sku", "shipping_category"]
csv << ["Beetroot", "And Another Enterprise", "Vegetables", "5", "3.50", "500", "g", "0", nil, shipping_category.name]
csv << ["Tomato", "And Another Enterprise", "Vegetables", "6", "5.50", "500", "g", "1", "TOMS", shipping_category.name]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'product_list'}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data
end
after { File.delete('/tmp/test-m.csv') }
it "validates entries" do
@importer.validate_entries
@@ -359,12 +333,8 @@ describe ProductImport::ProductImporter do
csv << ["Beetroot", "And Another Enterprise", "Meat", "5", "3.50", "500", "g"]
csv << ["Tomato", "And Another Enterprise", "Vegetables", "6", "5.50", "500", "Kg"]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'product_list'}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data
end
after { File.delete('/tmp/test-m.csv') }
it "does not allow updating" do
@importer.validate_entries
@@ -382,19 +352,15 @@ describe ProductImport::ProductImporter do
describe "when more than one product of the same name already exists with multiple variants each" do
before do
csv_data = CSV.generate do |csv|
csv << ["name", "producer", "category", "description", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category_id"]
csv << ["Oats", "User Enterprise", "Cereal", "", "50", "3.50", "500", "g", "Rolled Oats", shipping_category_id_str] # Update
csv << ["Oats", "User Enterprise", "Cereal", "", "80", "3.75", "500", "g", "Flaked Oats", shipping_category_id_str] # Update
csv << ["Oats", "User Enterprise", "Cereal", "", "60", "5.50", "500", "g", "Magic Oats", shipping_category_id_str] # Add
csv << ["Oats", "User Enterprise", "Cereal", "", "70", "8.50", "500", "g", "French Oats", shipping_category_id_str] # Add
csv << ["Oats", "User Enterprise", "Cereal", "", "70", "8.50", "500", "g", "Scottish Oats", shipping_category_id_str] # Add
csv << ["name", "producer", "category", "description", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category"]
csv << ["Oats", "User Enterprise", "Cereal", "", "50", "3.50", "500", "g", "Rolled Oats", shipping_category.name] # Update
csv << ["Oats", "User Enterprise", "Cereal", "", "80", "3.75", "500", "g", "Flaked Oats", shipping_category.name] # Update
csv << ["Oats", "User Enterprise", "Cereal", "", "60", "5.50", "500", "g", "Magic Oats", shipping_category.name] # Add
csv << ["Oats", "User Enterprise", "Cereal", "", "70", "8.50", "500", "g", "French Oats", shipping_category.name] # Add
csv << ["Oats", "User Enterprise", "Cereal", "", "70", "8.50", "500", "g", "Scottish Oats", shipping_category.name] # Add
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'product_list'}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data
end
after { File.delete('/tmp/test-m.csv') }
it "validates entries" do
@importer.validate_entries
@@ -421,23 +387,19 @@ describe ProductImport::ProductImporter do
describe "when importer processes create and update across multiple stages" do
before do
csv_data = CSV.generate do |csv|
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category_id"]
csv << ["Bag of Oats", "User Enterprise", "Cereal", "60", "5.50", "500", "g", "Magic Oats", shipping_category_id_str] # Add
csv << ["Bag of Oats", "User Enterprise", "Cereal", "70", "8.50", "500", "g", "French Oats", shipping_category_id_str] # Add
csv << ["Bag of Oats", "User Enterprise", "Cereal", "80", "9.50", "500", "g", "Organic Oats", shipping_category_id_str] # Add
csv << ["Bag of Oats", "User Enterprise", "Cereal", "90", "7.50", "500", "g", "Scottish Oats", shipping_category_id_str] # Add
csv << ["Bag of Oats", "User Enterprise", "Cereal", "30", "6.50", "500", "g", "Breakfast Oats", shipping_category_id_str] # Add
@csv_data = CSV.generate do |csv|
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "display_name", "shipping_category"]
csv << ["Bag of Oats", "User Enterprise", "Cereal", "60", "5.50", "500", "g", "Magic Oats", shipping_category.name] # Add
csv << ["Bag of Oats", "User Enterprise", "Cereal", "70", "8.50", "500", "g", "French Oats", shipping_category.name] # Add
csv << ["Bag of Oats", "User Enterprise", "Cereal", "80", "9.50", "500", "g", "Organic Oats", shipping_category.name] # Add
csv << ["Bag of Oats", "User Enterprise", "Cereal", "90", "7.50", "500", "g", "Scottish Oats", shipping_category.name] # Add
csv << ["Bag of Oats", "User Enterprise", "Cereal", "30", "6.50", "500", "g", "Breakfast Oats", shipping_category.name] # Add
end
File.write('/tmp/test-m.csv', csv_data)
@file = File.new('/tmp/test-m.csv')
@settings = {'import_into' => 'product_list'}
end
after { File.delete('/tmp/test-m.csv') }
it "processes the validation in stages" do
# Using settings of start: 1, end: 2 to simulate import over multiple stages
@importer = ProductImport::ProductImporter.new(@file, admin, start: 1, end: 3, settings: @settings)
# Using settings of start: 1, end: 3 to simulate import over multiple stages
@importer = import_data @csv_data, start: 1, end: 3
@importer.validate_entries
entries = JSON.parse(@importer.entries_json)
@@ -449,7 +411,7 @@ describe ProductImport::ProductImporter do
expect(filter('create_inventory', entries)).to eq 0
expect(filter('update_inventory', entries)).to eq 0
@importer = ProductImport::ProductImporter.new(@file, admin, start: 4, end: 6, settings: @settings)
@importer = import_data @csv_data, start: 4, end: 6
@importer.validate_entries
entries = JSON.parse(@importer.entries_json)
@@ -463,7 +425,7 @@ describe ProductImport::ProductImporter do
end
it "processes saving in stages" do
@importer = ProductImport::ProductImporter.new(@file, admin, start: 1, end: 3, settings: @settings)
@importer = import_data @csv_data, start: 1, end: 3
@importer.save_entries
expect(@importer.products_created_count).to eq 3
@@ -472,7 +434,7 @@ describe ProductImport::ProductImporter do
expect(@importer.inventory_updated_count).to eq 0
expect(@importer.updated_ids.count).to eq 3
@importer = ProductImport::ProductImporter.new(@file, admin, start: 4, end: 6, settings: @settings)
@importer = import_data @csv_data, start: 4, end: 6
@importer.save_entries
expect(@importer.products_created_count).to eq 2
@@ -497,12 +459,8 @@ describe ProductImport::ProductImporter do
csv << ["Sprouts", "Another Enterprise", "User Enterprise", "6", "6.50", "500", "g", ""]
csv << ["Cabbage", "Another Enterprise", "User Enterprise", "2001", "1.50", "1", "", "Whole"]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'inventories'}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data, import_into: 'inventories'
end
after { File.delete('/tmp/test-m.csv') }
it "validates entries" do
@importer.validate_entries
@@ -543,12 +501,8 @@ describe ProductImport::ProductImporter do
csv << ["name", "display_name", "distributor", "producer", "on_hand", "price", "units"]
csv << ["Oats", "Porridge Oats", "Another Enterprise", "User Enterprise", "900", "", "500"]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'inventories'}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data, import_into: 'inventories'
end
after { File.delete('/tmp/test-m.csv') }
it "updates inventory item correctly" do
@importer.save_entries
@@ -571,12 +525,8 @@ describe ProductImport::ProductImporter do
csv << ["name", "distributor", "producer", "on_hand", "price", "units", "variant_unit_name"]
csv << ["Cabbage", "Another Enterprise", "User Enterprise", "900", "", "1", "Whole"]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'inventories'}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data, import_into: 'inventories'
end
after { File.delete('/tmp/test-m.csv') }
it "sets the item to visible in inventory when the item is updated" do
@importer.save_entries
@@ -593,18 +543,13 @@ describe ProductImport::ProductImporter do
end
describe "handling enterprise permissions" do
after { File.delete('/tmp/test-m.csv') }
it "only allows product import into enterprises the user is permitted to manage" do
csv_data = CSV.generate do |csv|
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "shipping_category_id"]
csv << ["My Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", shipping_category_id_str]
csv << ["Your Potatoes", "Another Enterprise", "Vegetables", "6", "6.50", "1", "kg", shipping_category_id_str]
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "shipping_category"]
csv << ["My Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", shipping_category.name]
csv << ["Your Potatoes", "Another Enterprise", "Vegetables", "6", "6.50", "1", "kg", shipping_category.name]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'product_list'}
@importer = ProductImport::ProductImporter.new(file, user, start: 1, end: 100, settings: settings)
@importer = import_data csv_data, import_user: user
@importer.validate_entries
entries = JSON.parse(@importer.entries_json)
@@ -628,10 +573,7 @@ describe ProductImport::ProductImporter do
csv << ["name", "producer", "distributor", "on_hand", "price", "units", "unit_type"]
csv << ["Beans", "User Enterprise", "Another Enterprise", "777", "3.20", "500", "g"]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'inventories'}
@importer = ProductImport::ProductImporter.new(file, user2, start: 1, end: 100, settings: settings)
@importer = import_data csv_data, import_into: 'inventories'
@importer.validate_entries
entries = JSON.parse(@importer.entries_json)
@@ -656,10 +598,7 @@ describe ProductImport::ProductImporter do
csv << ["Beans", "User Enterprise", "5", "3.20", "500", "g"]
csv << ["Sprouts", "User Enterprise", "6", "6.50", "500", "g"]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'inventories'}
@importer = ProductImport::ProductImporter.new(file, user2, start: 1, end: 100, settings: settings)
@importer = import_data csv_data, import_into: 'inventories'
@importer.validate_entries
entries = JSON.parse(@importer.entries_json)
@@ -677,18 +616,13 @@ describe ProductImport::ProductImporter do
end
describe "applying settings and defaults on import" do
after { File.delete('/tmp/test-m.csv') }
it "can reset all products for an enterprise that are not present in the uploaded file to zero stock" do
csv_data = CSV.generate do |csv|
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "shipping_category_id"]
csv << ["Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", shipping_category_id_str]
csv << ["Beans", "User Enterprise", "Vegetables", "6", "6.50", "500", "g", shipping_category_id_str]
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "shipping_category"]
csv << ["Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", shipping_category.name]
csv << ["Beans", "User Enterprise", "Vegetables", "6", "6.50", "500", "g", shipping_category.name]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'product_list', 'reset_all_absent' => true}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data, reset_all_absent: true
@importer.validate_entries
entries = JSON.parse(@importer.entries_json)
@@ -706,7 +640,8 @@ describe ProductImport::ProductImporter do
expect(@importer.updated_ids.count).to eq 2
updated_ids = @importer.updated_ids
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, updated_ids: updated_ids, enterprises_to_reset: [enterprise.id], settings: settings)
@importer = import_data csv_data, reset_all_absent: true, updated_ids: updated_ids, enterprises_to_reset: [enterprise.id]
@importer.reset_absent(updated_ids)
expect(@importer.products_reset_count).to eq 7
@@ -724,10 +659,7 @@ describe ProductImport::ProductImporter do
csv << ["Beans", "Another Enterprise", "User Enterprise", "6", "3.20", "500", "g"]
csv << ["Sprouts", "Another Enterprise", "User Enterprise", "7", "6.50", "500", "g"]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {'import_into' => 'inventories', 'reset_all_absent' => true}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data, import_into: 'inventories', reset_all_absent: true
@importer.validate_entries
entries = JSON.parse(@importer.entries_json)
@@ -743,7 +675,8 @@ describe ProductImport::ProductImporter do
expect(@importer.updated_ids.count).to eq 2
updated_ids = @importer.updated_ids
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, updated_ids: updated_ids, enterprises_to_reset: [enterprise2.id], settings: settings)
@importer = import_data csv_data, import_into: 'inventories', reset_all_absent: true, updated_ids: updated_ids, enterprises_to_reset: [enterprise2.id]
@importer.reset_absent(updated_ids)
# expect(@importer.products_reset_count).to eq 1
@@ -761,13 +694,10 @@ describe ProductImport::ProductImporter do
it "can overwrite fields with selected defaults when importing to product list" do
csv_data = CSV.generate do |csv|
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "tax_category_id", "available_on", "shipping_category_id"]
csv << ["Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", tax_category.id, "", shipping_category_id_str]
csv << ["Potatoes", "User Enterprise", "Vegetables", "6", "6.50", "1", "kg", "", "", shipping_category_id_str]
csv << ["name", "producer", "category", "on_hand", "price", "units", "unit_type", "tax_category_id", "available_on", "shipping_category"]
csv << ["Carrots", "User Enterprise", "Vegetables", "5", "3.20", "500", "g", tax_category.id, "", shipping_category.name]
csv << ["Potatoes", "User Enterprise", "Vegetables", "6", "6.50", "1", "kg", "", "", shipping_category.name]
end
File.write('/tmp/test-m.csv', csv_data)
file = File.new('/tmp/test-m.csv')
settings = {enterprise.id.to_s => {
'import_into' => 'product_list',
'defaults' => {
@@ -794,7 +724,7 @@ describe ProductImport::ProductImporter do
}
}}
@importer = ProductImport::ProductImporter.new(file, admin, start: 1, end: 100, settings: settings)
@importer = import_data csv_data, settings: settings
@importer.validate_entries
entries = JSON.parse(@importer.entries_json)
@@ -826,6 +756,27 @@ end
private
def import_data(csv_data, args={})
import_user = args[:import_user] || admin
import_into = args[:import_into] || 'product_list'
start_row = args[:start] || 1
end_row = args[:end] || 100
reset_all_absent = args[:reset_all_absent] || false
updated_ids = args[:updated_ids] || nil
enterprises_to_reset = args[:enterprises_to_reset] || nil
settings = args[:settings] || { 'import_into' => import_into, 'reset_all_absent' => reset_all_absent }
File.write('/tmp/test-m.csv', csv_data)
@file ||= File.new('/tmp/test-m.csv')
ProductImport::ProductImporter.new(@file,
import_user,
start: start_row,
end: end_row,
updated_ids: updated_ids,
enterprises_to_reset: enterprises_to_reset,
settings: settings)
end
def filter(type, entries)
valid_count = 0
entries.each do |_line_number, entry|