summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/assets/javascripts/test_utils/simulate_drag.js36
-rw-r--r--spec/features/boards/issue_ordering_spec.rb30
2 files changed, 39 insertions, 27 deletions
diff --git a/app/assets/javascripts/test_utils/simulate_drag.js b/app/assets/javascripts/test_utils/simulate_drag.js
index b49f8310c2a..d48f2404fa5 100644
--- a/app/assets/javascripts/test_utils/simulate_drag.js
+++ b/app/assets/javascripts/test_utils/simulate_drag.js
@@ -43,7 +43,14 @@
return event;
}
- function getTraget(target) {
+ function isLast(target) {
+ var el = typeof target.el === 'string' ? document.getElementById(target.el.substr(1)) : target.el;
+ var children = el.children;
+
+ return children.length - 1 === target.index;
+ }
+
+ function getTarget(target) {
var el = typeof target.el === 'string' ? document.getElementById(target.el.substr(1)) : target.el;
var children = el.children;
@@ -55,13 +62,6 @@
);
}
- function isLast(target) {
- var el = typeof target.el === 'string' ? document.getElementById(target.el.substr(1)) : target.el;
- var children = el.children;
-
- return children.length - 1 === target.index;
- }
-
function getRect(el) {
var rect = el.getBoundingClientRect();
var width = rect.right - rect.left;
@@ -82,12 +82,22 @@
function simulateDrag(options, callback) {
options.to.el = options.to.el || options.from.el;
- var fromEl = getTraget(options.from);
- var toEl = getTraget(options.to);
+ var fromEl = getTarget(options.from);
+ var toEl = getTarget(options.to);
+ var firstEl = getTarget({
+ el: options.to.el,
+ index: 'first'
+ });
+ var lastEl = getTarget({
+ el: options.to.el,
+ index: 'last'
+ });
var scrollable = options.scrollable;
var fromRect = getRect(fromEl);
var toRect = getRect(toEl);
+ var firstRect = getRect(firstEl);
+ var lastRect = getRect(lastEl);
var startTime = new Date().getTime();
var duration = options.duration || 1000;
@@ -95,8 +105,10 @@
options.ontap && options.ontap();
window.SIMULATE_DRAG_ACTIVE = 1;
- if (isLast(options.to)) {
- toRect.cy += 100;
+ if (options.to.index === 0) {
+ toRect.cy = firstRect.y;
+ } else if (isLast(options.to)) {
+ toRect.cy = lastRect.y + lastRect.h + 50;
}
var dragInterval = setInterval(function loop() {
diff --git a/spec/features/boards/issue_ordering_spec.rb b/spec/features/boards/issue_ordering_spec.rb
index 5b11ac467b6..047de40ef9e 100644
--- a/spec/features/boards/issue_ordering_spec.rb
+++ b/spec/features/boards/issue_ordering_spec.rb
@@ -9,9 +9,9 @@ describe 'Issue Boards', :feature, :js do
let(:user) { create(:user) }
let(:label) { create(:label, project: project) }
let!(:list1) { create(:list, board: board, label: label, position: 0) }
- let!(:issue1) { create(:labeled_issue, project: project, labels: [label]) }
- let!(:issue2) { create(:labeled_issue, project: project, labels: [label]) }
- let!(:issue3) { create(:labeled_issue, project: project, labels: [label]) }
+ let!(:issue1) { create(:labeled_issue, project: project, title: 'testing 1', labels: [label], relative_position: 3.0) }
+ let!(:issue2) { create(:labeled_issue, project: project, title: 'testing 2', labels: [label], relative_position: 2.0) }
+ let!(:issue3) { create(:labeled_issue, project: project, title: 'testing 3', labels: [label], relative_position: 1.0) }
before do
project.team << [user, :master]
@@ -32,7 +32,7 @@ describe 'Issue Boards', :feature, :js do
wait_for_vue_resource
- expect(first('.card')).to have_content(issue2.iid)
+ expect(first('.card')).to have_content(issue2.title)
end
it 'moves from middle to bottom' do
@@ -40,7 +40,7 @@ describe 'Issue Boards', :feature, :js do
wait_for_vue_resource
- expect(all('.card').last).to have_content(issue2.iid)
+ expect(all('.card').last).to have_content(issue2.title)
end
it 'moves from top to bottom' do
@@ -48,7 +48,7 @@ describe 'Issue Boards', :feature, :js do
wait_for_vue_resource
- expect(all('.card').last).to have_content(issue3.iid)
+ expect(all('.card').last).to have_content(issue3.title)
end
it 'moves from bottom to top' do
@@ -56,7 +56,7 @@ describe 'Issue Boards', :feature, :js do
wait_for_vue_resource
- expect(first('.card')).to have_content(issue1.iid)
+ expect(first('.card')).to have_content(issue1.title)
end
it 'moves from top to middle' do
@@ -64,7 +64,7 @@ describe 'Issue Boards', :feature, :js do
wait_for_vue_resource
- expect(first('.card')).to have_content(issue2.iid)
+ expect(first('.card')).to have_content(issue2.title)
end
it 'moves from bottom to middle' do
@@ -72,16 +72,16 @@ describe 'Issue Boards', :feature, :js do
wait_for_vue_resource
- expect(all('.card').last).to have_content(issue2.iid)
+ expect(all('.card').last).to have_content(issue2.title)
end
end
context 'ordering when changing list' do
let(:label2) { create(:label, project: project) }
let!(:list2) { create(:list, board: board, label: label2, position: 1) }
- let!(:issue4) { create(:labeled_issue, project: project, labels: [label2]) }
- let!(:issue5) { create(:labeled_issue, project: project, labels: [label2]) }
- let!(:issue6) { create(:labeled_issue, project: project, labels: [label2]) }
+ let!(:issue4) { create(:labeled_issue, project: project, title: 'testing 1', labels: [label2], relative_position: 3.0) }
+ let!(:issue5) { create(:labeled_issue, project: project, title: 'testing 2', labels: [label2], relative_position: 2.0) }
+ let!(:issue6) { create(:labeled_issue, project: project, title: 'testing 3', labels: [label2], relative_position: 1.0) }
before do
visit namespace_project_board_path(project.namespace, project, board)
@@ -99,7 +99,7 @@ describe 'Issue Boards', :feature, :js do
expect(all('.board')[1]).to have_selector('.card', count: 4)
page.within(all('.board')[1]) do
- expect(first('.card')).to have_content(issue3.iid)
+ expect(first('.card')).to have_content(issue3.title)
end
end
@@ -112,7 +112,7 @@ describe 'Issue Boards', :feature, :js do
expect(all('.board')[1]).to have_selector('.card', count: 4)
page.within(all('.board')[1]) do
- expect(all('.card').last).to have_content(issue3.iid)
+ expect(all('.card').last).to have_content(issue3.title)
end
end
@@ -125,7 +125,7 @@ describe 'Issue Boards', :feature, :js do
expect(all('.board')[1]).to have_selector('.card', count: 4)
page.within(all('.board')[1]) do
- expect(all('.card')[1]).to have_content(issue3.iid)
+ expect(all('.card')[1]).to have_content(issue3.title)
end
end
end