summaryrefslogtreecommitdiff
path: root/spec/features/milestones
diff options
context:
space:
mode:
authorblackst0ne <blackst0ne.ru@gmail.com>2018-04-11 11:47:23 +0000
committerRémy Coutable <remy@rymai.me>2018-04-11 11:47:23 +0000
commit90cccf0f9feabfdc963c9bb8638e12548b4d179b (patch)
tree66b99636abac3e3c6e20ab74a7c1a8d0aef4fab5 /spec/features/milestones
parent5566bc86b1634d4455ee74ab16464ccdd8d4c594 (diff)
downloadgitlab-ce-90cccf0f9feabfdc963c9bb8638e12548b4d179b.tar.gz
Replace the `project/issues/milestones.feature` spinach test with an rspec analog
Diffstat (limited to 'spec/features/milestones')
-rw-r--r--spec/features/milestones/show_spec.rb26
-rw-r--r--spec/features/milestones/user_creates_milestone_spec.rb29
-rw-r--r--spec/features/milestones/user_deletes_milestone_spec.rb25
-rw-r--r--spec/features/milestones/user_views_milestone_spec.rb31
-rw-r--r--spec/features/milestones/user_views_milestones_spec.rb35
5 files changed, 120 insertions, 26 deletions
diff --git a/spec/features/milestones/show_spec.rb b/spec/features/milestones/show_spec.rb
deleted file mode 100644
index 50c5e0bb65f..00000000000
--- a/spec/features/milestones/show_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require 'rails_helper'
-
-describe 'Milestone show' do
- let(:user) { create(:user) }
- let(:project) { create(:project) }
- let(:milestone) { create(:milestone, project: project) }
- let(:labels) { create_list(:label, 2, project: project) }
- let(:issue_params) { { project: project, assignees: [user], author: user, milestone: milestone, labels: labels } }
-
- before do
- project.add_user(user, :developer)
- sign_in(user)
- end
-
- def visit_milestone
- visit project_milestone_path(project, milestone)
- end
-
- it 'avoids N+1 database queries' do
- create(:labeled_issue, issue_params)
- control = ActiveRecord::QueryRecorder.new { visit_milestone }
- create_list(:labeled_issue, 10, issue_params)
-
- expect { visit_milestone }.not_to exceed_query_limit(control)
- end
-end
diff --git a/spec/features/milestones/user_creates_milestone_spec.rb b/spec/features/milestones/user_creates_milestone_spec.rb
new file mode 100644
index 00000000000..8fd057d587c
--- /dev/null
+++ b/spec/features/milestones/user_creates_milestone_spec.rb
@@ -0,0 +1,29 @@
+require "rails_helper"
+
+describe "User creates milestone", :js do
+ set(:user) { create(:user) }
+ set(:project) { create(:project) }
+
+ before do
+ project.add_developer(user)
+ sign_in(user)
+
+ visit(new_project_milestone_path(project))
+ end
+
+ it "creates milestone" do
+ TITLE = "v2.3".freeze
+
+ fill_in("Title", with: TITLE)
+ fill_in("Description", with: "# Description header")
+ click_button("Create milestone")
+
+ expect(page).to have_content(TITLE)
+ .and have_content("Issues")
+ .and have_header_with_correct_id_and_link(1, "Description header", "description-header")
+
+ visit(activity_project_path(project))
+
+ expect(page).to have_content("#{user.name} opened milestone")
+ end
+end
diff --git a/spec/features/milestones/user_deletes_milestone_spec.rb b/spec/features/milestones/user_deletes_milestone_spec.rb
new file mode 100644
index 00000000000..414702daba4
--- /dev/null
+++ b/spec/features/milestones/user_deletes_milestone_spec.rb
@@ -0,0 +1,25 @@
+require "rails_helper"
+
+describe "User deletes milestone", :js do
+ set(:user) { create(:user) }
+ set(:project) { create(:project) }
+ set(:milestone) { create(:milestone, project: project) }
+
+ before do
+ project.add_developer(user)
+ sign_in(user)
+
+ visit(project_milestones_path(project))
+ end
+
+ it "deletes milestone" do
+ click_button("Delete")
+ click_button("Delete milestone")
+
+ expect(page).to have_content("No milestones to show")
+
+ visit(activity_project_path(project))
+
+ expect(page).to have_content("#{user.name} destroyed milestone")
+ end
+end
diff --git a/spec/features/milestones/user_views_milestone_spec.rb b/spec/features/milestones/user_views_milestone_spec.rb
new file mode 100644
index 00000000000..83d8e2ff9e9
--- /dev/null
+++ b/spec/features/milestones/user_views_milestone_spec.rb
@@ -0,0 +1,31 @@
+require "rails_helper"
+
+describe "User views milestone" do
+ set(:user) { create(:user) }
+ set(:project) { create(:project) }
+ set(:milestone) { create(:milestone, project: project) }
+ set(:labels) { create_list(:label, 2, project: project) }
+
+ before do
+ project.add_developer(user)
+ sign_in(user)
+ end
+
+ it "avoids N+1 database queries" do
+ ISSUE_PARAMS = { project: project, assignees: [user], author: user, milestone: milestone, labels: labels }.freeze
+
+ create(:labeled_issue, ISSUE_PARAMS)
+
+ control = ActiveRecord::QueryRecorder.new { visit_milestone }
+
+ create(:labeled_issue, ISSUE_PARAMS)
+
+ expect { visit_milestone }.not_to exceed_query_limit(control)
+ end
+
+ private
+
+ def visit_milestone
+ visit(project_milestone_path(project, milestone))
+ end
+end
diff --git a/spec/features/milestones/user_views_milestones_spec.rb b/spec/features/milestones/user_views_milestones_spec.rb
new file mode 100644
index 00000000000..bebe40f73fd
--- /dev/null
+++ b/spec/features/milestones/user_views_milestones_spec.rb
@@ -0,0 +1,35 @@
+require "rails_helper"
+
+describe "User views milestones" do
+ set(:user) { create(:user) }
+ set(:project) { create(:project) }
+ set(:milestone) { create(:milestone, project: project) }
+
+ before do
+ project.add_developer(user)
+ sign_in(user)
+
+ visit(project_milestones_path(project))
+ end
+
+ it "shows milestone" do
+ expect(page).to have_content(milestone.title)
+ .and have_content(milestone.expires_at)
+ .and have_content("Issues")
+ end
+
+ context "with issues" do
+ set(:issue) { create(:issue, project: project, milestone: milestone) }
+ set(:closed_issue) { create(:closed_issue, project: project, milestone: milestone) }
+
+ it "opens milestone" do
+ click_link(milestone.title)
+
+ expect(current_path).to eq(project_milestone_path(project, milestone))
+ expect(page).to have_content(milestone.title)
+ .and have_selector("#tab-issues li.issuable-row", count: 2)
+ .and have_content(issue.title)
+ .and have_content(closed_issue.title)
+ end
+ end
+end