diff --git a/app/assets/javascripts/admin/order_cycle.js.erb.coffee b/app/assets/javascripts/admin/order_cycle.js.erb.coffee index 9c841e3ed0..0d73a9827d 100644 --- a/app/assets/javascripts/admin/order_cycle.js.erb.coffee +++ b/app/assets/javascripts/admin/order_cycle.js.erb.coffee @@ -2,6 +2,7 @@ app = angular.module('order_cycle', ['ngResource']) app.controller 'AdminCreateOrderCycleCtrl', ($scope, OrderCycle, Enterprise) -> $scope.enterprises = Enterprise.index() + $scope.supplied_products = Enterprise.supplied_products $scope.order_cycle = OrderCycle.order_cycle @@ -29,6 +30,7 @@ app.controller 'AdminCreateOrderCycleCtrl', ($scope, OrderCycle, Enterprise) -> app.controller 'AdminEditOrderCycleCtrl', ($scope, $location, OrderCycle, Enterprise) -> $scope.enterprises = Enterprise.index() + $scope.supplied_products = Enterprise.supplied_products order_cycle_id = $location.absUrl().match(/\/admin\/order_cycles\/(\d+)/)[1] $scope.order_cycle = OrderCycle.load(order_cycle_id) @@ -141,6 +143,7 @@ app.factory 'Enterprise', ($resource) -> { Enterprise: Enterprise enterprises: {} + supplied_products: [] index: -> service = this @@ -149,6 +152,9 @@ app.factory 'Enterprise', ($resource) -> for enterprise in data service.enterprises[enterprise.id] = enterprise + for product in enterprise.supplied_products + service.supplied_products.push(product) + this.enterprises totalVariants: (enterprise) -> diff --git a/app/views/admin/order_cycles/_form.html.haml b/app/views/admin/order_cycles/_form.html.haml index 5993153333..bc06d2a172 100644 --- a/app/views/admin/order_cycles/_form.html.haml +++ b/app/views/admin/order_cycles/_form.html.haml @@ -58,3 +58,4 @@ %pre order_cycle = {{ order_cycle | json }} %pre enterprises = {{ enterprises | json }} +%pre supplied_products = {{ supplied_products | json }} diff --git a/spec/javascripts/unit/order_cycle_spec.js.coffee b/spec/javascripts/unit/order_cycle_spec.js.coffee index 626e8aa269..4160d718f7 100644 --- a/spec/javascripts/unit/order_cycle_spec.js.coffee +++ b/spec/javascripts/unit/order_cycle_spec.js.coffee @@ -20,6 +20,7 @@ describe 'OrderCycle controllers', -> create: jasmine.createSpy('create') Enterprise = index: jasmine.createSpy('index').andReturn('enterprises list') + supplied_products: 'supplied products' totalVariants: jasmine.createSpy('totalVariants').andReturn('variants total') module('order_cycle') @@ -27,9 +28,10 @@ describe 'OrderCycle controllers', -> ctrl = $controller 'AdminCreateOrderCycleCtrl', {$scope: scope, OrderCycle: OrderCycle, Enterprise: Enterprise} - it 'Loads enterprises', -> + it 'Loads enterprises and supplied products', -> expect(Enterprise.index).toHaveBeenCalled() expect(scope.enterprises).toEqual('enterprises list') + expect(scope.supplied_products).toEqual('supplied products') it 'Loads order cycles', -> expect(scope.order_cycle).toEqual('my order cycle') @@ -87,15 +89,17 @@ describe 'OrderCycle controllers', -> update: jasmine.createSpy('update') Enterprise = index: jasmine.createSpy('index').andReturn('enterprises list') + supplied_products: 'supplied products' totalVariants: jasmine.createSpy('totalVariants').andReturn('variants total') module('order_cycle') inject ($controller) -> ctrl = $controller 'AdminEditOrderCycleCtrl', {$scope: scope, $location: location, OrderCycle: OrderCycle, Enterprise: Enterprise} - it 'Loads enterprises', -> + it 'Loads enterprises and supplied products', -> expect(Enterprise.index).toHaveBeenCalled() expect(scope.enterprises).toEqual('enterprises list') + expect(scope.supplied_products).toEqual('supplied products') it 'Loads order cycles', -> expect(OrderCycle.load).toHaveBeenCalledWith('27') @@ -141,18 +145,23 @@ describe 'OrderCycle services', -> Enterprise = $injector.get('Enterprise') $httpBackend = _$httpBackend_ $httpBackend.whenGET('/admin/enterprises.json').respond [ - {id: 1, name: 'One'} - {id: 2, name: 'Two'} - {id: 3, name: 'Three'} + {id: 1, name: 'One', supplied_products: [1, 2]} + {id: 2, name: 'Two', supplied_products: [3, 4]} + {id: 3, name: 'Three', supplied_products: [5, 6]} ] it 'loads enterprises as a hash', -> enterprises = Enterprise.index() $httpBackend.flush() expect(enterprises).toEqual - 1: new Enterprise.Enterprise({id: 1, name: 'One'}) - 2: new Enterprise.Enterprise({id: 2, name: 'Two'}) - 3: new Enterprise.Enterprise({id: 3, name: 'Three'}) + 1: new Enterprise.Enterprise({id: 1, name: 'One', supplied_products: [1, 2]}) + 2: new Enterprise.Enterprise({id: 2, name: 'Two', supplied_products: [3, 4]}) + 3: new Enterprise.Enterprise({id: 3, name: 'Three', supplied_products: [5, 6]}) + + it 'collates all supplied products', -> + enterprises = Enterprise.index() + $httpBackend.flush() + expect(Enterprise.supplied_products).toEqual [1, 2, 3, 4, 5, 6] it 'counts total variants supplied by an enterprise', -> enterprise =