diff --git a/app/controllers/spree/admin/adjustments_controller.rb b/app/controllers/spree/admin/adjustments_controller.rb index f4fccde7ca..d5729a3477 100644 --- a/app/controllers/spree/admin/adjustments_controller.rb +++ b/app/controllers/spree/admin/adjustments_controller.rb @@ -18,7 +18,12 @@ module Spree end def collection - parent.all_adjustments.eligible + order_adjustments = parent.adjustments.where.not(originator_type: 'EnterpriseFee') + admin_adjustments = parent.adjustments.admin + payment_fees = parent.all_adjustments.payment_fee.eligible + shipping_fees = parent.all_adjustments.shipping + + order_adjustments.or(admin_adjustments) | payment_fees.or(shipping_fees) end def find_resource diff --git a/spec/controllers/spree/admin/adjustments_controller_spec.rb b/spec/controllers/spree/admin/adjustments_controller_spec.rb index 8dafb83493..4b9a7eaddb 100644 --- a/spec/controllers/spree/admin/adjustments_controller_spec.rb +++ b/spec/controllers/spree/admin/adjustments_controller_spec.rb @@ -9,20 +9,37 @@ module Spree before { controller_login_as_admin } describe "index" do - let!(:order) { create(:order) } + let!(:order) { create(:completed_order_with_totals) } let!(:adjustment1) { - create(:adjustment, originator_type: "Spree::ShippingMethod", order: order) + create(:adjustment, originator_type: "Spree::ShippingMethod", order: order, + adjustable: order.shipment) } let!(:adjustment2) { + create(:adjustment, originator_type: "Spree::PaymentMethod", eligible: true, order: order) + } + let!(:adjustment3) { create(:adjustment, originator_type: "Spree::PaymentMethod", eligible: false, order: order) } - let!(:adjustment3) { create(:adjustment, originator_type: "EnterpriseFee", order: order) } + let!(:adjustment4) { create(:adjustment, originator_type: "EnterpriseFee", order: order) } + let!(:adjustment5) { create(:adjustment, originator: nil, adjustable: order, order: order) } - it "loads all eligible adjustments" do + it "displays eligible adjustments" do spree_get :index, order_id: order.number - expect(assigns(:collection)).to include adjustment1, adjustment3 - expect(assigns(:collection)).to_not include adjustment2 + expect(assigns(:collection)).to include adjustment1, adjustment2 + expect(assigns(:collection)).to_not include adjustment3 + end + + it "displays admin adjustments" do + spree_get :index, order_id: order.number + + expect(assigns(:collection)).to include adjustment5 + end + + it "does not display enterprise fee adjustments" do + spree_get :index, order_id: order.number + + expect(assigns(:collection)).to_not include adjustment4 end end