mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Merge pull request #12906 from mkllnk/dfc-stock-import
Fail gracefully on DFC product import errors
This commit is contained in:
@@ -38,6 +38,11 @@ module Admin
|
||||
end
|
||||
|
||||
@count = imported.compact.count
|
||||
rescue Faraday::Error,
|
||||
Addressable::URI::InvalidURIError,
|
||||
ActionController::ParameterMissing => e
|
||||
flash[:error] = e.message
|
||||
redirect_to admin_product_import_path
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -111,6 +111,31 @@ RSpec.describe SuppliedProductBuilder do
|
||||
end
|
||||
end
|
||||
|
||||
describe ".update_product" do
|
||||
let(:subject) { builder.update_product(product, variant) }
|
||||
let(:product) {
|
||||
DfcIo.import(product_json).find do |subject|
|
||||
subject.is_a? DataFoodConsortium::Connector::SuppliedProduct
|
||||
end
|
||||
}
|
||||
let(:product_json) { ExampleJson.read("product.GET") }
|
||||
|
||||
it "updates a variant" do
|
||||
variant # Create test data first
|
||||
|
||||
expect { subject }.not_to change {
|
||||
Spree::Variant.count
|
||||
}
|
||||
|
||||
expect(subject).to eq variant
|
||||
expect(subject.display_name).to eq "Fillet Steak - 201g x 1 Steak"
|
||||
expect(subject.variant_unit).to eq "items"
|
||||
expect(subject.unit_value).to eq 1
|
||||
expect(subject.on_demand).to eq false
|
||||
expect(subject.on_hand).to eq 11
|
||||
end
|
||||
end
|
||||
|
||||
describe ".import_product" do
|
||||
let(:supplied_product) do
|
||||
DfcProvider::SuppliedProduct.new(
|
||||
|
||||
@@ -66,7 +66,9 @@ RSpec.describe "DFC Product Import" do
|
||||
}.to change { enterprise.supplied_products.count }
|
||||
.and change { linked_variant.display_name }
|
||||
.and change { linked_variant.unit_value }
|
||||
.and change { linked_variant.price }
|
||||
.and change { linked_variant.price }.to(2.09)
|
||||
.and change { linked_variant.on_demand }.to(true)
|
||||
.and change { linked_variant.on_hand }.by(0)
|
||||
|
||||
expect(page).to have_content "Importing a DFC product catalog"
|
||||
|
||||
@@ -74,4 +76,31 @@ RSpec.describe "DFC Product Import" do
|
||||
expect(product.variants[0].semantic_links).to be_present
|
||||
expect(product.image).to be_present
|
||||
end
|
||||
|
||||
it "fails gracefully" do
|
||||
user.oidc_account.update!(
|
||||
uid: "anonymous@example.net",
|
||||
updated_at: 1.minute.ago,
|
||||
)
|
||||
url = "https://example.net/unauthorized"
|
||||
stub_request(:get, url).to_return(status: [401, "Unauthorized"])
|
||||
|
||||
visit admin_product_import_path
|
||||
select enterprise.name, from: "Enterprise"
|
||||
fill_in "catalog_url", with: url
|
||||
|
||||
expect { click_button "Import" }.not_to change { Spree::Variant.count }
|
||||
|
||||
expect(page).to have_content "the server responded with status 401"
|
||||
|
||||
select enterprise.name, from: "Enterprise"
|
||||
fill_in "catalog_url", with: "badurl"
|
||||
click_button "Import"
|
||||
expect(page).to have_content "Absolute URI missing hierarchical segment: 'http://:80'"
|
||||
|
||||
select enterprise.name, from: "Enterprise"
|
||||
fill_in "catalog_url", with: ""
|
||||
click_button "Import"
|
||||
expect(page).to have_content "param is missing or the value is empty: catalog_url"
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user