Commit 2f6603e58174e5aff35fbc0ce6a9616dc77b077a

Authored by Dmitriy Zaporozhets
1 parent ab344f31

A bit of spinach tests

features/admin/logs.feature 0 → 100644
features/admin/projects.feature 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +Feature: Admin Projects
  2 + Background:
  3 + Given I sign in as an admin
  4 + And there are projects in system
  5 +
  6 + Scenario: Projects list
  7 + When I visit admin projects page
  8 + Then I should see all projects
  9 +
  10 + Scenario: Projects show
  11 + When I visit admin projects page
  12 + And I click on first project
  13 + Then I should see project details
features/admin/users.feature 0 → 100644
features/project/project.feature
1 Feature: Projects 1 Feature: Projects
2 Background: 2 Background:
3 - Given I signin as a user 3 + Given I sign in as a user
4 And I own project "Shop" 4 And I own project "Shop"
  5 + And project "Shop" has push event
5 And I visit project "Shop" page 6 And I visit project "Shop" page
6 7
7 - # @wip  
8 - # Scenario: I should see project activity 8 + Scenario: I should see project activity
  9 + When I visit project "Shop" page
  10 + Then I should see project "Shop" activity feed
9 11
10 - # @wip  
11 - # Scenario: I edit project 12 + Scenario: I visit edit project
  13 + When I visit edit project "Shop" page
  14 + Then I should see project settings
  15 +
  16 + Scenario: I edit project
  17 + When I visit edit project "Shop" page
  18 + And change project settings
  19 + And I save project
  20 + Then I should see project with new settings
12 21
13 # @wip 22 # @wip
14 # Scenario: I visit attachments 23 # Scenario: I visit attachments
features/steps/admin/admin_projects.rb 0 → 100644
@@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
  1 +class AdminProjects < Spinach::FeatureSteps
  2 + include SharedAuthentication
  3 + include SharedPaths
  4 + include SharedAdmin
  5 +
  6 + And 'I should see all projects' do
  7 + Project.all.each do |p|
  8 + page.should have_content p.name_with_namespace
  9 + end
  10 + end
  11 +
  12 + And 'I click on first project' do
  13 + click_link Project.first.name_with_namespace
  14 + end
  15 +
  16 + Then 'I should see project details' do
  17 + project = Project.first
  18 + current_path.should == admin_project_path(project)
  19 +
  20 + page.should have_content(project.name_with_namespace)
  21 + page.should have_content(project.creator.name)
  22 + page.should have_content('Add new team member')
  23 + end
  24 +end
features/steps/dashboard/dashboard.rb
1 class Dashboard < Spinach::FeatureSteps 1 class Dashboard < Spinach::FeatureSteps
2 include SharedAuthentication 2 include SharedAuthentication
3 include SharedPaths 3 include SharedPaths
  4 + include SharedProject
4 5
5 Then 'I should see "New Project" link' do 6 Then 'I should see "New Project" link' do
6 page.should have_link "New Project" 7 page.should have_link "New Project"
@@ -10,11 +11,6 @@ class Dashboard &lt; Spinach::FeatureSteps @@ -10,11 +11,6 @@ class Dashboard &lt; Spinach::FeatureSteps
10 page.should have_link "Shop" 11 page.should have_link "Shop"
11 end 12 end
12 13
13 - Then 'I should see project "Shop" activity feed' do  
14 - project = Project.find_by_name("Shop")  
15 - page.should have_content "#{@user.name} pushed new branch new_design at #{project.name}"  
16 - end  
17 -  
18 Then 'I should see last push widget' do 14 Then 'I should see last push widget' do
19 page.should have_content "You pushed to new_design" 15 page.should have_content "You pushed to new_design"
20 page.should have_link "Create Merge Request" 16 page.should have_link "Create Merge Request"
@@ -59,11 +55,6 @@ class Dashboard &lt; Spinach::FeatureSteps @@ -59,11 +55,6 @@ class Dashboard &lt; Spinach::FeatureSteps
59 page.should have_content "John Doe left project at Shop" 55 page.should have_content "John Doe left project at Shop"
60 end 56 end
61 57
62 - And 'I own project "Shop"' do  
63 - @project = create :project, name: 'Shop'  
64 - @project.team << [@user, :master]  
65 - end  
66 -  
67 And 'I have group with projects' do 58 And 'I have group with projects' do
68 @group = create(:group) 59 @group = create(:group)
69 @project = create(:project, group: @group) 60 @project = create(:project, group: @group)
@@ -72,32 +63,6 @@ class Dashboard &lt; Spinach::FeatureSteps @@ -72,32 +63,6 @@ class Dashboard &lt; Spinach::FeatureSteps
72 @project.team << [current_user, :master] 63 @project.team << [current_user, :master]
73 end 64 end
74 65
75 - And 'project "Shop" has push event' do  
76 - @project = Project.find_by_name("Shop")  
77 -  
78 - data = {  
79 - before: "0000000000000000000000000000000000000000",  
80 - after: "0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e",  
81 - ref: "refs/heads/new_design",  
82 - user_id: @user.id,  
83 - user_name: @user.name,  
84 - repository: {  
85 - name: @project.name,  
86 - url: "localhost/rubinius",  
87 - description: "",  
88 - homepage: "localhost/rubinius",  
89 - private: true  
90 - }  
91 - }  
92 -  
93 - @event = Event.create(  
94 - project: @project,  
95 - action: Event::Pushed,  
96 - data: data,  
97 - author_id: @user.id  
98 - )  
99 - end  
100 -  
101 Then 'I should see groups list' do 66 Then 'I should see groups list' do
102 Group.all.each do |group| 67 Group.all.each do |group|
103 page.should have_link group.name 68 page.should have_link group.name
@@ -112,5 +77,4 @@ class Dashboard &lt; Spinach::FeatureSteps @@ -112,5 +77,4 @@ class Dashboard &lt; Spinach::FeatureSteps
112 Then 'I should see 1 project at group list' do 77 Then 'I should see 1 project at group list' do
113 page.find('span.last_activity/span').should have_content('1') 78 page.find('span.last_activity/span').should have_content('1')
114 end 79 end
115 -  
116 end 80 end
features/steps/project/project.rb
@@ -2,4 +2,17 @@ class Projects &lt; Spinach::FeatureSteps @@ -2,4 +2,17 @@ class Projects &lt; Spinach::FeatureSteps
2 include SharedAuthentication 2 include SharedAuthentication
3 include SharedProject 3 include SharedProject
4 include SharedPaths 4 include SharedPaths
  5 +
  6 + And 'change project settings' do
  7 + fill_in 'project_name', with: 'NewName'
  8 + uncheck 'project_issues_enabled'
  9 + end
  10 +
  11 + And 'I save project' do
  12 + click_button 'Save'
  13 + end
  14 +
  15 + Then 'I should see project with new settings' do
  16 + find_field('project_name').value.should == 'NewName'
  17 + end
5 end 18 end
features/steps/shared/admin.rb 0 → 100644
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
  1 +module SharedAdmin
  2 + include Spinach::DSL
  3 +
  4 + And 'there are projects in system' do
  5 + 2.times { create(:project) }
  6 + end
  7 +end
  8 +
features/steps/shared/paths.rb
@@ -165,6 +165,11 @@ module SharedPaths @@ -165,6 +165,11 @@ module SharedPaths
165 visit project_path(project) 165 visit project_path(project)
166 end 166 end
167 167
  168 + When 'I visit edit project "Shop" page' do
  169 + project = Project.find_by_name("Shop")
  170 + visit edit_project_path(project)
  171 + end
  172 +
168 Given 'I visit project branches page' do 173 Given 'I visit project branches page' do
169 visit branches_project_repository_path(@project) 174 visit branches_project_repository_path(@project)
170 end 175 end
features/steps/shared/project.rb
@@ -13,6 +13,44 @@ module SharedProject @@ -13,6 +13,44 @@ module SharedProject
13 @project.team << [@user, :master] 13 @project.team << [@user, :master]
14 end 14 end
15 15
  16 + And 'project "Shop" has push event' do
  17 + @project = Project.find_by_name("Shop")
  18 +
  19 + data = {
  20 + before: "0000000000000000000000000000000000000000",
  21 + after: "0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e",
  22 + ref: "refs/heads/new_design",
  23 + user_id: @user.id,
  24 + user_name: @user.name,
  25 + repository: {
  26 + name: @project.name,
  27 + url: "localhost/rubinius",
  28 + description: "",
  29 + homepage: "localhost/rubinius",
  30 + private: true
  31 + }
  32 + }
  33 +
  34 + @event = Event.create(
  35 + project: @project,
  36 + action: Event::Pushed,
  37 + data: data,
  38 + author_id: @user.id
  39 + )
  40 + end
  41 +
  42 + Then 'I should see project "Shop" activity feed' do
  43 + project = Project.find_by_name("Shop")
  44 + page.should have_content "#{@user.name} pushed new branch new_design at #{project.name}"
  45 + end
  46 +
  47 + Then 'I should see project settings' do
  48 + current_path.should == edit_project_path(@project)
  49 + page.should have_content("Project name is")
  50 + page.should have_content("Advanced settings:")
  51 + page.should have_content("Features:")
  52 + end
  53 +
16 def current_project 54 def current_project
17 @project ||= Project.first 55 @project ||= Project.first
18 end 56 end
spec/requests/projects_spec.rb
@@ -3,59 +3,6 @@ require &#39;spec_helper&#39; @@ -3,59 +3,6 @@ require &#39;spec_helper&#39;
3 describe "Projects" do 3 describe "Projects" do
4 before { login_as :user } 4 before { login_as :user }
5 5
6 - describe "GET /projects/show" do  
7 - before do  
8 - @project = create(:project, namespace: @user.namespace)  
9 - @project.team << [@user, :reporter]  
10 -  
11 - visit project_path(@project)  
12 - end  
13 -  
14 - it "should be correct path" do  
15 - current_path.should == project_path(@project)  
16 - end  
17 - end  
18 -  
19 - describe "GET /projects/:id/edit" do  
20 - before do  
21 - @project = create(:project)  
22 - @project.team << [@user, :master]  
23 -  
24 - visit edit_project_path(@project)  
25 - end  
26 -  
27 - it "should be correct path" do  
28 - current_path.should == edit_project_path(@project)  
29 - end  
30 -  
31 - it "should have labels for new project" do  
32 - page.should have_content("Project name is")  
33 - page.should have_content("Advanced settings:")  
34 - page.should have_content("Features:")  
35 - end  
36 - end  
37 -  
38 - describe "PUT /projects/:id" do  
39 - before do  
40 - @project = create(:project, namespace: @user.namespace)  
41 - @project.team << [@user, :master]  
42 -  
43 - visit edit_project_path(@project)  
44 -  
45 - fill_in 'project_name', with: 'Awesome'  
46 - click_button "Save"  
47 - @project = @project.reload  
48 - end  
49 -  
50 - it "should be correct path" do  
51 - current_path.should == edit_project_path(@project)  
52 - end  
53 -  
54 - it "should show project" do  
55 - page.should have_content("Awesome")  
56 - end  
57 - end  
58 -  
59 describe "DELETE /projects/:id" do 6 describe "DELETE /projects/:id" do
60 before do 7 before do
61 @project = create(:project, namespace: @user.namespace) 8 @project = create(:project, namespace: @user.namespace)