Merge pull request #6528 from mprieger/5546-cart-page-last-item-deletion

Fix users removing last item of confirmed order on /cart page
This commit is contained in:
Pau Pérez Fabregat
2021-03-04 17:27:51 +01:00
committed by GitHub
4 changed files with 27 additions and 9 deletions

View File

@@ -1,12 +1,20 @@
Darkswarm.controller "EditBoughtOrderController", ($scope, $resource, Cart) ->
Darkswarm.controller "EditBoughtOrderController", ($scope, $resource, $timeout, Cart, Messages) ->
$scope.showBought = false
$scope.removeEnabled = true
$scope.deleteLineItem = (id) ->
params = {id: id}
success = (response) ->
$(".line-item-" + id).remove()
Cart.removeFinalisedLineItem(id)
fail = (error) ->
console.log error
if Cart.has_one_line_item()
Messages.error(t 'orders_cannot_remove_the_final_item')
$scope.removeEnabled = false
$timeout (->
$scope.removeEnabled = true
), 10000
else
params = {id: id}
success = (response) ->
$(".line-item-" + id).remove()
Cart.removeFinalisedLineItem(id)
fail = (error) ->
console.log error
$resource("/line_items/:id").delete(params, success, fail)
$resource("/line_items/:id").delete(params, success, fail)

View File

@@ -115,6 +115,9 @@ Darkswarm.factory 'Cart', (CurrentOrder, Variants, $timeout, $http, $modal, $roo
@line_items = []
localStorageService.clearAll() # One day this will have to be moar GRANULAR
has_one_line_item: =>
@line_items_finalised.length == 1
removeFinalisedLineItem: (id) =>
@line_items_finalised = @line_items_finalised.filter (item) ->
item.id != id

View File

@@ -28,5 +28,5 @@
= line_item.display_amount_with_adjustments.to_html unless line_item.quantity.nil?
%td.bought-item-delete.text-center
%a{ng: {click: "deleteLineItem(#{line_item.id})"}}
%a{ng: {click: "removeEnabled && deleteLineItem(#{line_item.id})"}}
%i.ofn-i_026-trash

View File

@@ -222,6 +222,13 @@ describe 'Cart service', ->
expect(li.quantity).toEqual 1
expect(li.max_quantity).toEqual 1
describe "when modifying a confirmed order", ->
it "displays flash error when attempting to remove final item", ->
spyOn(RailsFlashLoader, 'loadFlash')
li = {variant: {id: 1}, quantity: 3}
Cart.line_items_finalised = [li]
expect(Cart.has_one_line_item()).toBe(true)
it "pops the queue", ->
Cart.update_enqueued = true
spyOn(Cart, 'scheduleUpdate')