summaryrefslogtreecommitdiff
path: root/qa
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-07-03 09:08:53 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-07-03 09:08:53 +0000
commit1c75400c24137f603678d0ee3d497b0c9280e7f7 (patch)
treeccf2e8584d8b7efd3c648a276ebe5b456639da3b /qa
parent1f23012963babbcc586e7025cc28e62385813fb6 (diff)
downloadgitlab-ce-1c75400c24137f603678d0ee3d497b0c9280e7f7.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'qa')
-rw-r--r--qa/qa.rb1
-rw-r--r--qa/qa/page/project/milestone/index.rb18
-rw-r--r--qa/qa/page/project/milestone/new.rb27
-rw-r--r--qa/qa/page/project/milestone/show.rb35
-rw-r--r--qa/qa/page/project/sub_menus/issues.rb8
-rw-r--r--qa/qa/resource/project_milestone.rb20
-rw-r--r--qa/qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb41
-rw-r--r--qa/qa/support/dates.rb5
8 files changed, 144 insertions, 11 deletions
diff --git a/qa/qa.rb b/qa/qa.rb
index 3f93d79ee51..eec7c10b2eb 100644
--- a/qa/qa.rb
+++ b/qa/qa.rb
@@ -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