From aaddccfae4764ef0bc5b9c5c8aa2f7a7b21f6bf9 Mon Sep 17 00:00:00 2001 From: Rob H Date: Fri, 1 Aug 2014 14:40:47 +1000 Subject: [PATCH] Injecting producer information into BPE --- .../javascripts/admin/bulk_product_update.js.coffee | 11 +++++------ .../spree/admin/products_controller_decorator.rb | 5 +++-- app/helpers/admin/injection_helper.rb | 4 ++++ app/views/spree/admin/products/bulk_edit.html.haml | 2 +- .../unit/bulk_product_update_spec.js.coffee | 6 ++++-- 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/admin/bulk_product_update.js.coffee b/app/assets/javascripts/admin/bulk_product_update.js.coffee index 01556dec56..f76a1c37cf 100644 --- a/app/assets/javascripts/admin/bulk_product_update.js.coffee +++ b/app/assets/javascripts/admin/bulk_product_update.js.coffee @@ -1,10 +1,12 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", [ - "$scope", "$timeout", "$http", "dataFetcher", "DirtyProducts", "VariantUnitManager", - ($scope, $timeout, $http, dataFetcher, DirtyProducts, VariantUnitManager) -> + "$scope", "$timeout", "$http", "dataFetcher", "DirtyProducts", "VariantUnitManager", "producers", + ($scope, $timeout, $http, dataFetcher, DirtyProducts, VariantUnitManager, producers) -> $scope.updateStatusMessage = text: "" style: {} + $scope.producers = producers + $scope.columns = producer: {name: "Producer", visible: true} name: {name: "Name", visible: true} @@ -43,10 +45,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", [ $scope.spree_api_key_ok = data.hasOwnProperty("success") and data["success"] == "Use of API Authorised" if $scope.spree_api_key_ok $http.defaults.headers.common["X-Spree-Token"] = spree_api_key - dataFetcher("/api/enterprises/managed?template=bulk_index&q[is_primary_producer_eq]=true").then (data) -> - $scope.producers = data - # Need to have producers before we get products so we can match producers to product.producer - $scope.fetchProducts() + $scope.fetchProducts() else if authorise_api_reponse.hasOwnProperty("error") $scope.api_error_msg = authorise_api_reponse("error") else diff --git a/app/controllers/spree/admin/products_controller_decorator.rb b/app/controllers/spree/admin/products_controller_decorator.rb index 1b01d88e4d..c49b0aae97 100644 --- a/app/controllers/spree/admin/products_controller_decorator.rb +++ b/app/controllers/spree/admin/products_controller_decorator.rb @@ -1,5 +1,5 @@ Spree::Admin::ProductsController.class_eval do - before_filter :load_spree_api_key, :only => :bulk_edit + before_filter :load_bpe_data, :only => :bulk_edit alias_method :location_after_save_original, :location_after_save @@ -78,8 +78,9 @@ Spree::Admin::ProductsController.class_eval do private - def load_spree_api_key + def load_bpe_data current_user.generate_spree_api_key! unless spree_current_user.spree_api_key @spree_api_key = spree_current_user.spree_api_key + @producers = Enterprise.managed_by(spree_current_user).is_primary_producer end end diff --git a/app/helpers/admin/injection_helper.rb b/app/helpers/admin/injection_helper.rb index 4bbff9bf79..f6f8e05c6a 100644 --- a/app/helpers/admin/injection_helper.rb +++ b/app/helpers/admin/injection_helper.rb @@ -12,6 +12,10 @@ module Admin admin_inject_json_ams_array "admin.shipping_methods", "shippingMethods", @shipping_methods, Api::Admin::IdNameSerializer end + def admin_inject_producers + admin_inject_json_ams_array "ofn.admin", "producers", @producers, Api::Admin::IdNameSerializer + end + def admin_inject_json_ams(ngModule, name, data, serializer, opts = {}) json = serializer.new(data).to_json render partial: "admin/json/injection_ams", locals: {ngModule: ngModule, name: name, json: json} diff --git a/app/views/spree/admin/products/bulk_edit.html.haml b/app/views/spree/admin/products/bulk_edit.html.haml index 99a5a9be02..d3ce04e12a 100644 --- a/app/views/spree/admin/products/bulk_edit.html.haml +++ b/app/views/spree/admin/products/bulk_edit.html.haml @@ -12,7 +12,7 @@ %div#new_product(data-hook) - +=admin_inject_producers %div{ 'ng-app' => 'ofn.admin', 'ng-controller' => 'AdminProductEditCtrl', 'ng-init' => "initialise('#{@spree_api_key}');loading=true;" } %div{ 'ng-show' => '!spree_api_key_ok' } {{ api_error_msg }} diff --git a/spec/javascripts/unit/bulk_product_update_spec.js.coffee b/spec/javascripts/unit/bulk_product_update_spec.js.coffee index 50370829d6..ee852893d2 100644 --- a/spec/javascripts/unit/bulk_product_update_spec.js.coffee +++ b/spec/javascripts/unit/bulk_product_update_spec.js.coffee @@ -237,6 +237,10 @@ describe "AdminProductEditCtrl", -> beforeEach -> module "ofn.admin" + module ($provide)-> + $provide.value "producers", [] + null + beforeEach inject((_$controller_, _$timeout_, $rootScope, _$httpBackend_, _DirtyProducts_) -> $scope = $rootScope.$new() $ctrl = _$controller_ @@ -250,11 +254,9 @@ describe "AdminProductEditCtrl", -> describe "loading data upon initialisation", -> it "gets a list of producers and then resets products with a list of data", -> $httpBackend.expectGET("/api/users/authorise_api?token=api_key").respond success: "Use of API Authorised" - $httpBackend.expectGET("/api/enterprises/managed?template=bulk_index&q[is_primary_producer_eq]=true").respond "list of producers" spyOn($scope, "fetchProducts").andReturn "nothing" $scope.initialise "api_key" $httpBackend.flush() - expect($scope.producers).toEqual "list of producers" expect($scope.fetchProducts.calls.length).toEqual 1 expect($scope.spree_api_key_ok).toEqual true