From 5c4a2c2790013e572f54ac56749ff7413dd43f53 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Sat, 28 Mar 2020 21:38:58 +0100 Subject: [PATCH] Update javascript specs --- .../line_items_controller_spec.js.coffee | 60 +++++-------------- .../services/line_items_spec.js.coffee | 19 +++--- 2 files changed, 26 insertions(+), 53 deletions(-) diff --git a/spec/javascripts/unit/admin/line_items/controllers/line_items_controller_spec.js.coffee b/spec/javascripts/unit/admin/line_items/controllers/line_items_controller_spec.js.coffee index 3b04893b34..a1808b5264 100644 --- a/spec/javascripts/unit/admin/line_items/controllers/line_items_controller_spec.js.coffee +++ b/spec/javascripts/unit/admin/line_items/controllers/line_items_controller_spec.js.coffee @@ -13,23 +13,23 @@ describe "LineItemsCtrl", -> compare: (actual, expected) -> { pass: angular.equals(actual, expected) } - beforeEach inject(($controller, $rootScope, $httpBackend, _$timeout_, _VariantUnitManager_, _Enterprises_, _Orders_, _LineItems_, _OrderCycles_) -> + beforeEach inject(($controller, $rootScope, $httpBackend, _$timeout_, _VariantUnitManager_, _Enterprises_, _Orders_, _OrderCycles_) -> scope = $rootScope.$new() ctrl = $controller $timeout = _$timeout_ httpBackend = $httpBackend Enterprises = _Enterprises_ Orders = _Orders_ - LineItems = _LineItems_ OrderCycles = _OrderCycles_ VariantUnitManager = _VariantUnitManager_ - momentMock = jasmine.createSpyObj('moment', ['format', 'startOf', 'endOf', 'subtract', 'add']) + momentMock = jasmine.createSpyObj('moment', ['format', 'startOf', 'endOf', 'subtract', 'add', 'isValid']) spyOn(window,"moment").and.returnValue momentMock momentMock.startOf.and.returnValue momentMock momentMock.endOf.and.returnValue momentMock momentMock.subtract.and.returnValue momentMock momentMock.add.and.returnValue momentMock momentMock.format.and.returnValue "SomeDate" + momentMock.isValid.and.returnValue true supplier = { id: 1, name: "Supplier" } distributor = { id: 5, name: "Distributor" } @@ -37,8 +37,11 @@ describe "LineItemsCtrl", -> order = { id: 9, order_cycle: { id: 4 }, distributor: { id: 5 }, number: "R123456" } lineItem = { id: 7, quantity: 3, order: { id: 9 }, supplier: { id: 1 } } - httpBackend.expectGET("/api/orders.json?q%5Bcompleted_at_gteq%5D=SomeDate&q%5Bcompleted_at_lt%5D=SomeDate&q%5Bcompleted_at_not_null%5D=true&q%5Bstate_not_eq%5D=canceled").respond {orders: [order], pagination: {page: 1, pages: 1, results: 1}} - httpBackend.expectGET("/admin/bulk_line_items.json?q%5Border%5D%5Bcompleted_at_gteq%5D=SomeDate&q%5Border%5D%5Bcompleted_at_lt%5D=SomeDate&q%5Border%5D%5Bcompleted_at_not_null%5D=true&q%5Border%5D%5Bstate_not_eq%5D=canceled").respond [lineItem] + LineItems = + index: jasmine.createSpy('index').and.returnValue(lineItem) + all: [lineItem] + + httpBackend.expectGET("/api/orders.json?q%5Bcompleted_at_gteq%5D=SomeDate&q%5Bcompleted_at_lt%5D=SomeDate&q%5Bcompleted_at_not_null%5D=true&q%5Bdistributor_id_eq%5D=&q%5Border_cycle_id_eq%5D=&q%5Bstate_not_eq%5D=canceled").respond {orders: [order], pagination: {page: 1, pages: 1, results: 1}} httpBackend.expectGET("/admin/enterprises/visible.json?ams_prefix=basic&q%5Bsells_in%5D%5B%5D=own&q%5Bsells_in%5D%5B%5D=any").respond [distributor] httpBackend.expectGET("/admin/order_cycles.json?ams_prefix=basic&as=distributor&q%5Borders_close_at_gt%5D=SomeDate").respond [orderCycle] httpBackend.expectGET("/admin/enterprises/visible.json?ams_prefix=basic&q%5Bis_primary_producer_eq%5D=true").respond [supplier] @@ -52,12 +55,6 @@ describe "LineItemsCtrl", -> it "the RequestMonitor will have a state of loading", -> expect(scope.RequestMonitor.loading).toBe true - it "will not have reset the select filters", -> - expect(scope.distributorFilter).toBeUndefined() - expect(scope.supplierFilter).toBeUndefined() - expect(scope.orderCycleFilter).toBeUndefined() - expect(scope.quickSearch).toBeUndefined() - it "will not have reset the form state to pristine", -> expect(scope.bulk_order_form.$setPristine.calls.count()).toBe 0 @@ -83,49 +80,20 @@ describe "LineItemsCtrl", -> expect(scope.orders).toDeepEqual [ { id: 9, order_cycle: orderCycle, distributor: distributor, number: "R123456" } ] it "gets line_items, with dereferenced orders and suppliers", -> - expect(scope.lineItems).toDeepEqual [ { id: 7, quantity: 3, order: scope.orders[0], supplier: supplier } ] + expect(scope.line_items).toDeepEqual [ { id: 7, quantity: 3, order: scope.orders[0], supplier: supplier } ] it "the RequestMonitor will have a state of loaded", -> expect(scope.RequestMonitor.loading).toBe false it "resets the select filters", -> - expect(scope.distributorFilter).toBe 0 - expect(scope.supplierFilter).toBe 0 - expect(scope.orderCycleFilter).toBe 0 + expect(scope.distributorFilter).toBe '' + expect(scope.supplierFilter).toBe '' + expect(scope.orderCycleFilter).toBe '' expect(scope.quickSearch).toBe = "" it "resets the form state to pristine", -> expect(scope.bulk_order_form.$setPristine.calls.count()).toBe 1 - describe "deleting a line item", -> - order = line_item1 = line_item2 = null - - beforeEach inject((LineItemResource) -> - spyOn(window,"confirm").and.returnValue true - order = { number: "R12345678" } - line_item1 = new LineItemResource({ id: 1, order: order }) - line_item2 = new LineItemResource({ id: 2, order: order }) - scope.lineItems= [ line_item1, line_item2 ] - ) - - describe "where the request is successful", -> - beforeEach -> - httpBackend.expectDELETE("/admin/bulk_line_items/1.json").respond "nothing" - scope.deleteLineItem line_item1 - httpBackend.flush() - - it "removes the deleted item from the line_items array", -> - expect(scope.lineItems).toEqual [line_item2] - - describe "where the request is unsuccessful", -> - beforeEach -> - httpBackend.expectDELETE("/admin/bulk_line_items/1.json").respond 404, "NO CONTENT" - scope.deleteLineItem line_item1 - httpBackend.flush() - - it "does not remove line_item from the line_items array", -> - expect(scope.lineItems).toEqual [line_item1, line_item2] - describe "deleting 'checked' line items", -> line_item1 = line_item2 = line_item3 = line_item4 = null @@ -134,11 +102,11 @@ describe "LineItemsCtrl", -> line_item2 = { name: "line item 2", checked: true } line_item3 = { name: "line item 3", checked: false } line_item4 = { name: "line item 4", checked: true } - scope.lineItems = [ line_item1, line_item2, line_item3, line_item4 ] + scope.line_items = [ line_item1, line_item2, line_item3, line_item4 ] it "calls deletedLineItem for each 'checked' line item", -> spyOn(scope, "deleteLineItem") - scope.deleteLineItems(scope.lineItems) + scope.deleteLineItems(scope.line_items) expect(scope.deleteLineItem).toHaveBeenCalledWith(line_item2) expect(scope.deleteLineItem).toHaveBeenCalledWith(line_item4) expect(scope.deleteLineItem).not.toHaveBeenCalledWith(line_item1) diff --git a/spec/javascripts/unit/admin/line_items/services/line_items_spec.js.coffee b/spec/javascripts/unit/admin/line_items/services/line_items_spec.js.coffee index 7367e06d88..08456b2748 100644 --- a/spec/javascripts/unit/admin/line_items/services/line_items_spec.js.coffee +++ b/spec/javascripts/unit/admin/line_items/services/line_items_spec.js.coffee @@ -1,5 +1,5 @@ describe "LineItems service", -> - LineItems = LineItemResource = lineItems = $httpBackend = null + LineItems = LineItemResource = lineItems = $httpBackend = $rootScope = $timeout = null beforeEach -> module 'admin.lineItems' @@ -15,24 +15,27 @@ describe "LineItems service", -> $httpBackend = _$httpBackend_ describe "#index", -> - result = response = null + result = response = line_item = null beforeEach -> - response = [{ id: 5, name: 'LineItem 1'}] + line_item = { id: 5, name: 'LineItem 1'} + response = { line_items: [line_item] } $httpBackend.expectGET('/admin/bulk_line_items.json').respond 200, response result = LineItems.index() $httpBackend.flush() it "stores returned data in @byID, with ids as keys", -> # LineItemResource returns instances of Resource rather than raw objects - expect(LineItems.byID).toDeepEqual { 5: response[0] } + expect(LineItems.byID).toDeepEqual { 5: response['line_items'][0] } it "stores returned data in @pristineByID, with ids as keys", -> - expect(LineItems.pristineByID).toDeepEqual { 5: response[0] } + expect(LineItems.pristineByID).toDeepEqual { 5: response['line_items'][0] } + + it "stores returned data in @all, as an array", -> + expect(LineItems.all).toDeepEqual [line_item] it "returns an array of line items", -> - expect(result).toDeepEqual response - + expect(result).toDeepEqual [line_item] describe "#save", -> describe "success", -> @@ -115,6 +118,7 @@ describe "LineItems service", -> lineItem = new LineItemResource({ id: 15, order: { number: '12345678'} }) LineItems.pristineByID[15] = lineItem LineItems.byID[15] = lineItem + LineItems.all = [lineItem] $httpBackend.expectDELETE('/admin/bulk_line_items/15.json').respond 200, { id: 15, name: 'LineItem 1'} LineItems.delete(lineItem, callback).then( -> resolved = true).catch( -> rejected = true) $httpBackend.flush() @@ -122,6 +126,7 @@ describe "LineItems service", -> it "updates the pristine copy of the lineItem", -> expect(LineItems.pristineByID[15]).toBeUndefined() expect(LineItems.byID[15]).toBeUndefined() + expect(LineItems.all).toEqual([]) it "runs the callback", -> expect(callback).toHaveBeenCalled()