From 080bd12e167dceb3274bb488b7be787379d126b4 Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Mon, 10 Sep 2012 04:27:11 -0700 Subject: [PATCH] rewrite project commits features using spinach --- .../commits/branches.feature | 15 +++-- .../commits/commit_comments.feature | 6 +- .../commits/commits.feature | 9 ++- .../commits/tags.feature | 9 +-- .../create_project.feature | 0 .../{projects => project}/deploy_keys.feature | 0 .../issues/issues.feature | 0 .../issues/labels.feature | 0 .../issues/milestones.feature | 0 .../merge_requests.feature | 0 .../{projects => project}/network.feature | 0 .../{projects => project}/project.feature | 0 .../{projects => project}/snippets.feature | 0 .../source/browse_files.feature | 0 .../source/git_blame.feature | 0 .../team_management.feature | 0 features/{projects => project}/wall.feature | 0 .../{projects => project}/web_hooks.feature | 0 features/{projects => project}/wiki.feature | 0 features/steps/project_browse_branches.rb | 44 ++++++++++++++ features/steps/project_browse_commits.rb | 60 +++++++++++++++++++ features/steps/project_browse_tags.rb | 19 ++++++ features/steps/project_comment_commit.rb | 23 +++++++ features/support/env.rb | 13 +++- 24 files changed, 178 insertions(+), 20 deletions(-) rename features/{projects => project}/commits/branches.feature (66%) rename features/{projects => project}/commits/commit_comments.feature (72%) rename features/{projects => project}/commits/commits.feature (82%) rename features/{projects => project}/commits/tags.feature (53%) rename features/{projects => project}/create_project.feature (100%) rename features/{projects => project}/deploy_keys.feature (100%) rename features/{projects => project}/issues/issues.feature (100%) rename features/{projects => project}/issues/labels.feature (100%) rename features/{projects => project}/issues/milestones.feature (100%) rename features/{projects => project}/merge_requests.feature (100%) rename features/{projects => project}/network.feature (100%) rename features/{projects => project}/project.feature (100%) rename features/{projects => project}/snippets.feature (100%) rename features/{projects => project}/source/browse_files.feature (100%) rename features/{projects => project}/source/git_blame.feature (100%) rename features/{projects => project}/team_management.feature (100%) rename features/{projects => project}/wall.feature (100%) rename features/{projects => project}/web_hooks.feature (100%) rename features/{projects => project}/wiki.feature (100%) create mode 100644 features/steps/project_browse_branches.rb create mode 100644 features/steps/project_browse_commits.rb create mode 100644 features/steps/project_browse_tags.rb create mode 100644 features/steps/project_comment_commit.rb diff --git a/features/projects/commits/branches.feature b/features/project/commits/branches.feature similarity index 66% rename from features/projects/commits/branches.feature rename to features/project/commits/branches.feature index 74575c51..4fa4dc26 100644 --- a/features/projects/commits/branches.feature +++ b/features/project/commits/branches.feature @@ -1,6 +1,6 @@ -Feature: Browse branches - Background: - Given I signin as a user +Feature: Project Browse branches + Background: + Given I sign in as a user And I own project "Shop" And project "Shop" has protected branches Given I visit project branches page @@ -16,8 +16,11 @@ Feature: Browse branches Given I click link "Protected" Then I should see "Shop" protected branches list - Scenario: I can download project by branch + # @wip + # Scenario: I can download project by branch - Scenario: I can view protected branches + # @wip + # Scenario: I can view protected branches - Scenario: I can manage protected branches + # @wip + # Scenario: I can manage protected branches diff --git a/features/projects/commits/commit_comments.feature b/features/project/commits/commit_comments.feature similarity index 72% rename from features/projects/commits/commit_comments.feature rename to features/project/commits/commit_comments.feature index 9bd56d29..5acf541a 100644 --- a/features/projects/commits/commit_comments.feature +++ b/features/project/commits/commit_comments.feature @@ -1,6 +1,6 @@ -Feature: Comment commit - Background: - Given I signin as a user +Feature: Project Comment commit + Background: + Given I sign in as a user And I own project "Shop" Given I visit project commit page diff --git a/features/projects/commits/commits.feature b/features/project/commits/commits.feature similarity index 82% rename from features/projects/commits/commits.feature rename to features/project/commits/commits.feature index 69d39d78..53de6e6a 100644 --- a/features/projects/commits/commits.feature +++ b/features/project/commits/commits.feature @@ -1,6 +1,6 @@ -Feature: Browse commits - Background: - Given I signin as a user +Feature: Project Browse commits + Background: + Given I sign in as a user And I own project "Shop" Given I visit project commits page @@ -18,5 +18,4 @@ Feature: Browse commits Scenario: I compare refs Given I visit compare refs page And I fill compare fields with refs - And I see compared refs - + And I see compared refs diff --git a/features/projects/commits/tags.feature b/features/project/commits/tags.feature similarity index 53% rename from features/projects/commits/tags.feature rename to features/project/commits/tags.feature index f7899fc3..1ac0f8bf 100644 --- a/features/projects/commits/tags.feature +++ b/features/project/commits/tags.feature @@ -1,10 +1,11 @@ -Feature: Browse tags - Background: - Given I signin as a user +Feature: Project Browse tags + Background: + Given I sign in as a user And I own project "Shop" Given I visit project tags page Scenario: I can see all git tags Then I should see "Shop" all tags list - Scenario: I can download project by tag + # @wip + # Scenario: I can download project by tag diff --git a/features/projects/create_project.feature b/features/project/create_project.feature similarity index 100% rename from features/projects/create_project.feature rename to features/project/create_project.feature diff --git a/features/projects/deploy_keys.feature b/features/project/deploy_keys.feature similarity index 100% rename from features/projects/deploy_keys.feature rename to features/project/deploy_keys.feature diff --git a/features/projects/issues/issues.feature b/features/project/issues/issues.feature similarity index 100% rename from features/projects/issues/issues.feature rename to features/project/issues/issues.feature diff --git a/features/projects/issues/labels.feature b/features/project/issues/labels.feature similarity index 100% rename from features/projects/issues/labels.feature rename to features/project/issues/labels.feature diff --git a/features/projects/issues/milestones.feature b/features/project/issues/milestones.feature similarity index 100% rename from features/projects/issues/milestones.feature rename to features/project/issues/milestones.feature diff --git a/features/projects/merge_requests.feature b/features/project/merge_requests.feature similarity index 100% rename from features/projects/merge_requests.feature rename to features/project/merge_requests.feature diff --git a/features/projects/network.feature b/features/project/network.feature similarity index 100% rename from features/projects/network.feature rename to features/project/network.feature diff --git a/features/projects/project.feature b/features/project/project.feature similarity index 100% rename from features/projects/project.feature rename to features/project/project.feature diff --git a/features/projects/snippets.feature b/features/project/snippets.feature similarity index 100% rename from features/projects/snippets.feature rename to features/project/snippets.feature diff --git a/features/projects/source/browse_files.feature b/features/project/source/browse_files.feature similarity index 100% rename from features/projects/source/browse_files.feature rename to features/project/source/browse_files.feature diff --git a/features/projects/source/git_blame.feature b/features/project/source/git_blame.feature similarity index 100% rename from features/projects/source/git_blame.feature rename to features/project/source/git_blame.feature diff --git a/features/projects/team_management.feature b/features/project/team_management.feature similarity index 100% rename from features/projects/team_management.feature rename to features/project/team_management.feature diff --git a/features/projects/wall.feature b/features/project/wall.feature similarity index 100% rename from features/projects/wall.feature rename to features/project/wall.feature diff --git a/features/projects/web_hooks.feature b/features/project/web_hooks.feature similarity index 100% rename from features/projects/web_hooks.feature rename to features/project/web_hooks.feature diff --git a/features/projects/wiki.feature b/features/project/wiki.feature similarity index 100% rename from features/projects/wiki.feature rename to features/project/wiki.feature diff --git a/features/steps/project_browse_branches.rb b/features/steps/project_browse_branches.rb new file mode 100644 index 00000000..9fb2e59d --- /dev/null +++ b/features/steps/project_browse_branches.rb @@ -0,0 +1,44 @@ +class ProjectBrowseBranches < Spinach::FeatureSteps + Then 'I should see "Shop" recent branches list' do + page.should have_content "Branches" + page.should have_content "master" + end + + Given 'I click link "All"' do + click_link "All" + end + + Then 'I should see "Shop" all branches list' do + page.should have_content "Branches" + page.should have_content "master" + end + + Given 'I click link "Protected"' do + click_link "Protected" + end + + Then 'I should see "Shop" protected branches list' do + within "table" do + page.should have_content "stable" + page.should_not have_content "master" + end + 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 protected branches' do + project = Project.find_by_name("Shop") + project.protected_branches.create(:name => "stable") + end + + Given 'I visit project branches page' do + visit branches_project_repository_path(@project) + end +end diff --git a/features/steps/project_browse_commits.rb b/features/steps/project_browse_commits.rb new file mode 100644 index 00000000..71c592a7 --- /dev/null +++ b/features/steps/project_browse_commits.rb @@ -0,0 +1,60 @@ +class ProjectBrowseCommits < Spinach::FeatureSteps + Then 'I see project commits' do + current_path.should == project_commits_path(@project) + + commit = @project.commit + page.should have_content(@project.name) + page.should have_content(commit.message) + page.should have_content(commit.id.to_s[0..5]) + end + + Given 'I click atom feed link' do + click_link "Feed" + end + + Then 'I see commits atom feed' do + commit = CommitDecorator.decorate(@project.commit) + page.response_headers['Content-Type'].should have_content("application/atom+xml") + page.body.should have_selector("title", :text => "Recent commits to #{@project.name}") + page.body.should have_selector("author email", :text => commit.author_email) + page.body.should have_selector("entry summary", :text => commit.description) + end + + Given 'I click on commit link' do + visit project_commit_path(@project, ValidCommit::ID) + end + + Then 'I see commit info' do + page.should have_content ValidCommit::MESSAGE + page.should have_content "Showing 1 changed file" + end + + Given 'I visit compare refs page' do + visit compare_project_commits_path(@project) + end + + And 'I fill compare fields with refs' do + fill_in "from", :with => "master" + fill_in "to", :with => "stable" + click_button "Compare" + end + + And 'I see compared refs' do + page.should have_content "Commits (27)" + page.should have_content "Compare View" + page.should have_content "Showing 73 changed files" + 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 + + Given 'I visit project commits page' do + visit project_commits_path(@project) + end +end diff --git a/features/steps/project_browse_tags.rb b/features/steps/project_browse_tags.rb new file mode 100644 index 00000000..c6bea691 --- /dev/null +++ b/features/steps/project_browse_tags.rb @@ -0,0 +1,19 @@ +class ProjectBrowseTags < Spinach::FeatureSteps + Then 'I should see "Shop" all tags list' do + page.should have_content "Tags" + page.should have_content "v1.2.1" + 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 + + Given 'I visit project tags page' do + visit tags_project_repository_path(@project) + end +end diff --git a/features/steps/project_comment_commit.rb b/features/steps/project_comment_commit.rb new file mode 100644 index 00000000..04e94c7d --- /dev/null +++ b/features/steps/project_comment_commit.rb @@ -0,0 +1,23 @@ +class ProjectCommentCommit < Spinach::FeatureSteps + Given 'I leave a comment like "XML attached"' do + fill_in "note_note", :with => "XML attached" + click_button "Add Comment" + end + + Then 'I should see comment "XML attached"' do + page.should have_content "XML attached" + 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 + + Given 'I visit project commit page' do + visit project_commit_path(@project, ValidCommit::ID) + end +end diff --git a/features/support/env.rb b/features/support/env.rb index 2900e1cb..38d828a2 100644 --- a/features/support/env.rb +++ b/features/support/env.rb @@ -4,12 +4,21 @@ require './config/environment' require 'rspec' require 'database_cleaner' -%w(login_helpers stubbed_repository).each do |f| +%w(gitolite_stub login_helpers stubbed_repository valid_commit).each do |f| require Rails.root.join('spec', 'support', f) end include LoginHelpers +include GitoliteStub -DatabaseCleaner.strategy = :transaction +WebMock.allow_net_connect! + +DatabaseCleaner.strategy = :truncation Spinach.hooks.before_scenario { DatabaseCleaner.start } Spinach.hooks.after_scenario { DatabaseCleaner.clean } + +Spinach.hooks.before_run do + RSpec::Mocks::setup self + + stub_gitolite! +end