Given /^there is a standard permission test project named "([^\"]*)"$/ do |name| steps %Q{ Given there is 1 project with the following: | Name | #{name} | And the project "#{name}" has 1 issue with: | subject | #{name}issue | And there is a role "Testuser" And the role "Testuser" may have the following rights: | view_own_hourly_rate | | view_hourly_rates | | view_cost_rates | | view_own_time_entries | | view_own_cost_entries | | view_cost_entries | | view_time_entries | And there is 1 User with: | Login | testuser | | Firstname | Test | | Lastname | User | | default rate | 0.01 | And the user "testuser" is a "Testuser" in the project "#{name}" And there is 1 User with: | Login | otheruser | | Firstname | Other | | Lastname | User | | default rate | 0.05 | And the user "otheruser" is a "Testuser" in the project "#{name}" And there is 1 cost type with the following: | name | one | | cost rate | 1.00 | And there is 1 cost type with the following: | name | ten | | cost rate | 10.00 | And the issue "#{name}issue" has 1 time entry with the following: | hours | 1 | | user | testuser | And the issue "#{name}issue" has 1 time entry with the following: | hours | 2 | | user | otheruser | And the issue "#{name}issue" has 1 cost entry with the following: | units | 1 | | user | testuser | | cost type | one | And the issue "#{name}issue" has 1 cost entry with the following: | units | 1 | | user | otheruser | | cost type | ten | } end Given /^I set the filter "([^\"]*)" to "([^\"]*)" with the operator "([^\"]*)"$/ do |filter, value, operator| begin find_by_id("add_filter_select").find("[value='#{filter}']").select_option find("[name='operators[#{filter}]']").find("[value='#{operator}']").select_option find("[name='values[#{filter}][]']").find("[value='#{value}']").select_option rescue Capybara::ElementNotFound # we support both using all-values and all-texts parameters When %{I select "#{filter}" from "add_filter_select"} filter_id = find_by_id("add_filter_select").value When %{I select "#{operator}" from "operators[#{filter_id}]"} When %{I select "#{value}" from "#{filter_id}_arg_1_val"} end end When /^I send the query$/ do find("[id='query-icon-apply-button']").click end Then /^filter "([^\"]*)" should (not )?be visible$/ do |filter, negative| bool = negative ? false : true page.evaluate_script("$('tr_#{filter}').visible()") =~ /^#{bool}$/ end Then /^(?:|I )should( not)? see "([^\"]*)" in columns$/ do |negation, text| columns = "div[@id='group_by_columns']" begin When %{I should#{negation} see "#{text}" within "#{columns}"} rescue Selenium::WebDriver::Error::ObsoleteElementError # Slenium might not find the right DOM element due to a race condition - try again # see: http://groups.google.com/group/ruby-capybara/browse_thread/thread/76c194b92c58ecef When %{I should#{negation} see "#{text}" within "#{columns}"} end end Then /^(?:|I )should( not)? see "([^\"]*)" in rows$/ do |negation, text| rows = "div[@id='group_by_rows']" begin When %{I should#{negation} see "#{text}" within "#{rows}"} rescue Selenium::WebDriver::Error::ObsoleteElementError # Slenium might not find the right DOM element due to a rais condition - try again # see: http://groups.google.com/group/ruby-capybara/browse_thread/thread/76c194b92c58ecef When %{I should#{negation} see "#{text}" within "#{rows}"} end end Given /^I group (rows|columns) by "([^\"]*)"/ do |target, group| When %{I select "#{group}" from "add_group_by_#{target}"} end Given /^I remove "([^\"]*)" from (rows|columns)/ do |group, source| find("span[data-group-by='#{group}']/.group_by_remove").click end