OpenProject is the leading open source project management software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
openproject/features/step_definitions/timelines_when_steps.rb

233 lines
9.5 KiB

#-- copyright
# OpenProject is a project management system.
#
# Copyright (C) 2012-2013 the OpenProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# See doc/COPYRIGHT.rdoc for more details.
#++
When /^I click on the Planning Element with name "(.*?)"$/ do |planning_element_subject|
click_link(planning_element_subject);
end
When /^I click on the Edit Link$/ do
click_link("Update")
end
When /^I click on the Save Link$/ do
click_link("Save")
end
When /^I click on the Trash Link$/ do
click_link("Move to recycle bin")
end
When(/^I hide empty projects for the timeline "([^"]*?)" of the project called "([^"]*?)"$/) do |timeline_name, project_name|
steps %Q{
When I go to the edit page of the timeline "#{timeline_name}" of the project called "#{project_name}"
}
page.should have_selector("#timeline_options_exclude_empty", :visible => false)
page.execute_script("jQuery('#timeline_options_exclude_empty').prop('checked', true)")
page.execute_script("jQuery('#content form').submit()")
end
When(/^I make the planning element "([^"]*?)" vertical for the timeline "([^"]*?)" of the project called "([^"]*?)"$/) do |planning_element_subject, timeline_name, project_name|
steps %Q{
When I go to the edit page of the timeline "#{timeline_name}" of the project called "#{project_name}"
}
planning_element = PlanningElement.find_by_subject(planning_element_subject)
page.should have_selector("#timeline_options_vertical_planning_elements", :visible => false)
page.execute_script("jQuery('#timeline_options_vertical_planning_elements').val('#{planning_element.id}')")
page.execute_script("jQuery('#content form').submit()")
end
When(/^I set the first level grouping criteria to "(.*?)" for the timeline "(.*?)" of the project called "(.*?)"$/) do |grouping_project_name, timeline_name, project_name|
steps %Q{
When I go to the edit page of the timeline "#{timeline_name}" of the project called "#{project_name}"
}
grouping_project = Project.find_by_name(grouping_project_name)
page.should have_selector("#timeline_options_grouping_one_enabled", :visible => false)
page.execute_script("jQuery('#timeline_options_grouping_one_enabled').prop('checked', true)")
page.execute_script("jQuery('#timeline_options_grouping_one_selection').val('#{grouping_project.id}')")
page.execute_script("jQuery('#content form').submit()")
end
When(/^I show only projects which have a planning element which lies between "(.*?)" and "(.*?)" and has the type "(.*?)"$/) do |start_date, due_date, type|
timeline_name = @timeline_name
project_name = @project.name
steps %Q{
When I go to the edit page of the timeline "#{timeline_name}" of the project called "#{project_name}"
}
page.should have_selector("#timeline_options_planning_element_time_types", :visible => false)
planning_element_type = PlanningElementType.find_by_name(type)
page.execute_script("jQuery('#timeline_options_planning_element_time_types').val('#{planning_element_type.id}')")
page.execute_script("jQuery('#timeline_options_planning_element_time_absolute').prop('checked', true)")
page.execute_script("jQuery('#timeline_options_planning_element_time_absolute_one').val('#{start_date}')")
page.execute_script("jQuery('#timeline_options_planning_element_time_absolute_two').val('#{due_date}')")
page.execute_script("jQuery('#content form').submit()")
end
When(/^I set the second level grouping criteria to "(.*?)" for the timeline "(.*?)" of the project called "(.*?)"$/) do |project_type_name, timeline_name, project_name|
steps %Q{
When I go to the edit page of the timeline "#{timeline_name}" of the project called "#{project_name}"
}
project_type = ProjectType.find_by_name(project_type_name)
page.should have_selector("#timeline_options_grouping_two_enabled", :visible => false)
page.execute_script("jQuery('#timeline_options_grouping_two_enabled').prop('checked', true)")
page.execute_script("jQuery('#timeline_options_grouping_two_selection').val('#{project_type.id}')")
page.execute_script("jQuery('#content form').submit()")
end
When(/^I set the first level grouping criteria to:$/) do |table|
timeline_name = @timeline_name
project_name = @project.name
steps %Q{
When I go to the edit page of the timeline "#{timeline_name}" of the project called "#{project_name}"
}
result = []
table.raw.each do |_perm|
perm = _perm.first
unless perm.blank?
result.push(Project.find_by_name(perm).id)
end
end
results = result.join(",");
#we need to wait for our submit form to load ...
page.should have_selector("#timeline_options_grouping_one_enabled", :visible => false)
page.execute_script("jQuery('#timeline_options_grouping_one_enabled').prop('checked', true)")
page.execute_script("jQuery('#timeline_options_grouping_one_selection').val('#{results}')")
page.execute_script("jQuery('#content form').submit()")
end
When(/^I set the sortation of the first level grouping criteria to explicit order$/) do
timeline_name = @timeline_name
project_name = @project.name
steps %Q{
When I go to the edit page of the timeline "#{timeline_name}" of the project called "#{project_name}"
}
page.should have_selector("#timeline_options_grouping_one_sort", :visible => false)
page.execute_script("jQuery('#timeline_options_grouping_one_sort').val('1')")
page.execute_script("jQuery('#content form').submit()")
end
When (/^I trash the planning element with name "([^"]*?)"$/) do |planning_element_subject|
steps %Q{
When I click on the Planning Element with name "#{planning_element_subject}"
And I wait for the modal to show
And I click on the Trash Link
And I wait for the modal to close
}
end
When(/^I restore the planning element with name "(.*?)" of project "(.*?)"$/) do |planning_element_subject, project|
steps %Q{
When I open a modal for planning element "#{planning_element_subject}" of project "#{project}"
And I wait for the modal to show
And I click on the Restore Link
And I wait for the modal to close
}
end
When (/^I trash the planning element with name "([^"]*?)" of project "([^"]*?)"$/) do |planning_element_subject, project|
steps %Q{
When I open a modal for planning element "#{planning_element_subject}" of project "#{project}"
And I wait for the modal to show
And I click on the Trash Link
And I wait for the modal to close
}
end
When /^I click on the Restore Link$/ do
page.execute_script("jQuery('.input-as-link').click()")
end
When /^I wait (\d+) seconds?$/ do |seconds|
sleep seconds.to_i
end
When /^I wait for the modal to show$/ do
page.should have_selector('#planningElementDialog')
end
When /^I wait for the modal to close$/ do
page.should have_no_selector('#planningElementDialog')
end
When (/^I set duedate to "([^"]*)"$/) do |value|
fill_in 'planning_element_due_date', :with => value
end
When /^I wait for timeline to load table$/ do
page.should have_selector('.tl-left-main')
end
When (/^I open a modal for planning element "([^"]*)" of project "([^"]*)"$/) do |planning_element_subject, project_name|
planning_element = PlanningElement.find_by_subject(planning_element_subject)
project = Project.find_by_name(project_name)
page.execute_script <<-JS
Timeline.get().modalHelper.createPlanningModal(
'show',
#{project.id},
#{planning_element.id}
);
JS
end
When (/^I move "([^"]*)" to the top$/) do |name|
cell = find(:css, "table.list td", :text => Regexp.new("^#{name}$"))
row = cell.find(:xpath, './ancestor::tr')
link = row.find_link('Move to top')
link.click
end
When (/^I move "([^"]*)" to the bottom$/) do |name|
cell = find(:css, "table.list td", :text => Regexp.new("^#{name}$"))
row = cell.find(:xpath, './ancestor::tr')
link = row.find_link('Move to bottom')
link.click
end
When (/^I move "([^"]*)" up by one$/) do |name|
cell = find(:css, "table.list td", :text => Regexp.new("^#{name}$"))
row = cell.find(:xpath, './ancestor::tr')
link = row.find_link('Move up')
link.click
end
When (/^I move "([^"]*)" down by one$/) do |name|
cell = find(:css, "table.list td", :text => Regexp.new("^#{name}$"))
row = cell.find(:xpath, './ancestor::tr')
link = row.find_link('Move down')
link.click
end
When (/^I fill in the planning element ID of "([^"]*)" with (\d+) star for "([^"]*)"$/) do |planning_element_subject, number_hash_keys, container|
planning_element = PlanningElement.find_by_subject(planning_element_subject)
text = "#{('*' * number_hash_keys.to_i)}#{planning_element.id}"
step %Q{I fill in "#{text}" for "#{container}"}
end
When (/^I follow the planning element link with (\d+) star for "([^"]*)"$/) do |star_count, planning_element_subject|
planning_element = PlanningElement.find_by_subject(planning_element_subject)
text = ""
if star_count.to_i > 1
text = "*#{planning_element.id} #{planning_element.planning_element_status.nil? ? "" : planning_element.planning_element_status.name + ":"} #{planning_element.subject}"
elsif star_count.to_i == 1
text = "*#{planning_element.id}"
end
step %Q{I follow "#{text}"}
end
When (/^I fill in a wiki macro for timeline "([^"]*)" for "([^"]*)"$/) do |timeline_name, container|
timeline = Timeline.find_by_name(timeline_name)
text = "{{timeline(#{timeline.id})}}"
step %Q{I fill in "#{text}" for "#{container}"}
end
When (/^(.*) for the color "([^"]*)"$/) do |step_name, color_name|
color = PlanningElementTypeColor.find_by_name(color_name)
step %Q{#{step_name} within "#color-#{color.id} td:first-child"}
end