summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-02-15 20:26:30 -0200
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-02-20 12:10:26 -0200
commitb05ab108f8f054e137d6ca3df9c211152afa23c7 (patch)
tree7e1447e93b2f26baa788352a8e1742fdaaeadac0
parent38026e5f7708473d2ae7a284a174fea7dac1e5db (diff)
downloadgitlab-ce-b05ab108f8f054e137d6ca3df9c211152afa23c7.tar.gz
Add feature spec for task queue list page
-rw-r--r--features/dashboard/task_queue.feature15
-rw-r--r--features/steps/dashboard/task_queue.rb60
-rw-r--r--features/steps/shared/paths.rb4
-rw-r--r--spec/factories/tasks.rb23
4 files changed, 102 insertions, 0 deletions
diff --git a/features/dashboard/task_queue.feature b/features/dashboard/task_queue.feature
new file mode 100644
index 00000000000..42b4a86e498
--- /dev/null
+++ b/features/dashboard/task_queue.feature
@@ -0,0 +1,15 @@
+@dashboard
+Feature: Dashboard Task Queue
+ Background:
+ Given I sign in as a user
+ And I own project "Shop"
+ And "John Doe" is a developer of project "Shop"
+ And I have pending tasks
+ And I visit dashboard task queue page
+
+ @javascript
+ Scenario: I mark pending tasks as done
+ Then I should see pending tasks assigned to me
+ And I mark the pending task as done
+ And I click on the "Done" tab
+ Then I should see all tasks marked as done
diff --git a/features/steps/dashboard/task_queue.rb b/features/steps/dashboard/task_queue.rb
new file mode 100644
index 00000000000..8695dd5cfb1
--- /dev/null
+++ b/features/steps/dashboard/task_queue.rb
@@ -0,0 +1,60 @@
+class Spinach::Features::DashboardTaskQueue < Spinach::FeatureSteps
+ include SharedAuthentication
+ include SharedPaths
+ include SharedProject
+ include SharedUser
+
+ step '"John Doe" is a developer of project "Shop"' do
+ project.team << [john_doe, :developer]
+ end
+
+ step 'I have pending tasks' do
+ create(:task, user: current_user, project: project, author: john_doe, target: assigned_issue, action: Task::ASSIGNED)
+ end
+
+ step 'I should see pending tasks assigned to me' do
+ expect(page).to have_link 'Tasks (1)'
+ expect(page).to have_link 'Done (0)'
+
+ page.within('.tasks') do
+ expect(page).to have_content project.name_with_namespace
+ expect(page).to have_content "John Doe assigned issue ##{assigned_issue.iid}"
+ expect(page).to have_content(assigned_issue.title[0..10])
+ expect(page).to have_link 'Done'
+ end
+ end
+
+ step 'I mark the pending task as done' do
+ click_link 'Done'
+
+ expect(page).to have_content 'Task was successfully marked as done.'
+ expect(page).to have_link 'Tasks (0)'
+ expect(page).to have_link 'Done (1)'
+ expect(page).to have_content 'No tasks to show'
+ end
+
+ step 'I click on the "Done" tab' do
+ click_link 'Done (1)'
+ end
+
+ step 'I should see all tasks marked as done' do
+ page.within('.tasks') do
+ expect(page).to have_content project.name_with_namespace
+ expect(page).to have_content "John Doe assigned issue ##{assigned_issue.iid}"
+ expect(page).to have_content(assigned_issue.title[0..10])
+ expect(page).not_to have_link 'Done'
+ end
+ end
+
+ def assigned_issue
+ @assigned_issue ||= create(:issue, assignee: current_user, project: project)
+ end
+
+ def john_doe
+ @john_doe ||= user_exists("John Doe", { username: "john_doe" })
+ end
+
+ def project
+ @project ||= create(:project, name: "Shop")
+ end
+end
diff --git a/features/steps/shared/paths.rb b/features/steps/shared/paths.rb
index 2c854ac7bf9..112ace342f0 100644
--- a/features/steps/shared/paths.rb
+++ b/features/steps/shared/paths.rb
@@ -103,6 +103,10 @@ module SharedPaths
visit dashboard_groups_path
end
+ step 'I visit dashboard task queue page' do
+ visit dashboard_tasks_path
+ end
+
step 'I should be redirected to the dashboard groups page' do
expect(current_path).to eq dashboard_groups_path
end
diff --git a/spec/factories/tasks.rb b/spec/factories/tasks.rb
new file mode 100644
index 00000000000..cd04405774a
--- /dev/null
+++ b/spec/factories/tasks.rb
@@ -0,0 +1,23 @@
+# == Schema Information
+#
+# Table name: tasks
+#
+# id :integer not null, primary key
+# user_id :integer not null
+# project_id :integer not null
+# target_id :integer not null
+# target_type :string not null
+# author_id :integer
+# action :integer
+# state :string not null
+# created_at :datetime
+# updated_at :datetime
+#
+
+FactoryGirl.define do
+ factory :task do
+ project
+ author
+ user
+ end
+end