diaspora/features/step_definitions/aspects_steps.rb
Jonne Haß a2d894cb39 Improve stability for manages_aspects.feature:79
page.execute_scripts looks to be asynchronous, .synced is already set
by default, so the previous expectation would be fulfilled before
the script got to run, running into the page reload in the next step
which then aborts or hasen't seen the to be triggered request yet.

The fix is to use Capybaras drag_to instead
2015-06-24 04:01:15 +02:00

124 lines
3.9 KiB
Ruby

module AspectCukeHelpers
def click_aspect_dropdown
find('.aspect_dropdown .dropdown-toggle').click
end
def toggle_aspect(a_name)
a_id = @me.aspects.where(name: a_name).pluck(:id).first
aspect_css = ".aspect_dropdown li[data-aspect_id='#{a_id}']"
expect(page).to have_selector(aspect_css)
find(aspect_css).click
end
def toggle_aspect_via_ui(aspect_name)
aspects_dropdown = find(".aspect_membership_dropdown .dropdown-toggle", match: :first)
aspects_dropdown.click
selected_aspect_count = all(".aspect_membership_dropdown.open .dropdown-menu li.selected").length
aspect = find(".aspect_membership_dropdown.open .dropdown-menu li", text: aspect_name)
aspect_selected = aspect["class"].include? "selected"
aspect.click
aspect.parent.should have_no_css(".loading")
# close dropdown
page.should have_no_css('#profile.loading')
unless selected_aspect_count == 0 or (selected_aspect_count == 1 and aspect_selected )
aspects_dropdown.click
end
aspects_dropdown.should have_no_xpath("..[contains(@class, 'active')]")
end
def aspect_dropdown_visible?
expect(find('.aspect_membership_dropdown.open')).to be_visible
end
end
World(AspectCukeHelpers)
When /^I click on "([^"]*)" aspect edit icon$/ do |aspect_name|
within(".all_aspects") do
li = find('li', text: aspect_name)
li.hover
li.find('.modify_aspect').click
end
end
When /^I select only "([^"]*)" aspect$/ do |aspect_name|
click_link 'My aspects'
within('#aspects_list') do
click_link 'Deselect all'
current_scope.should have_no_css '.selected'
end
step %Q(I select "#{aspect_name}" aspect as well)
end
When /^I select "([^"]*)" aspect as well$/ do |aspect_name|
within('#aspects_list') do
click_link aspect_name
end
step %Q(I should see "#{aspect_name}" aspect selected)
end
When /^I select all aspects$/ do
within('#aspects_list') do
click_link "Select all"
end
end
When /^I add the first person to the aspect$/ do
find(".contact_add-to-aspect", match: :first).tap do |button|
button.click
button.parent.should have_css ".contact_remove-from-aspect"
end
end
When /^I remove the first person from the aspect$/ do
find(".contact_remove-from-aspect", match: :first).tap do |button|
button.click
button.parent.should have_css ".contact_add-to-aspect"
sleep 1 # The expectation above should wait for the request to finsh, but that doesn't work for some reason
end
end
When /^I press the aspect dropdown$/ do
click_aspect_dropdown
end
When /^(.*) in the aspect creation modal$/ do |action|
within("#newAspectModal") do
step action
end
end
When /^I drag "([^"]*)" (up|down)$/ do |aspect_name, direction|
aspect_id = @me.aspects.where(name: aspect_name).first.id
aspect = find(:xpath, "//div[@id='aspect_nav']/ul/a[@data-aspect-id='#{aspect_id}']")
target = direction == "up" ? aspect.all(:xpath, "./preceding-sibling::a").last :
aspect.all(:xpath, "./following-sibling::a").first
aspect.drag_to(target)
expect(page).to have_no_css "#aspect_nav .ui-sortable.syncing"
end
And /^I toggle the aspect "([^"]*)"$/ do |name|
toggle_aspect(name)
end
Then /^I should see "([^"]*)" aspect selected$/ do |aspect_name|
aspect = @me.aspects.where(:name => aspect_name).first
within("#aspects_list") do
current_scope.should have_css "li[data-aspect_id='#{aspect.id}'] .selected"
end
end
Then /^I should see "([^"]*)" aspect unselected$/ do |aspect_name|
aspect = @me.aspects.where(:name => aspect_name).first
within("#aspects_list") do
current_scope.should have_no_css "li[data-aspect_id='#{aspect.id}'] .selected"
end
end
Then /^the aspect dropdown should be visible$/ do
aspect_dropdown_visible?
end
Then /^I should see "([^"]*)" as (\d+). aspect$/ do |aspect_name, position|
expect(find("#aspect_nav a:nth-child(#{position.to_i + 2})")).to have_text aspect_name
end