mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-12 03:50:22 +00:00
WIP: BOM Refactor, delete line_items using ngResource, updating data requests in line_items_controller
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
describe "AdminOrderMgmtCtrl", ->
|
||||
describe "LineItemsCtrl", ->
|
||||
ctrl = scope = httpBackend = VariantUnitManager = Enterprises = Orders = LineItems = OrderCycles = null
|
||||
supplier = distributor = orderCycle = null
|
||||
|
||||
@@ -26,11 +26,11 @@ describe "AdminOrderMgmtCtrl", ->
|
||||
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("/admin/orders.json?q%5Bcompleted_at_gt%5D=SomeDate&q%5Bcompleted_at_lt%5D=SomeDate&q%5Bcompleted_at_not_null%5D=true&q%5Bstate_not_eq%5D=canceled").respond [order]
|
||||
httpBackend.expectGET("/admin/enterprises/for_line_items.json?q%5Bsells_in%5D%5B%5D=own&q%5Bsells_in%5D%5B%5D=any&serializer=basic").respond [distributor]
|
||||
httpBackend.expectGET("/admin/order_cycles.json?as=distributor&q%5Borders_close_at_gt%5D=SomeDate&serializer=basic").respond [orderCycle]
|
||||
httpBackend.expectGET("/admin/line_items.json?q%5Bcompleted_at_gt%5D=SomeDate&q%5Bcompleted_at_lt%5D=SomeDate&q%5Bcompleted_at_not_null%5D=true&q%5Bstate_not_eq%5D=canceled").respond [lineItem]
|
||||
httpBackend.expectGET("/admin/enterprises/for_line_items.json?q%5Bis_primary_producer_eq%5D=true&serializer=basic").respond [supplier]
|
||||
httpBackend.expectGET("/admin/orders.json?q%5Bcompleted_at_not_null%5D=true&q%5Bcreated_at_gt%5D=SomeDate&q%5Bcreated_at_lt%5D=SomeDate&q%5Bstate_not_eq%5D=canceled").respond [order]
|
||||
httpBackend.expectGET("/admin/enterprises/for_line_items.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/line_items.json?q%5Border%5D%5Bcompleted_at_not_null%5D=true&q%5Border%5D%5Bcreated_at_gt%5D=SomeDate&q%5Border%5D%5Bcreated_at_lt%5D=SomeDate&q%5Border%5D%5Bstate_not_eq%5D=canceled").respond [lineItem]
|
||||
httpBackend.expectGET("/admin/enterprises/for_line_items.json?ams_prefix=basic&q%5Bis_primary_producer_eq%5D=true").respond [supplier]
|
||||
|
||||
ctrl "LineItemsCtrl", {$scope: scope, Enterprises: Enterprises, Orders: Orders, LineItems: LineItems, OrderCycles: OrderCycles}
|
||||
httpBackend.flush()
|
||||
@@ -67,23 +67,31 @@ describe "AdminOrderMgmtCtrl", ->
|
||||
describe "deleting a line item", ->
|
||||
order = line_item1 = line_item2 = null
|
||||
|
||||
beforeEach ->
|
||||
beforeEach inject((LineItemResource) ->
|
||||
spyOn(window,"confirm").andReturn true
|
||||
order = { number: "R12345678", line_items: [] }
|
||||
line_item1 = { id: 1, order: order }
|
||||
line_item2 = { id: 2, order: order }
|
||||
order.line_items = [ line_item1, line_item2 ]
|
||||
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 ]
|
||||
)
|
||||
|
||||
it "sends a delete request via the API", ->
|
||||
httpBackend.expectDELETE("/api/orders/#{line_item1.order.number}/line_items/#{line_item1.id}").respond "nothing"
|
||||
scope.deleteLineItem line_item1
|
||||
httpBackend.flush()
|
||||
describe "where the request is successful", ->
|
||||
beforeEach ->
|
||||
httpBackend.expectDELETE("/admin/orders/R12345678/line_items/1.json").respond "nothing"
|
||||
scope.deleteLineItem line_item1
|
||||
httpBackend.flush()
|
||||
|
||||
it "does not remove line_item from the line_items array when request is not successful", ->
|
||||
httpBackend.expectDELETE("/api/orders/#{line_item1.order.number}/line_items/#{line_item1.id}").respond 404, "NO CONTENT"
|
||||
scope.deleteLineItem line_item1
|
||||
httpBackend.flush()
|
||||
expect(order.line_items).toEqual [line_item1, line_item2]
|
||||
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/orders/R12345678/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
|
||||
|
||||
@@ -34,8 +34,6 @@ describe "LineItems service", ->
|
||||
|
||||
|
||||
describe "#save", ->
|
||||
result = null
|
||||
|
||||
describe "success", ->
|
||||
lineItem = null
|
||||
resolved = false
|
||||
@@ -105,3 +103,53 @@ describe "LineItems service", ->
|
||||
it "resets the specified value according to the pristine record", ->
|
||||
LineItems.resetAttribute(lineItem, "price")
|
||||
expect(lineItem.price).toEqual 12
|
||||
|
||||
describe "#delete", ->
|
||||
describe "success", ->
|
||||
callback = jasmine.createSpy("callback")
|
||||
lineItem = null
|
||||
resolved = rejected = false
|
||||
|
||||
beforeEach ->
|
||||
lineItem = new LineItemResource({ id: 15, order: { number: '12345678'} })
|
||||
LineItems.pristineByID[15] = lineItem
|
||||
LineItems.lineItemsByID[15] = lineItem
|
||||
$httpBackend.expectDELETE('/admin/orders/12345678/line_items/15.json').respond 200, { id: 15, name: 'LineItem 1'}
|
||||
LineItems.delete(lineItem, callback).then( -> resolved = true).catch( -> rejected = true)
|
||||
$httpBackend.flush()
|
||||
|
||||
it "updates the pristine copy of the lineItem", ->
|
||||
expect(LineItems.pristineByID[15]).toBeUndefined()
|
||||
expect(LineItems.lineItemsByID[15]).toBeUndefined()
|
||||
|
||||
it "runs the callback", ->
|
||||
expect(callback).toHaveBeenCalled()
|
||||
|
||||
it "resolves the promise", ->
|
||||
expect(resolved).toBe(true)
|
||||
expect(rejected).toBe(false)
|
||||
|
||||
|
||||
describe "failure", ->
|
||||
callback = jasmine.createSpy("callback")
|
||||
lineItem = null
|
||||
resolved = rejected = false
|
||||
|
||||
beforeEach ->
|
||||
lineItem = new LineItemResource({ id: 15, order: { number: '12345678'} })
|
||||
LineItems.pristineByID[15] = lineItem
|
||||
LineItems.lineItemsByID[15] = lineItem
|
||||
$httpBackend.expectDELETE('/admin/orders/12345678/line_items/15.json').respond 422, { error: 'obj' }
|
||||
LineItems.delete(lineItem, callback).then( -> resolved = true).catch( -> rejected = true)
|
||||
$httpBackend.flush()
|
||||
|
||||
it "does not update the pristine copy of the lineItem", ->
|
||||
expect(LineItems.pristineByID[15]).toBeDefined()
|
||||
expect(LineItems.lineItemsByID[15]).toBeDefined()
|
||||
|
||||
it "does not run the callback", ->
|
||||
expect(callback).not.toHaveBeenCalled()
|
||||
|
||||
it "rejects the promise", ->
|
||||
expect(resolved).toBe(false)
|
||||
expect(rejected).toBe(true)
|
||||
|
||||
Reference in New Issue
Block a user