diff --git a/app/helpers/injection_helper.rb b/app/helpers/injection_helper.rb index 17c122f0a7..cd19deaf8d 100644 --- a/app/helpers/injection_helper.rb +++ b/app/helpers/injection_helper.rb @@ -4,7 +4,7 @@ module InjectionHelper include SerializerHelper def inject_enterprises(enterprises = nil) - inject_json_ams( + inject_json_list( "enterprises", enterprises || default_enterprise_query, Api::EnterpriseSerializer, @@ -15,7 +15,7 @@ module InjectionHelper def inject_groups select_only = required_attributes EnterpriseGroup, Api::GroupListSerializer - inject_json_ams( + inject_json_list( "groups", EnterpriseGroup.on_front_page.by_position.select(select_only). includes(enterprises: [:shipping_methods, { address: [:state, :country] }], @@ -26,7 +26,7 @@ module InjectionHelper end def inject_enterprise_shopfront(enterprise) - inject_json_ams( + inject_json( "shopfront", enterprise, Api::EnterpriseShopfrontSerializer @@ -36,7 +36,7 @@ module InjectionHelper def inject_enterprise_shopfront_list select_only = required_attributes Enterprise, Api::EnterpriseShopfrontListSerializer - inject_json_ams( + inject_json_list( "enterprises", Enterprise.activated.visible.select(select_only).includes(address: [:state, :country]).all, Api::EnterpriseShopfrontListSerializer @@ -50,13 +50,13 @@ module InjectionHelper includes(:properties, address: [:state, :country], supplied_products: :properties). all - inject_json_ams "enterprises", - enterprises_and_relatives, - Api::EnterpriseSerializer, enterprise_injection_data + inject_json_list "enterprises", + enterprises_and_relatives, + Api::EnterpriseSerializer, enterprise_injection_data end def inject_group_enterprises - inject_json_ams( + inject_json_list( "enterprises", @group.enterprises.activated.all, Api::EnterpriseSerializer, @@ -65,11 +65,11 @@ module InjectionHelper end def inject_current_hub - inject_json_ams "currentHub", current_distributor, Api::EnterpriseSerializer, enterprise_injection_data + inject_json "currentHub", current_distributor, Api::EnterpriseSerializer, enterprise_injection_data end def inject_current_order - inject_json_ams "currentOrder", current_order, Api::CurrentOrderSerializer, current_distributor: current_distributor, current_order_cycle: current_order_cycle + inject_json "currentOrder", current_order, Api::CurrentOrderSerializer, current_distributor: current_distributor, current_order_cycle: current_order_cycle end def inject_current_order_cycle @@ -79,29 +79,29 @@ module InjectionHelper end def inject_available_shipping_methods - inject_json_ams "shippingMethods", available_shipping_methods, - Api::ShippingMethodSerializer, current_order: current_order + inject_json_list "shippingMethods", available_shipping_methods, + Api::ShippingMethodSerializer, current_order: current_order end def inject_available_payment_methods - inject_json_ams "paymentMethods", available_payment_methods, - Api::PaymentMethodSerializer, current_order: current_order + inject_json_list "paymentMethods", available_payment_methods, + Api::PaymentMethodSerializer, current_order: current_order end def inject_taxons - inject_json_ams "taxons", Spree::Taxon.all.to_a, Api::TaxonSerializer + inject_json_list "taxons", Spree::Taxon.all.to_a, Api::TaxonSerializer end def inject_properties - inject_json_ams "properties", Spree::Property.all.to_a, Api::PropertySerializer + inject_json_list "properties", Spree::Property.all.to_a, Api::PropertySerializer end def inject_currency_config - inject_json_ams "currencyConfig", {}, Api::CurrencyConfigSerializer + inject_json "currencyConfig", {}, Api::CurrencyConfigSerializer end def inject_open_street_map_config - inject_json_ams "openStreetMapConfig", {}, Api::OpenStreetMapConfigSerializer + inject_json "openStreetMapConfig", {}, Api::OpenStreetMapConfigSerializer end def inject_spree_api_key @@ -109,7 +109,7 @@ module InjectionHelper end def inject_available_countries - inject_json_ams "availableCountries", available_countries, Api::CountrySerializer + inject_json_list "availableCountries", available_countries, Api::CountrySerializer end def inject_enterprise_attributes @@ -117,35 +117,37 @@ module InjectionHelper end def inject_orders - inject_json_ams "orders", @orders.all, Api::OrderSerializer + inject_json_list "orders", @orders.all, Api::OrderSerializer end def inject_shops customers = spree_current_user.customers shops = Enterprise.where(id: @orders.pluck(:distributor_id).uniq | customers.pluck(:enterprise_id)) - inject_json_ams "shops", shops.all, Api::ShopForOrdersSerializer + inject_json_list "shops", shops.all, Api::ShopForOrdersSerializer end def inject_saved_credit_cards data = spree_current_user ? spree_current_user.credit_cards.with_payment_profile.all : [] - inject_json_ams "savedCreditCards", data, Api::CreditCardSerializer + inject_json_list "savedCreditCards", data, Api::CreditCardSerializer end def inject_current_user - inject_json_ams "user", spree_current_user, Api::UserSerializer + inject_json "user", spree_current_user, Api::UserSerializer end def inject_rails_flash - inject_json_ams "railsFlash", OpenStruct.new(flash.to_hash), Api::RailsFlashSerializer + inject_json "railsFlash", OpenStruct.new(flash.to_hash), Api::RailsFlashSerializer end - def inject_json_ams(name, data, serializer, opts = {}) - if data.is_a?(Array) - opts = { each_serializer: serializer }.merge(opts) - serializer = ActiveModel::ArraySerializer - end + def inject_json_list(name, data, serializer, opts = {}) + opts = { each_serializer: serializer }.merge(opts) + serializer = ActiveModel::ArraySerializer + inject_json(name, data, serializer, opts) + end + + def inject_json(name, data, serializer, opts = {}) serializer_instance = serializer.new(data, opts) json = serializer_instance.to_json render partial: "json/injection_ams", locals: { name: name, json: json } diff --git a/spec/helpers/injection_helper_spec.rb b/spec/helpers/injection_helper_spec.rb index b502b9b737..f218846cc1 100644 --- a/spec/helpers/injection_helper_spec.rb +++ b/spec/helpers/injection_helper_spec.rb @@ -11,7 +11,7 @@ describe InjectionHelper, type: :helper do let!(:d2o1) { create(:completed_order_with_totals, distributor: distributor2, user_id: user.id) } it "will inject via AMS" do - expect(helper.inject_json_ams("test", [enterprise], Api::IdSerializer)).to match /#{enterprise.id}/ + expect(helper.inject_json_list("test", [enterprise], Api::IdSerializer)).to match /#{enterprise.id}/ end it "injects enterprises" do