kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
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.
233 lines
9.5 KiB
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
|
|
|