From b1970e0cf1271a8263a7ccf6b2aa8abb7ae59b2d Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 24 Dec 2013 19:04:57 +0200 Subject: [PATCH] Tests for Dashboard#issues filter Signed-off-by: Dmitriy Zaporozhets --- features/dashboard/issues.feature | 12 +++- features/steps/dashboard/dashboard_issues.rb | 74 +++++++++++++++++--- 2 files changed, 75 insertions(+), 11 deletions(-) diff --git a/features/dashboard/issues.feature b/features/dashboard/issues.feature index 895b89aa38a..d316b2d9205 100644 --- a/features/dashboard/issues.feature +++ b/features/dashboard/issues.feature @@ -1,8 +1,18 @@ Feature: Dashboard Issues Background: Given I sign in as a user + And I have authored issues And I have assigned issues + And I have other issues And I visit dashboard issues page - Scenario: I should see issues list + Scenario: I should see assigned issues Then I should see issues assigned to me + + Scenario: I should see authored issues + When I click "Authored by me" link + Then I should see issues authored by me + + Scenario: I should see all issues + When I click "All" link + Then I should see all issues diff --git a/features/steps/dashboard/dashboard_issues.rb b/features/steps/dashboard/dashboard_issues.rb index fcf4296ad11..47d83f73ed2 100644 --- a/features/steps/dashboard/dashboard_issues.rb +++ b/features/steps/dashboard/dashboard_issues.rb @@ -2,19 +2,73 @@ class DashboardIssues < Spinach::FeatureSteps include SharedAuthentication include SharedPaths - Then 'I should see issues assigned to me' do - issues = @user.issues - issues.each do |issue| - page.should have_content(issue.title[0..10]) - page.should have_content(issue.project.name) - page.should have_link(issue.project.name) + step 'I should see issues assigned to me' do + should_see(assigned_issue) + should_not_see(authored_issue) + should_not_see(other_issue) + end + + step 'I should see issues authored by me' do + should_see(authored_issue) + should_not_see(assigned_issue) + should_not_see(other_issue) + end + + step 'I should see all issues' do + should_see(authored_issue) + should_see(assigned_issue) + should_see(other_issue) + end + + step 'I have authored issues' do + authored_issue + end + + step 'I have assigned issues' do + assigned_issue + end + + step 'I have other issues' do + other_issue + end + + step 'I click "Authored by me" link' do + within ".scope-filter" do + click_link 'Authored by me' end end - And 'I have assigned issues' do - project = create :project - project.team << [@user, :master] + step 'I click "All" link' do + within ".scope-filter" do + click_link 'All' + end + end - 2.times { create :issue, author: @user, assignee: @user, project: project } + def should_see(issue) + page.should have_content(issue.title[0..10]) + end + + def should_not_see(issue) + page.should_not have_content(issue.title[0..10]) + end + + def assigned_issue + @assigned_issue ||= create :issue, assignee: current_user, project: project + end + + def authored_issue + @authored_issue ||= create :issue, author: current_user, project: project + end + + def other_issue + @other_issue ||= create :issue, project: project + end + + def project + @project ||= begin + project =create :project_with_code + project.team << [current_user, :master] + project + end end end