From 3da2461af599329392e702baee3ad35f5d9452d5 Mon Sep 17 00:00:00 2001 From: Rob H Date: Fri, 4 Jul 2014 14:05:44 +1000 Subject: [PATCH] Require shipping methods to have at least one distributor --- app/models/spree/shipping_method_decorator.rb | 2 ++ app/views/spree/admin/shared/_hubs_sidebar.html.haml | 5 +++-- spec/features/admin/enterprises_spec.rb | 5 +++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/models/spree/shipping_method_decorator.rb b/app/models/spree/shipping_method_decorator.rb index 303ab7b96f..5d7bb89a8f 100644 --- a/app/models/spree/shipping_method_decorator.rb +++ b/app/models/spree/shipping_method_decorator.rb @@ -3,6 +3,8 @@ Spree::ShippingMethod.class_eval do attr_accessible :distributor_ids, :description attr_accessible :require_ship_address + validates :distributors, presence: { message: "^At least one hub must be selected" } + scope :managed_by, lambda { |user| if user.has_spree_role?('admin') scoped diff --git a/app/views/spree/admin/shared/_hubs_sidebar.html.haml b/app/views/spree/admin/shared/_hubs_sidebar.html.haml index 8998e6d593..4fe9b1078a 100644 --- a/app/views/spree/admin/shared/_hubs_sidebar.html.haml +++ b/app/views/spree/admin/shared/_hubs_sidebar.html.haml @@ -1,10 +1,11 @@ - hubs_color = @hubs.count > 0 ? "blue" : "red" +- hubs_color = 'red' if (controller.action_name == 'create' || controller.action_name == 'update') && @object.errors.full_messages.include?("At least one hub must be selected") .sidebar_item.omega.four.columns#hubs .four.columns.alpha.header{ class: "#{hubs_color}" } - %span.four.columns.alpha.centered Distributors + %span.four.columns.alpha.centered Hubs .four.columns.alpha.list{ class: "#{hubs_color}" } - if @hubs.count > 0 - -# = hidden_field_tag "enterprise[hub_ids][]", [] + = f.hidden_field :distributor_ids, :multiple => true, value: nil - @hubs.each do |hub| %a.four.columns.alpha.list-item{ class: "#{cycle('odd','even')}", href: "#{main_app.edit_admin_enterprise_path(hub)}" } %span.three.columns.alpha diff --git a/spec/features/admin/enterprises_spec.rb b/spec/features/admin/enterprises_spec.rb index 50ce2aad7f..e481be4635 100644 --- a/spec/features/admin/enterprises_spec.rb +++ b/spec/features/admin/enterprises_spec.rb @@ -110,16 +110,17 @@ feature %q{ scenario "editing an existing enterprise" do @enterprise = create(:enterprise) + e2 = create(:enterprise) eg1 = create(:enterprise_group, name: 'eg1') eg2 = create(:enterprise_group, name: 'eg2') payment_method = create(:payment_method, distributors: []) - shipping_method = create(:shipping_method, distributors: []) + shipping_method = create(:shipping_method, distributors: [e2]) enterprise_fee = create(:enterprise_fee, enterprise: @enterprise ) login_to_admin_section click_link 'Enterprises' - click_link 'Edit Profile' + all("a", text:'Edit Profile').first.click fill_in 'enterprise_name', :with => 'Eaterprises' fill_in 'enterprise_description', :with => 'Connecting farmers and eaters'