diff --git a/app/assets/javascripts/boards/stores/boards_store.js.es6 b/app/assets/javascripts/boards/stores/boards_store.js.es6 index 9564f48fdbe651dd58fd3027a3933c02e9a05749..e55941cd5bd4776e8e8b0c4cb9cb36193321fc78 100644 --- a/app/assets/javascripts/boards/stores/boards_store.js.es6 +++ b/app/assets/javascripts/boards/stores/boards_store.js.es6 @@ -71,8 +71,8 @@ welcomeIsHidden () { return $.cookie('issue_board_welcome_hidden') === 'true'; }, - removeList (id) { - const list = this.findList('id', id, 'blank'); + removeList (id, type = 'blank') { + const list = this.findList('id', id, type); if (!list) return; @@ -107,6 +107,8 @@ list.removeIssue(issue); } issue.removeLabels(listLabels); + } else { + listFrom.removeIssue(issue); } }, findList (key, val, type = 'label') { diff --git a/app/assets/javascripts/boards/test_utils/simulate_drag.js b/app/assets/javascripts/boards/test_utils/simulate_drag.js index 8c5196e7719224f31abef1bf8a0b2aa7528bb166..75f8b73019555ee8af9ba3a5e8e3ddde3f9d2ae8 100755 --- a/app/assets/javascripts/boards/test_utils/simulate_drag.js +++ b/app/assets/javascripts/boards/test_utils/simulate_drag.js @@ -84,6 +84,7 @@ var duration = options.duration || 1000; simulateEvent(fromEl, 'mousedown', {button: 0}); options.ontap && options.ontap(); + window.SIMULATE_DRAG_ACTIVE = 1; var dragInterval = setInterval(function loop() { var progress = (new Date().getTime() - startTime) / duration; @@ -100,6 +101,7 @@ options.ondragend && options.ondragend(); simulateEvent(toEl, 'mouseup'); clearInterval(dragInterval); + window.SIMULATE_DRAG_ACTIVE = 0; } }, 100); diff --git a/spec/features/boards/boards_spec.rb b/spec/features/boards/boards_spec.rb index 13bf440cc8f3f0fda103c213fa36161578e4c22e..8c101a251b35d0012a097e8fd2c4e6d436fdaaad 100644 --- a/spec/features/boards/boards_spec.rb +++ b/spec/features/boards/boards_spec.rb @@ -508,6 +508,9 @@ describe 'Issue Boards', feature: true, js: true do def drag_to(list_from_index: 0, card_index: 0, to_index: 0, list_to_index: 0, selector: '.board-list') evaluate_script("simulateDrag({scrollable: document.getElementById('board-app'), from: {el: $('#{selector}').eq(#{list_from_index}).get(0), index: #{card_index}}, to: {el: $('.board-list').eq(#{list_to_index}).get(0), index: #{to_index}}});") - sleep 1 + + Timeout.timeout(Capybara.default_max_wait_time) do + loop until page.evaluate_script('window.SIMULATE_DRAG_ACTIVE').zero? + end end end diff --git a/spec/javascripts/boards/boards_store_spec.js.es6 b/spec/javascripts/boards/boards_store_spec.js.es6 index b7923c85cecdbc386c032a7a66ebcd0bb0fd5fe7..078e4b00023c2574509948a6806eb617b33c70e3 100644 --- a/spec/javascripts/boards/boards_store_spec.js.es6 +++ b/spec/javascripts/boards/boards_store_spec.js.es6 @@ -125,39 +125,35 @@ expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); - gl.issueBoards.BoardsStore.removeList(1); + gl.issueBoards.BoardsStore.removeList(1, 'label'); expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(0); }); it('moves the position of lists', () => { - gl.issueBoards.BoardsStore.addList(listObj); - gl.issueBoards.BoardsStore.addList(listObjDuplicate); + const listOne = gl.issueBoards.BoardsStore.addList(listObj), + listTwo = gl.issueBoards.BoardsStore.addList(listObjDuplicate); expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(2); - gl.issueBoards.BoardsStore.moveList(0, 1); + gl.issueBoards.BoardsStore.moveList(listOne, ['2', '1']); - const list = gl.issueBoards.BoardsStore.findList('id', 1); - expect(list.position).toBe(1); + expect(listOne.position).toBe(1); }); it('moves an issue from one list to another', (done) => { - gl.issueBoards.BoardsStore.addList(listObj); - gl.issueBoards.BoardsStore.addList(listObjDuplicate); + const listOne = gl.issueBoards.BoardsStore.addList(listObj), + listTwo = gl.issueBoards.BoardsStore.addList(listObjDuplicate); expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(2); - const list = gl.issueBoards.BoardsStore.findList('id', 1), - listTwo = gl.issueBoards.BoardsStore.findList('id', 2); - setTimeout(() => { - expect(list.issues.length).toBe(1); + expect(listOne.issues.length).toBe(1); expect(listTwo.issues.length).toBe(1); - gl.issueBoards.BoardsStore.moveIssueToList(1, 2, 1); + gl.issueBoards.BoardsStore.moveIssueToList(listOne, listTwo, listOne.findIssue(1)); - expect(list.issues.length).toBe(0); + expect(listOne.issues.length).toBe(0); expect(listTwo.issues.length).toBe(1); done();