From 9b5f743fa5d4ec087d41b763478d3cdc3bf4bc6a Mon Sep 17 00:00:00 2001 From: Cillian O'Ruanaidh Date: Wed, 8 Jun 2022 19:36:04 +0100 Subject: [PATCH] Extract out a OrderCycle#simple? method so it can be used in models --- app/helpers/order_cycles_helper.rb | 4 ---- app/models/order_cycle.rb | 4 ++++ app/views/admin/order_cycles/edit.html.haml | 6 +++--- app/views/admin/order_cycles/new.html.haml | 6 +++--- spec/models/order_cycle_spec.rb | 14 ++++++++++++++ 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/app/helpers/order_cycles_helper.rb b/app/helpers/order_cycles_helper.rb index 741613e246..c97e0c1a96 100644 --- a/app/helpers/order_cycles_helper.rb +++ b/app/helpers/order_cycles_helper.rb @@ -56,10 +56,6 @@ module OrderCyclesHelper @simple_index ||= !OpenFoodNetwork::Permissions.new(spree_current_user).can_manage_complex_order_cycles? end - def order_cycles_simple_form - @order_cycles_simple_form ||= @order_cycle.coordinator.sells == 'own' - end - def pickup_time(order_cycle = current_order_cycle) order_cycle.exchanges.to_enterprises(current_distributor).outgoing.first.pickup_time end diff --git a/app/models/order_cycle.rb b/app/models/order_cycle.rb index 26fe34eec7..91c9124a21 100644 --- a/app/models/order_cycle.rb +++ b/app/models/order_cycle.rb @@ -274,6 +274,10 @@ class OrderCycle < ApplicationRecord items.each { |li| scoper.scope(li.variant) } end + def simple? + coordinator.sells == 'own' + end + private def opening? diff --git a/app/views/admin/order_cycles/edit.html.haml b/app/views/admin/order_cycles/edit.html.haml index fdad0e3599..56151db299 100644 --- a/app/views/admin/order_cycles/edit.html.haml +++ b/app/views/admin/order_cycles/edit.html.haml @@ -13,20 +13,20 @@ - content_for :page_title do = t :edit_order_cycle -- ng_controller = order_cycles_simple_form ? 'AdminSimpleEditOrderCycleCtrl' : 'AdminEditOrderCycleCtrl' +- ng_controller = @order_cycle.simple? ? 'AdminSimpleEditOrderCycleCtrl' : 'AdminEditOrderCycleCtrl' = admin_inject_order_cycle_instance = form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => ng_controller, name: 'order_cycle_form'} do |f| %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } %input.red{ type: "button", value: t('.save'), ng: { click: "submit($event, null)", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } - - if order_cycles_simple_form + - if @order_cycle.simple? %input.red{ type: "button", value: t('.save_and_back_to_list'), ng: { click: "submit($event, '#{main_app.admin_order_cycles_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } - else %input.red{ type: "button", value: t('.save_and_next'), ng: { click: "submit($event, '#{main_app.admin_order_cycle_incoming_path(@order_cycle)}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } %input{ type: "button", value: t('.next'), ng: { click: "cancel('#{main_app.admin_order_cycle_incoming_path(@order_cycle)}')", disabled: "order_cycle_form.$dirty" } } %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t('.cancel')}' : '#{t('.back_to_list')}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } - - if order_cycles_simple_form + - if @order_cycle.simple? = render 'simple_form', f: f - else = render 'form', f: f diff --git a/app/views/admin/order_cycles/new.html.haml b/app/views/admin/order_cycles/new.html.haml index e01896ab8c..e40ee808ef 100644 --- a/app/views/admin/order_cycles/new.html.haml +++ b/app/views/admin/order_cycles/new.html.haml @@ -1,18 +1,18 @@ - content_for :page_title do =t('new_order_cycle') -- ng_controller = order_cycles_simple_form ? 'AdminSimpleCreateOrderCycleCtrl' : 'AdminCreateOrderCycleCtrl' +- ng_controller = @order_cycle.simple? ? 'AdminSimpleCreateOrderCycleCtrl' : 'AdminCreateOrderCycleCtrl' = admin_inject_order_cycle_instance = form_for [main_app, :admin, @order_cycle], :url => '', :html => {:class => 'ng order_cycle', 'ng-app' => 'admin.orderCycles', 'ng-controller' => ng_controller, name: 'order_cycle_form'} do |f| %save-bar{ dirty: "order_cycle_form.$dirty", persist: "true" } - - if order_cycles_simple_form + - if @order_cycle.simple? - custom_redirect_path = main_app.admin_order_cycles_path %input.red{ type: "button", value: t('.create'), ng: { click: "submit($event, '#{custom_redirect_path}')", disabled: "!order_cycle_form.$dirty || order_cycle_form.$invalid" } } %input{ type: "button", ng: { value: "order_cycle_form.$dirty ? '#{t('.cancel')}' : '#{t('.back_to_list')}'", click: "cancel('#{main_app.admin_order_cycles_path}')" } } - - if order_cycles_simple_form + - if @order_cycle.simple? = render 'simple_form', f: f - else = render 'form', f: f diff --git a/spec/models/order_cycle_spec.rb b/spec/models/order_cycle_spec.rb index 4ebb79a9a1..27cea63be5 100644 --- a/spec/models/order_cycle_spec.rb +++ b/spec/models/order_cycle_spec.rb @@ -610,6 +610,20 @@ describe OrderCycle do end end + describe "#simple?" do + it "returns true if the coordinator sells their own products i.e. shops" do + order_cycle = build(:simple_order_cycle, coordinator: build(:enterprise, sells: "own")) + + expect(order_cycle).to be_simple + end + + it "returns false if the coordinator can sell other people's products i.e. hubs" do + order_cycle = build(:simple_order_cycle, coordinator: build(:enterprise, sells: "any")) + + expect(order_cycle).not_to be_simple + end + end + def core_exchange_attributes(exchange) exterior_attribute_keys = %w(id order_cycle_id created_at updated_at) exchange.attributes.