From 02ba8c1bf592c4274ff4a73ca0737bbad289151b Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 13 Feb 2023 12:18:05 +1100 Subject: [PATCH] Remove side-effect in JS specs via global var The code used the global BulkProducts which was shared amongst a group of specs. Some were resetting the `products` attribute, others weren't and the product object of one spec was leaking into the next. One spec was also referencing a wrong attribute and must have passed accidentally. --- .../admin/bulk_product_update_spec.js.coffee | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/spec/javascripts/unit/admin/bulk_product_update_spec.js.coffee b/spec/javascripts/unit/admin/bulk_product_update_spec.js.coffee index de62688a9d..00ee9c2b58 100644 --- a/spec/javascripts/unit/admin/bulk_product_update_spec.js.coffee +++ b/spec/javascripts/unit/admin/bulk_product_update_spec.js.coffee @@ -589,16 +589,14 @@ describe "AdminProductEditCtrl", -> expect($scope.packVariant).toHaveBeenCalledWith(testProduct, testVariant) describe "packing variants", -> - testProduct = {id: 123} - beforeEach -> - BulkProducts.products = [testProduct] window.bigDecimal = jasmine.createSpyObj "bigDecimal", ["multiply"] window.bigDecimal.multiply.and.callFake (a, b, c) -> (a * b).toFixed(c) it "extracts unit_value and unit_description from unit_value_with_description", -> testProduct = {id: 123, variant_unit_scale: 1.0} testVariant = {unit_value_with_description: "250.5 (bottle)"} + BulkProducts.products = [testProduct] $scope.products = [testProduct] $scope.packVariant(testProduct, testVariant) expect(testVariant).toEqual @@ -609,6 +607,7 @@ describe "AdminProductEditCtrl", -> it "extracts into unit_value when only a number is provided", -> testProduct = {id: 123, variant_unit_scale: 1.0} testVariant = {unit_value_with_description: "250.5"} + BulkProducts.products = [testProduct] $scope.packVariant(testProduct, testVariant) expect(testVariant).toEqual unit_value: 250.5 @@ -616,7 +615,9 @@ describe "AdminProductEditCtrl", -> unit_value_with_description: "250.5" it "extracts into unit_description when only a string is provided", -> + testProduct = {id: 123} testVariant = {unit_value_with_description: "Medium"} + BulkProducts.products = [testProduct] $scope.packVariant(testProduct, testVariant) expect(testVariant).toEqual unit_value: null @@ -624,7 +625,9 @@ describe "AdminProductEditCtrl", -> unit_value_with_description: "Medium" it "extracts into unit_description when a string starting with a number is provided", -> + testProduct = {id: 123} testVariant = {unit_value_with_description: "1kg"} + BulkProducts.products = [testProduct] $scope.packVariant(testProduct, testVariant) expect(testVariant).toEqual unit_value: null @@ -632,7 +635,9 @@ describe "AdminProductEditCtrl", -> unit_value_with_description: "1kg" it "sets blank values when no value provided", -> + testProduct = {id: 123} testVariant = {unit_value_with_description: ""} + BulkProducts.products = [testProduct] $scope.packVariant(testProduct, testVariant) expect(testVariant).toEqual unit_value: null @@ -640,13 +645,16 @@ describe "AdminProductEditCtrl", -> unit_value_with_description: "" it "sets nothing when the field is undefined", -> + testProduct = {id: 123} testVariant = {} + BulkProducts.products = [testProduct] $scope.packVariant(testProduct, testVariant) expect(testVariant).toEqual {} it "sets zero when the field is zero", -> testProduct = {id: 123, variant_unit_scale: 1.0} testVariant = {unit_value_with_description: "0"} + BulkProducts.products = [testProduct] $scope.packVariant(testProduct, testVariant) expect(testVariant).toEqual unit_value: 0 @@ -676,6 +684,7 @@ describe "AdminProductEditCtrl", -> it "converts unit_value into a float when a comma separated number is provided", -> testProduct = {id: 123, variant_unit_scale: 1.0} testVariant = {unit_value_with_description: "250,5"} + BulkProducts.products = [testProduct] $scope.packVariant(testProduct, testVariant) expect(testVariant).toEqual unit_value: 250.5 @@ -683,8 +692,9 @@ describe "AdminProductEditCtrl", -> unit_value_with_description: "250,5" it "rounds off the unit_value upto 2 decimal places", -> - testProduct = {id: 123, variant_unit_scale: 28.35} + testProduct = {id: 123, variant_unit_scale: 1.0} testVariant = {unit_value_with_description: "1234.567"} + BulkProducts.products = [testProduct] $scope.packVariant(testProduct, testVariant) expect(testVariant).toEqual unit_value: 1234.57