Как я могу протестировать JQuery UI, сортируемый с огурцом - PullRequest
12 голосов
/ 28 октября 2010

Я пытаюсь написать тест на огурец / капибару, чтобы изменить порядок элементов и сохранить их обратно. Есть мысли о том, как лучше всего это сделать?

Ответы [ 5 ]

12 голосов
/ 24 августа 2011

Я разработал плагин JQuery для решения этой проблемы, посмотрите jquery.simulate.drag-sortable.js , который включает в себя плагин вместе с набором тестов и примеров.

Надеюсь, вы найдете это полезным!Обратная связь приветствуется.

Мэтт

2 голосов
/ 09 мая 2011

метод drag_to у меня не сработал. Но мне удалось перетащить первый элемент в моем списке на последнюю позицию, включив следующее в мой тест на селен капибары с помощью jquery.simulate.js:

page.execute_script %Q{
  $.getScript("/javascripts/jquery.simulate.js", function(){ 
    distance_between_elements = $('.task:nth-child(2)').offset().top - $('.task:nth-child(1)').offset().top;
    height_of_elements = $('.task:nth-child(1)').height();
    dy = (distance_between_elements * ( $('.task').size() - 1 )) + height_of_elements/2;

    first = $('.task:first');
    first.simulate('drag', {dx:0, dy:dy});
  });
}                 
1 голос
/ 15 ноября 2010

Я использую веб-шаг, подобный этому, и он отлично работает:

When /^I drag "([^"]*)" on top$/ do |name|
  item = Item.find_by_name(name)
  sleep 0.2
  src  = find("#item_id_#{item.id}")
  dest = find("div.title")
  src.drag_to(dest)
end
0 голосов
/ 24 мая 2019

Я следовал решению @ кодера, и оно работает! Единственное, что я изменил в своем коде, - это настраиваемый пользовательский интерфейс с tolerance: 'pointer'.

Ограничения, описанные в ответе @ codener, также не исчезли. (Я использую капибару 2.18.0.) Не требуется третий ряд, чтобы поменять местами первый и второй.

When /^I drag the first table row down$/ do
  element = find('tbody tr:nth-child(1)')
  target = find('tbody tr:nth-child(2)')
  element.drag_to target
end
0 голосов
/ 11 мая 2016

Для меня #drag_to сработало, однако его возможности, похоже, ограничены.

Чтобы переместить строку таблицы, сортируемой по пользовательскому интерфейсу, мне нужно было создать таблицу из трех строк, а затем выполнить этот шаг огурца:

# Super-primitive step
When /^I drag the first table row down$/ do
  element = find('tbody tr:nth-child(1)')
  # drag_to needs to drag the element beyond the actual target to really perform
  # the reordering
  target = find('tbody tr:nth-child(3)')

  element.drag_to target
end

Это поменяет местами первый и второй ряд. Моя интерпретация заключается в том, что Капибара не тянет достаточно далеко, поэтому я поставил ей цель, превышающую мою фактическую цель.

Примечание. Я настроил сортировку пользовательского интерфейса с помощью tolerance: 'pointer '.

...