summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--features/dashboard/dashboard.feature7
-rw-r--r--features/dashboard/issues.feature6
-rw-r--r--features/dashboard/merge_requests.feature8
-rw-r--r--features/dashboard/search.feature10
-rw-r--r--features/steps/dashboard.rb97
-rw-r--r--features/steps/dashboard_issues.rb32
-rw-r--r--features/steps/dashboard_merge_requests.rb33
-rw-r--r--features/steps/dashboard_search.rb23
-rw-r--r--features/support/env.rb6
9 files changed, 205 insertions, 17 deletions
diff --git a/features/dashboard/dashboard.feature b/features/dashboard/dashboard.feature
index 98bb49803f3..9756bc7f64d 100644
--- a/features/dashboard/dashboard.feature
+++ b/features/dashboard/dashboard.feature
@@ -1,9 +1,9 @@
Feature: Dashboard
- Background:
- Given I signin as a user
+ Background:
+ Given I sign in as a user
And I own project "Shop"
And project "Shop" has push event
- And I visit dashboard page
+ And I visit dashboard page
Scenario: I should see projects list
Then I should see "New Project" link
@@ -25,4 +25,3 @@ Feature: Dashboard
And user with name "John Doe" left project "Shop"
When I visit dashboard page
Then I should see "John Doe left project Shop" event
-
diff --git a/features/dashboard/issues.feature b/features/dashboard/issues.feature
index c3361bb313f..895b89aa38a 100644
--- a/features/dashboard/issues.feature
+++ b/features/dashboard/issues.feature
@@ -1,8 +1,8 @@
Feature: Dashboard Issues
- Background:
- Given I signin as a user
+ Background:
+ Given I sign in as a user
And I have assigned issues
- And I visit dashboard issues page
+ And I visit dashboard issues page
Scenario: I should see issues list
Then I should see issues assigned to me
diff --git a/features/dashboard/merge_requests.feature b/features/dashboard/merge_requests.feature
index 90b8749c5a7..cad65b0d79a 100644
--- a/features/dashboard/merge_requests.feature
+++ b/features/dashboard/merge_requests.feature
@@ -1,8 +1,8 @@
-Feature: Dashboard MR
- Background:
- Given I signin as a user
+Feature: Dashboard Merge Requests
+ Background:
+ Given I sign in as a user
And I have authored merge requests
- And I visit dashboard merge requests page
+ And I visit dashboard merge requests page
Scenario: I should see projects list
Then I should see my merge requests
diff --git a/features/dashboard/search.feature b/features/dashboard/search.feature
index f053fe86fc8..91d870f46f3 100644
--- a/features/dashboard/search.feature
+++ b/features/dashboard/search.feature
@@ -1,11 +1,9 @@
Feature: Dashboard Search
- Background:
- Given I signin as a user
+ Background:
+ Given I sign in as a user
And I own project "Shop"
- And I visit dashboard search page
+ And I visit dashboard search page
- Scenario: I should see project i'm looking for
+ Scenario: I should see project I am looking for
Given I search for "Sho"
Then I should see "Shop" project link
-
-
diff --git a/features/steps/dashboard.rb b/features/steps/dashboard.rb
new file mode 100644
index 00000000000..e69686b32b4
--- /dev/null
+++ b/features/steps/dashboard.rb
@@ -0,0 +1,97 @@
+class Dashboard < Spinach::FeatureSteps
+ Then 'I should see "New Project" link' do
+ page.should have_link "New Project"
+ end
+
+ Then 'I should see "Shop" project link' do
+ page.should have_link "Shop"
+ end
+
+ Then 'I should see project "Shop" activity feed' do
+ project = Project.find_by_name("Shop")
+ page.should have_content "#{@user.name} pushed new branch new_design at #{project.name}"
+ end
+
+ Then 'I should see last push widget' do
+ page.should have_content "Your pushed to branch new_design"
+ page.should have_link "Create Merge Request"
+ end
+
+ And 'I click "Create Merge Request" link' do
+ click_link "Create Merge Request"
+ end
+
+ Then 'I see prefilled new Merge Request page' do
+ current_path.should == new_project_merge_request_path(@project)
+ find("#merge_request_source_branch").value.should == "new_design"
+ find("#merge_request_target_branch").value.should == "master"
+ find("#merge_request_title").value.should == "New Design"
+ end
+
+ Given 'user with name "John Doe" joined project "Shop"' do
+ user = Factory.create(:user, {name: "John Doe"})
+ project = Project.find_by_name "Shop"
+ Event.create(
+ project: project,
+ author_id: user.id,
+ action: Event::Joined
+ )
+ end
+
+ When 'I visit dashboard page' do
+ visit dashboard_path
+ end
+
+ Then 'I should see "John Doe joined project Shop" event' do
+ page.should have_content "John Doe joined project Shop"
+ end
+
+ And 'user with name "John Doe" left project "Shop"' do
+ user = User.find_by_name "John Doe"
+ project = Project.find_by_name "Shop"
+ Event.create(
+ project: project,
+ author_id: user.id,
+ action: Event::Left
+ )
+ end
+
+ Then 'I should see "John Doe left project Shop" event' do
+ page.should have_content "John Doe left project Shop"
+ end
+
+ Given 'I sign in as a user' do
+ login_as :user
+ end
+
+ And 'I own project "Shop"' do
+ @project = Factory :project, :name => 'Shop'
+ @project.add_access(@user, :admin)
+ end
+
+ And 'project "Shop" has push event' do
+ @project = Project.find_by_name("Shop")
+
+ data = {
+ :before => "0000000000000000000000000000000000000000",
+ :after => "0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e",
+ :ref => "refs/heads/new_design",
+ :user_id => @user.id,
+ :user_name => @user.name,
+ :repository => {
+ :name => @project.name,
+ :url => "localhost/rubinius",
+ :description => "",
+ :homepage => "localhost/rubinius",
+ :private => true
+ }
+ }
+
+ @event = Event.create(
+ :project => @project,
+ :action => Event::Pushed,
+ :data => data,
+ :author_id => @user.id
+ )
+ end
+end
diff --git a/features/steps/dashboard_issues.rb b/features/steps/dashboard_issues.rb
new file mode 100644
index 00000000000..8704d2efdf6
--- /dev/null
+++ b/features/steps/dashboard_issues.rb
@@ -0,0 +1,32 @@
+class DashboardIssues < Spinach::FeatureSteps
+ 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)
+ end
+ end
+
+ Given 'I sign in as a user' do
+ login_as :user
+ end
+
+ And 'I have assigned issues' do
+ project = Factory :project
+ project.add_access(@user, :read, :write)
+
+ issue1 = Factory :issue,
+ :author => @user,
+ :assignee => @user,
+ :project => project
+
+ issue2 = Factory :issue,
+ :author => @user,
+ :assignee => @user,
+ :project => project
+ end
+
+ And 'I visit dashboard issues page' do
+ visit dashboard_issues_path
+ end
+end
diff --git a/features/steps/dashboard_merge_requests.rb b/features/steps/dashboard_merge_requests.rb
new file mode 100644
index 00000000000..3e057ef9109
--- /dev/null
+++ b/features/steps/dashboard_merge_requests.rb
@@ -0,0 +1,33 @@
+class DashboardMergeRequests < Spinach::FeatureSteps
+ Then 'I should see my merge requests' do
+ merge_requests = @user.merge_requests
+ merge_requests.each do |mr|
+ page.should have_content(mr.title[0..10])
+ page.should have_content(mr.project.name)
+ end
+ end
+
+ Given 'I sign in as a user' do
+ login_as :user
+ end
+
+ And 'I have authored merge requests' do
+ project1 = Factory :project
+ project2 = Factory :project
+
+ project1.add_access(@user, :read, :write)
+ project2.add_access(@user, :read, :write)
+
+ merge_request1 = Factory :merge_request,
+ :author => @user,
+ :project => project1
+
+ merge_request2 = Factory :merge_request,
+ :author => @user,
+ :project => project2
+ end
+
+ And 'I visit dashboard merge requests page' do
+ visit dashboard_merge_requests_path
+ end
+end
diff --git a/features/steps/dashboard_search.rb b/features/steps/dashboard_search.rb
new file mode 100644
index 00000000000..122774fc23c
--- /dev/null
+++ b/features/steps/dashboard_search.rb
@@ -0,0 +1,23 @@
+class DashboardSearch < Spinach::FeatureSteps
+ Given 'I search for "Sho"' do
+ fill_in "dashboard_search", :with => "Sho"
+ click_button "Search"
+ end
+
+ Then 'I should see "Shop" project link' do
+ page.should have_link "Shop"
+ end
+
+ Given 'I sign in as a user' do
+ login_as :user
+ end
+
+ And 'I own project "Shop"' do
+ @project = Factory :project, :name => "Shop"
+ @project.add_access(@user, :admin)
+ end
+
+ And 'I visit dashboard search page' do
+ visit search_path
+ end
+end
diff --git a/features/support/env.rb b/features/support/env.rb
index aa2f2958ba3..2900e1cb288 100644
--- a/features/support/env.rb
+++ b/features/support/env.rb
@@ -4,6 +4,12 @@ require './config/environment'
require 'rspec'
require 'database_cleaner'
+%w(login_helpers stubbed_repository).each do |f|
+ require Rails.root.join('spec', 'support', f)
+end
+
+include LoginHelpers
+
DatabaseCleaner.strategy = :transaction
Spinach.hooks.before_scenario { DatabaseCleaner.start }
Spinach.hooks.after_scenario { DatabaseCleaner.clean }