diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-03 09:08:53 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-03 09:08:53 +0000 |
commit | 1c75400c24137f603678d0ee3d497b0c9280e7f7 (patch) | |
tree | ccf2e8584d8b7efd3c648a276ebe5b456639da3b /qa | |
parent | 1f23012963babbcc586e7025cc28e62385813fb6 (diff) | |
download | gitlab-ce-1c75400c24137f603678d0ee3d497b0c9280e7f7.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'qa')
-rw-r--r-- | qa/qa.rb | 1 | ||||
-rw-r--r-- | qa/qa/page/project/milestone/index.rb | 18 | ||||
-rw-r--r-- | qa/qa/page/project/milestone/new.rb | 27 | ||||
-rw-r--r-- | qa/qa/page/project/milestone/show.rb | 35 | ||||
-rw-r--r-- | qa/qa/page/project/sub_menus/issues.rb | 8 | ||||
-rw-r--r-- | qa/qa/resource/project_milestone.rb | 20 | ||||
-rw-r--r-- | qa/qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb | 41 | ||||
-rw-r--r-- | qa/qa/support/dates.rb | 5 |
8 files changed, 144 insertions, 11 deletions
@@ -320,6 +320,7 @@ module QA module Milestone autoload :New, 'qa/page/project/milestone/new' autoload :Index, 'qa/page/project/milestone/index' + autoload :Show, 'qa/page/project/milestone/show' end module Operations diff --git a/qa/qa/page/project/milestone/index.rb b/qa/qa/page/project/milestone/index.rb index 6895c44f72f..20f73fdd545 100644 --- a/qa/qa/page/project/milestone/index.rb +++ b/qa/qa/page/project/milestone/index.rb @@ -6,11 +6,23 @@ module QA module Milestone class Index < Page::Base view 'app/views/projects/milestones/index.html.haml' do - element :new_project_milestone + element :new_project_milestone_link end - def click_new_milestone - click_element :new_project_milestone + view 'app/views/shared/milestones/_milestone.html.haml' do + element :milestone_link + end + + def click_new_milestone_link + click_element :new_project_milestone_link + end + + def has_milestone?(milestone) + has_element? :milestone_link, milestone_title: milestone.title + end + + def click_milestone(milestone) + click_element :milestone_link, milestone_title: milestone.title end end end diff --git a/qa/qa/page/project/milestone/new.rb b/qa/qa/page/project/milestone/new.rb index 751fb141684..9453585f199 100644 --- a/qa/qa/page/project/milestone/new.rb +++ b/qa/qa/page/project/milestone/new.rb @@ -6,21 +6,34 @@ module QA module Milestone class New < Page::Base view 'app/views/projects/milestones/_form.html.haml' do - element :milestone_create_button - element :milestone_title - element :milestone_description + element :create_milestone_button + element :milestone_description_field + element :milestone_title_field + end + + view 'app/views/shared/milestones/_form_dates.html.haml' do + element :due_date_field + element :start_date_field + end + + def click_create_milestone_button + click_element :create_milestone_button end def set_title(title) - fill_element :milestone_title, title + fill_element :milestone_title_field, title end def set_description(description) - fill_element :milestone_description, description + fill_element :milestone_description_field, description + end + + def set_due_date(due_date) + fill_element :due_date_field, due_date.to_s + "\n" end - def click_milestone_create_button - click_element :milestone_create_button + def set_start_date(start_date) + fill_element :start_date_field, start_date.to_s + "\n" end end end diff --git a/qa/qa/page/project/milestone/show.rb b/qa/qa/page/project/milestone/show.rb new file mode 100644 index 00000000000..ebcf9347113 --- /dev/null +++ b/qa/qa/page/project/milestone/show.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +module QA + module Page + module Project + module Milestone + class Show < ::QA::Page::Base + include Support::Dates + + view 'app/views/shared/milestones/_description.html.haml' do + element :milestone_title_content, required: true + element :milestone_description_content + end + + view 'app/views/shared/milestones/_sidebar.html.haml' do + element :due_date_content + element :start_date_content + end + + def has_due_date?(due_date) + formatted_due_date = format_date(due_date) + has_element?(:due_date_content, text: formatted_due_date) + end + + def has_start_date?(start_date) + formatted_start_date = format_date(start_date) + has_element?(:start_date_content, text: formatted_start_date) + end + end + end + end + end +end + +QA::Page::Project::Milestone::Show.prepend_if_ee('QA::EE::Page::Project::Milestone::Show') diff --git a/qa/qa/page/project/sub_menus/issues.rb b/qa/qa/page/project/sub_menus/issues.rb index c15a8ec4cc7..124faf0d346 100644 --- a/qa/qa/page/project/sub_menus/issues.rb +++ b/qa/qa/page/project/sub_menus/issues.rb @@ -50,6 +50,14 @@ module QA end end + def go_to_milestones + hover_issues do + within_submenu do + click_element(:milestones_link) + end + end + end + private def hover_issues diff --git a/qa/qa/resource/project_milestone.rb b/qa/qa/resource/project_milestone.rb index 385b9f0c96b..c9218e03e35 100644 --- a/qa/qa/resource/project_milestone.rb +++ b/qa/qa/resource/project_milestone.rb @@ -7,6 +7,7 @@ module QA attribute :id attribute :title + attribute :description attribute :project do Project.fabricate_via_api! do |resource| @@ -16,6 +17,7 @@ module QA def initialize @title = "project-milestone-#{SecureRandom.hex(4)}" + @description = "My awesome project milestone." end def api_get_path @@ -28,12 +30,28 @@ module QA def api_post_body { - title: title + title: title, + description: description }.tap do |hash| hash[:start_date] = @start_date if @start_date hash[:due_date] = @due_date if @due_date end end + + def fabricate! + project.visit! + + Page::Project::Menu.perform(&:go_to_milestones) + Page::Project::Milestone::Index.perform(&:click_new_milestone_link) + + Page::Project::Milestone::New.perform do |new_milestone| + new_milestone.set_title(@title) + new_milestone.set_description(@description) + new_milestone.set_start_date(@start_date) if @start_date + new_milestone.set_due_date(@due_date) if @due_date + new_milestone.click_create_milestone_button + end + end end end end diff --git a/qa/qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb new file mode 100644 index 00000000000..b62d7a83eea --- /dev/null +++ b/qa/qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +module QA + context 'Plan' do + describe 'Project milestone' do + include Support::Dates + + let(:title) { 'Project milestone' } + let(:description) { 'This issue tests out project milestones.' } + let(:start_date) { current_date_yyyy_mm_dd } + let(:due_date) { next_month_yyyy_mm_dd } + + before do + Flow::Login.sign_in + end + + it 'creates a project milestone' do + project_milestone = Resource::ProjectMilestone.fabricate_via_browser_ui! do |milestone| + milestone.title = title + milestone.description = description + milestone.start_date = start_date + milestone.due_date = due_date + end + + Page::Project::Menu.perform(&:go_to_milestones) + Page::Project::Milestone::Index.perform do |milestone_list| + expect(milestone_list).to have_milestone(project_milestone) + + milestone_list.click_milestone(project_milestone) + end + + Page::Project::Milestone::Show.perform do |milestone| + expect(milestone).to have_element(:milestone_title_content, text: title) + expect(milestone).to have_element(:milestone_description_content, text: description) + expect(milestone).to have_start_date(start_date) + expect(milestone).to have_due_date(due_date) + end + end + end + end +end diff --git a/qa/qa/support/dates.rb b/qa/qa/support/dates.rb index 47fc721afc1..3d1f146730b 100644 --- a/qa/qa/support/dates.rb +++ b/qa/qa/support/dates.rb @@ -11,6 +11,11 @@ module QA current_date.next_month.strftime("%Y/%m/%d") end + def format_date(date) + new_date = DateTime.strptime(date, "%Y/%m/%d") + new_date.strftime("%b %-d, %Y") + end + private def current_date |