Sha256: 3e140fb171d1cef3bc92ac9bc561030fbe76ba409aec920650e1df9cdfd9c98f

Contents?: true

Size: 917 Bytes

Versions: 1

Compression:

Stored size: 917 Bytes

Contents

RSpec.describe 'ActiveAdmin::SortableTable', type: :feature do
  let!(:bottom) { Category.create!(name: 'bottom', position: 0) }
  let!(:top) { Category.create!(name: 'top', position: 1) }
  let!(:middle) { Category.create!(name: 'middle', position: 2) }

  before do
    visit admin_categories_path
  end

  it 'reorder elements by dragging vertically', js: true do
    expect(displayed_names).to eq(%w(top middle bottom))

    drag_element(middle, dy: -200)

    expect(displayed_names).to eq(%w(middle top bottom))
    expect(Category.order(:position).map(&:name)).to eq(%w(middle top bottom))
  end

  private

  def displayed_names
    all('.ui-sortable-handle .col-name').map(&:text)
  end

  def drag_element(element, options)
    wait_for_ajax do
      options.reverse_merge! moves: 20
      page.execute_script(%($("#category_#{element.id} .handle").simulate("drag", #{options.to_json} )))
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activeadmin_sortable_table-1.0.0 spec/features/activeadmin_sortable_table_spec.rb