From ccb23cd1865a5145424bc2c3f415d1d0c22f9bf8 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Fri, 20 Nov 2015 09:46:30 +1100 Subject: [PATCH] Do not allow re-adding exchange --- .../services/order_cycle.js.coffee | 6 +++-- .../order_cycles/_add_exchange_form.html.haml | 2 +- spec/features/admin/order_cycles_spec.rb | 2 ++ .../unit/order_cycle_spec.js.coffee | 22 ++++++++++++++----- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee b/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee index 3132c98ef3..2d477b1a70 100644 --- a/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/services/order_cycle.js.coffee @@ -15,10 +15,12 @@ angular.module('admin.orderCycles').factory('OrderCycle', ($resource, $window, $ parseInt(exchange.enterprise_id) for exchange in @exchangesByDirection(direction) novelSupplier: (enterprise) => - @exchangeIds('incoming').indexOf(enterprise.id) == -1 + id = enterprise?.id || parseInt(enterprise) + @exchangeIds('incoming').indexOf(id) == -1 novelDistributor: (enterprise) => - @exchangeIds('outgoing').indexOf(enterprise.id) == -1 + id = enterprise?.id || parseInt(enterprise) + @exchangeIds('outgoing').indexOf(id) == -1 exchangeSelectedVariants: (exchange) -> numActiveVariants = 0 diff --git a/app/views/admin/order_cycles/_add_exchange_form.html.haml b/app/views/admin/order_cycles/_add_exchange_form.html.haml index 4a176e21e0..f9f64ab631 100644 --- a/app/views/admin/order_cycles/_add_exchange_form.html.haml +++ b/app/views/admin/order_cycles/_add_exchange_form.html.haml @@ -3,4 +3,4 @@ {{ enterprise.name }} = "{{ enterprise.issues_summary_#{type} ? '('+enterprise.issues_summary_#{type}+')' : '' }}" -= f.submit "Add #{type}", 'ng-click' => "add#{type.capitalize}($event)", 'ng-disabled' => "!new_#{type}_id" += f.submit "Add #{type}", 'ng-click' => "add#{type.capitalize}($event)", 'ng-disabled' => "!new_#{type}_id || !OrderCycle.novel#{type.capitalize}(new_#{type}_id)" diff --git a/spec/features/admin/order_cycles_spec.rb b/spec/features/admin/order_cycles_spec.rb index fc06bc5a9f..5d9fa5970c 100644 --- a/spec/features/admin/order_cycles_spec.rb +++ b/spec/features/admin/order_cycles_spec.rb @@ -108,6 +108,8 @@ feature %q{ # I should not be able to re-add the supplier page.should_not have_select 'new_supplier_id', with_options: ['My supplier'] + page.should have_button 'Add supplier', disabled: true + page.all("td.supplier_name").map(&:text).should == ['My supplier'] # And I add a supplier fee within("tr.supplier-#{supplier.id}") { click_button 'Add fee' } diff --git a/spec/javascripts/unit/order_cycle_spec.js.coffee b/spec/javascripts/unit/order_cycle_spec.js.coffee index f68d1e6cdf..1784fb4592 100644 --- a/spec/javascripts/unit/order_cycle_spec.js.coffee +++ b/spec/javascripts/unit/order_cycle_spec.js.coffee @@ -489,20 +489,30 @@ describe 'OrderCycle services', -> expect(OrderCycle.exchangeIds('incoming')).toEqual [1, 2] describe "checking for novel enterprises", -> - it "detects novel suppliers", -> - e1 = {id: 1} - e2 = {id: 2} + e1 = {id: 1} + e2 = {id: 2} + + beforeEach -> OrderCycle.order_cycle.incoming_exchanges = [{enterprise_id: 1}] + OrderCycle.order_cycle.outgoing_exchanges = [{enterprise_id: 1}] + + it "detects novel suppliers", -> expect(OrderCycle.novelSupplier(e1)).toBe false expect(OrderCycle.novelSupplier(e2)).toBe true + it "detects novel suppliers with enterprise as string id", -> + expect(OrderCycle.novelSupplier('1')).toBe false + expect(OrderCycle.novelSupplier('2')).toBe true + it "detects novel distributors", -> - e1 = {id: 1} - e2 = {id: 2} - OrderCycle.order_cycle.outgoing_exchanges = [{enterprise_id: 1}] expect(OrderCycle.novelDistributor(e1)).toBe false expect(OrderCycle.novelDistributor(e2)).toBe true + it "detects novel distributors with enterprise as string id", -> + expect(OrderCycle.novelDistributor('1')).toBe false + expect(OrderCycle.novelDistributor('2')).toBe true + + describe 'fetching the direction for an exchange', -> it 'returns "incoming" for incoming exchanges', -> exchange = {id: 1}