Skip to content

Commit

Permalink
Merge pull request #12412 from dacook/buu/fix-non-admin-saving-12403
Browse files Browse the repository at this point in the history
[BUU] Fix non-admin saving
  • Loading branch information
filipefurtad0 authored Apr 25, 2024
2 parents 09354dc + b846d0f commit 4ff8326
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 14 deletions.
2 changes: 1 addition & 1 deletion app/models/spree/ability.rb
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ def add_product_management_abilities(user)
OpenFoodNetwork::Permissions.new(user).managed_product_enterprises.include? product.supplier
end

can [:admin, :index], :products_v3
can [:admin, :index, :bulk_update], :products_v3

can [:create], Spree::Variant
can [:admin, :index, :read, :edit,
Expand Down
2 changes: 1 addition & 1 deletion app/webpacker/controllers/application_controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export default class extends Controller {
console.error(reflex + ":\n " + error);

// show error message
alert(I18n.t("errors.stimulus_reflex_error"));
alert(I18n.t("errors.general_error.message"));
}

reflexForbidden(element, reflex, noop, reflexId) {
Expand Down
14 changes: 14 additions & 0 deletions app/webpacker/js/turbo.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import "@hotwired/turbo";

document.addEventListener("turbo:frame-missing", (event) => {
// don't replace frame contents
event.preventDefault();

// show error message instead
status = event.detail.response.status;
if(status == 401) {
alert(I18n.t("errors.unauthorized.message"));
} else {
alert(I18n.t("errors.general_error.message"));
}
});
3 changes: 2 additions & 1 deletion app/webpacker/packs/admin.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import "controllers";
import "channels";
import "@hotwired/turbo";
import "../js/turbo";
import "../js/hotkeys";
import "../js/mrujs";
import "../js/matomo";
Expand All @@ -17,3 +17,4 @@ import Trix from "trix";
document.addEventListener("trix-file-accept", (event) => {
event.preventDefault();
});

2 changes: 1 addition & 1 deletion app/webpacker/packs/application.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import "controllers";
import "@hotwired/turbo";
import "../js/turbo";
import "../js/hotkeys";
import "../js/mrujs";
import "../js/matomo";
Expand Down
9 changes: 5 additions & 4 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -175,14 +175,15 @@ en:
message_html: "<p>The change you wanted was rejected. Maybe you tried to change something you don't have access to.
<br><h3><a href='/' >Return home</a></h3>
</p>"
stimulus_reflex_error: "We're sorry, but something went wrong.
general_error:
message: "We're sorry, but something went wrong.
This might be a temporary problem, so please try again or reload the page.
This might be a temporary problem, so please try again or reload the page.
We record all errors and may be working on a fix.
We record all errors and may be working on a fix.
If the problem persists or is urgent, please contact us."
If the problem persists or is urgent, please contact us."
stripe:
error_code:
incorrect_number: "The card number is incorrect."
Expand Down
17 changes: 11 additions & 6 deletions spec/system/admin/products_v3/products_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@

require "system_helper"

describe 'As an admin, I can manage products', feature: :admin_style_v3 do
describe 'As an enterprise user, I can manage my products', feature: :admin_style_v3 do
include WebHelper
include AuthenticationHelper
include FileHelper

let(:producer) { create(:supplier_enterprise) }
let(:user) { create(:user, enterprises: [producer]) }

before do
login_as_admin
login_as user
end

it "can see the new product page" do
Expand Down Expand Up @@ -129,8 +132,10 @@
before { create_products 1 }

# create a product with a different supplier
let!(:producer) { create(:supplier_enterprise, name: "Producer 1") }
let!(:product_by_supplier) { create(:simple_product, name: "Apples", supplier: producer) }
let!(:producer1) { create(:supplier_enterprise, name: "Producer 1") }
let!(:product_by_supplier) { create(:simple_product, name: "Apples", supplier: producer1) }

before { user.enterprise_roles.create(enterprise: producer1) }

it "can search for and update a product" do
visit admin_products_url
Expand Down Expand Up @@ -173,7 +178,7 @@
search_by_category "Category 1"

# expect(page).to have_content "1 product found for your search criteria."
expect(page).to have_select "category_id", selected: "Category 1"
expect(page).to have_select "category_id", selected: "Category 1" # fails in dev but not CI
expect_products_count_to_be 1
expect(page).to have_field "Name", with: product_by_category.name
end
Expand Down Expand Up @@ -974,7 +979,7 @@

def create_products(amount)
amount.times do |i|
create(:simple_product, name: "product #{i}")
create(:simple_product, name: "product #{i}", supplier: producer)
end
end

Expand Down

0 comments on commit 4ff8326

Please sign in to comment.