From fba174e9bc4e4ef5c0c4d6a4282f37e5265b87e2 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Thu, 23 Aug 2012 05:19:40 -0400 Subject: [PATCH] Cleanup spec/support folder and spec/spec_helper --- features/step_definitions/project/projects_steps.rb | 2 +- features/support/env.rb | 4 ++-- spec/api/issues_spec.rb | 71 ----------------------------------------------------------------------- spec/api/projects_spec.rb | 136 ---------------------------------------------------------------------------------------------------------------------------------------- spec/api/users_spec.rb | 37 ------------------------------------- spec/monkeypatch.rb | 51 --------------------------------------------------- spec/requests/api/issues_spec.rb | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ spec/requests/api/projects_spec.rb | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ spec/requests/api/users_spec.rb | 37 +++++++++++++++++++++++++++++++++++++ spec/spec_helper.rb | 37 ++++++------------------------------- spec/support/api.rb | 7 ------- spec/support/api_helpers.rb | 9 +++++++++ spec/support/db_cleaner.rb | 18 ++++++++++++++++++ spec/support/js_patch.rb | 6 ------ spec/support/login.rb | 30 ------------------------------ spec/support/login_helpers.rb | 23 +++++++++++++++++++++++ spec/support/monkeypatch.rb | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ spec/support/shared_examples.rb | 16 ---------------- 18 files changed, 354 insertions(+), 388 deletions(-) delete mode 100644 spec/api/issues_spec.rb delete mode 100644 spec/api/projects_spec.rb delete mode 100644 spec/api/users_spec.rb delete mode 100644 spec/monkeypatch.rb create mode 100644 spec/requests/api/issues_spec.rb create mode 100644 spec/requests/api/projects_spec.rb create mode 100644 spec/requests/api/users_spec.rb delete mode 100644 spec/support/api.rb create mode 100644 spec/support/api_helpers.rb create mode 100644 spec/support/db_cleaner.rb delete mode 100644 spec/support/js_patch.rb delete mode 100644 spec/support/login.rb create mode 100644 spec/support/login_helpers.rb create mode 100644 spec/support/monkeypatch.rb delete mode 100644 spec/support/shared_examples.rb diff --git a/features/step_definitions/project/projects_steps.rb b/features/step_definitions/project/projects_steps.rb index 3ff08d5..d981e1f 100644 --- a/features/step_definitions/project/projects_steps.rb +++ b/features/step_definitions/project/projects_steps.rb @@ -1,4 +1,4 @@ -include LoginMacros +include LoginHelpers Given /^I signin as a user$/ do login_as :user diff --git a/features/support/env.rb b/features/support/env.rb index b69a5fe..80a465b 100644 --- a/features/support/env.rb +++ b/features/support/env.rb @@ -7,9 +7,9 @@ require 'cucumber/rails' require 'webmock/cucumber' WebMock.allow_net_connect! -require Rails.root.join 'spec/monkeypatch' require Rails.root.join 'spec/factories' -require Rails.root.join 'spec/support/login' +require Rails.root.join 'spec/support/monkeypatch' +require Rails.root.join 'spec/support/login_helpers' require Rails.root.join 'spec/support/valid_commit' Capybara.default_selector = :css diff --git a/spec/api/issues_spec.rb b/spec/api/issues_spec.rb deleted file mode 100644 index f6d8e37..0000000 --- a/spec/api/issues_spec.rb +++ /dev/null @@ -1,71 +0,0 @@ -require 'spec_helper' - -describe Gitlab::API do - let(:user) { Factory :user } - let!(:project) { Factory :project, owner: user } - let!(:issue) { Factory :issue, author: user, assignee: user, project: project } - before { project.add_access(user, :read) } - - describe "GET /issues" do - it "should return authentication error" do - get "#{api_prefix}/issues" - response.status.should == 401 - end - - describe "authenticated GET /issues" do - it "should return an array of issues" do - get "#{api_prefix}/issues?private_token=#{user.private_token}" - response.status.should == 200 - json_response.should be_an Array - json_response.first['title'].should == issue.title - end - end - end - - describe "GET /projects/:id/issues" do - it "should return project issues" do - get "#{api_prefix}/projects/#{project.code}/issues?private_token=#{user.private_token}" - response.status.should == 200 - json_response.should be_an Array - json_response.first['title'].should == issue.title - end - end - - describe "GET /projects/:id/issues/:issue_id" do - it "should return a project issue by id" do - get "#{api_prefix}/projects/#{project.code}/issues/#{issue.id}?private_token=#{user.private_token}" - response.status.should == 200 - json_response['title'].should == issue.title - end - end - - describe "POST /projects/:id/issues" do - it "should create a new project issue" do - post "#{api_prefix}/projects/#{project.code}/issues?private_token=#{user.private_token}", - title: 'new issue', labels: 'label, label2' - response.status.should == 201 - json_response['title'].should == 'new issue' - json_response['description'].should be_nil - json_response['labels'].should == ['label', 'label2'] - end - end - - describe "PUT /projects/:id/issues/:issue_id" do - it "should update a project issue" do - put "#{api_prefix}/projects/#{project.code}/issues/#{issue.id}?private_token=#{user.private_token}", - title: 'updated title', labels: 'label2', closed: 1 - response.status.should == 200 - json_response['title'].should == 'updated title' - json_response['labels'].should == ['label2'] - json_response['closed'].should be_true - end - end - - describe "DELETE /projects/:id/issues/:issue_id" do - it "should delete a project issue" do - expect { - delete "#{api_prefix}/projects/#{project.code}/issues/#{issue.id}?private_token=#{user.private_token}" - }.to change { Issue.count }.by(-1) - end - end -end diff --git a/spec/api/projects_spec.rb b/spec/api/projects_spec.rb deleted file mode 100644 index ff45619..0000000 --- a/spec/api/projects_spec.rb +++ /dev/null @@ -1,136 +0,0 @@ -require 'spec_helper' - -describe Gitlab::API do - let(:user) { Factory :user } - let!(:project) { Factory :project, owner: user } - let!(:snippet) { Factory :snippet, author: user, project: project, title: 'example' } - before { project.add_access(user, :read) } - - describe "GET /projects" do - it "should return authentication error" do - get "#{api_prefix}/projects" - response.status.should == 401 - end - - describe "authenticated GET /projects" do - it "should return an array of projects" do - get "#{api_prefix}/projects?private_token=#{user.private_token}" - response.status.should == 200 - json_response.should be_an Array - json_response.first['name'].should == project.name - json_response.first['owner']['email'].should == user.email - end - end - end - - describe "GET /projects/:id" do - it "should return a project by id" do - get "#{api_prefix}/projects/#{project.id}?private_token=#{user.private_token}" - response.status.should == 200 - json_response['name'].should == project.name - json_response['owner']['email'].should == user.email - end - - it "should return a project by code name" do - get "#{api_prefix}/projects/#{project.code}?private_token=#{user.private_token}" - response.status.should == 200 - json_response['name'].should == project.name - end - - it "should return a 404 error if not found" do - get "#{api_prefix}/projects/42?private_token=#{user.private_token}" - response.status.should == 404 - json_response['message'].should == '404 Not found' - end - end - - describe "GET /projects/:id/repository/branches" do - it "should return an array of project branches" do - get "#{api_prefix}/projects/#{project.code}/repository/branches?private_token=#{user.private_token}" - response.status.should == 200 - json_response.should be_an Array - json_response.first['name'].should == project.repo.heads.sort_by(&:name).first.name - end - end - - describe "GET /projects/:id/repository/branches/:branch" do - it "should return the branch information for a single branch" do - get "#{api_prefix}/projects/#{project.code}/repository/branches/new_design?private_token=#{user.private_token}" - response.status.should == 200 - - json_response['name'].should == 'new_design' - json_response['commit']['id'].should == '621491c677087aa243f165eab467bfdfbee00be1' - end - end - - describe "GET /projects/:id/repository/tags" do - it "should return an array of project tags" do - get "#{api_prefix}/projects/#{project.code}/repository/tags?private_token=#{user.private_token}" - response.status.should == 200 - json_response.should be_an Array - json_response.first['name'].should == project.repo.tags.sort_by(&:name).reverse.first.name - end - end - - describe "GET /projects/:id/snippets/:snippet_id" do - it "should return a project snippet" do - get "#{api_prefix}/projects/#{project.code}/snippets/#{snippet.id}?private_token=#{user.private_token}" - response.status.should == 200 - json_response['title'].should == snippet.title - end - end - - describe "POST /projects/:id/snippets" do - it "should create a new project snippet" do - post "#{api_prefix}/projects/#{project.code}/snippets?private_token=#{user.private_token}", - title: 'api test', file_name: 'sample.rb', code: 'test' - response.status.should == 201 - json_response['title'].should == 'api test' - end - end - - describe "PUT /projects/:id/snippets" do - it "should update an existing project snippet" do - put "#{api_prefix}/projects/#{project.code}/snippets/#{snippet.id}?private_token=#{user.private_token}", - code: 'updated code' - response.status.should == 200 - json_response['title'].should == 'example' - snippet.reload.content.should == 'updated code' - end - end - - describe "DELETE /projects/:id/snippets/:snippet_id" do - it "should delete existing project snippet" do - expect { - delete "#{api_prefix}/projects/#{project.code}/snippets/#{snippet.id}?private_token=#{user.private_token}" - }.to change { Snippet.count }.by(-1) - end - end - - describe "GET /projects/:id/snippets/:snippet_id/raw" do - it "should get a raw project snippet" do - get "#{api_prefix}/projects/#{project.code}/snippets/#{snippet.id}/raw?private_token=#{user.private_token}" - response.status.should == 200 - end - end - - describe "GET /projects/:id/:sha/blob" do - it "should get the raw file contents" do - get "#{api_prefix}/projects/#{project.code}/repository/commits/master/blob?filepath=README.md&private_token=#{user.private_token}" - - response.status.should == 200 - end - - it "should return 404 for invalid branch_name" do - get "#{api_prefix}/projects/#{project.code}/repository/commits/invalid_branch_name/blob?filepath=README.md&private_token=#{user.private_token}" - - response.status.should == 404 - end - - it "should return 404 for invalid file" do - get "#{api_prefix}/projects/#{project.code}/repository/commits/master/blob?filepath=README.invalid&private_token=#{user.private_token}" - - response.status.should == 404 - end - end -end diff --git a/spec/api/users_spec.rb b/spec/api/users_spec.rb deleted file mode 100644 index 32b9379..0000000 --- a/spec/api/users_spec.rb +++ /dev/null @@ -1,37 +0,0 @@ -require 'spec_helper' - -describe Gitlab::API do - let(:user) { Factory :user } - - describe "GET /users" do - it "should return authentication error" do - get "#{api_prefix}/users" - response.status.should == 401 - end - - describe "authenticated GET /users" do - it "should return an array of users" do - get "#{api_prefix}/users?private_token=#{user.private_token}" - response.status.should == 200 - json_response.should be_an Array - json_response.first['email'].should == user.email - end - end - end - - describe "GET /users/:id" do - it "should return a user by id" do - get "#{api_prefix}/users/#{user.id}?private_token=#{user.private_token}" - response.status.should == 200 - json_response['email'].should == user.email - end - end - - describe "GET /user" do - it "should return current user" do - get "#{api_prefix}/user?private_token=#{user.private_token}" - response.status.should == 200 - json_response['email'].should == user.email - end - end -end diff --git a/spec/monkeypatch.rb b/spec/monkeypatch.rb deleted file mode 100644 index 855a31f..0000000 --- a/spec/monkeypatch.rb +++ /dev/null @@ -1,51 +0,0 @@ -# Stubbing Project <-> git host path -# create project using Factory only -class Project - def update_repository - true - end - - def destroy_repository - true - end - - def path_to_repo - File.join(Rails.root, "tmp", "tests", path) - end - - def satellite - @satellite ||= FakeSatellite.new - end -end - -class Key - def update_repository - true - end - - def repository_delete_key - true - end -end - -class UsersProject - def update_repository - true - end -end - -class FakeSatellite - def exists? - true - end - - def create - true - end -end - -class ProtectedBranch - def update_repository - true - end -end diff --git a/spec/requests/api/issues_spec.rb b/spec/requests/api/issues_spec.rb new file mode 100644 index 0000000..f6d8e37 --- /dev/null +++ b/spec/requests/api/issues_spec.rb @@ -0,0 +1,71 @@ +require 'spec_helper' + +describe Gitlab::API do + let(:user) { Factory :user } + let!(:project) { Factory :project, owner: user } + let!(:issue) { Factory :issue, author: user, assignee: user, project: project } + before { project.add_access(user, :read) } + + describe "GET /issues" do + it "should return authentication error" do + get "#{api_prefix}/issues" + response.status.should == 401 + end + + describe "authenticated GET /issues" do + it "should return an array of issues" do + get "#{api_prefix}/issues?private_token=#{user.private_token}" + response.status.should == 200 + json_response.should be_an Array + json_response.first['title'].should == issue.title + end + end + end + + describe "GET /projects/:id/issues" do + it "should return project issues" do + get "#{api_prefix}/projects/#{project.code}/issues?private_token=#{user.private_token}" + response.status.should == 200 + json_response.should be_an Array + json_response.first['title'].should == issue.title + end + end + + describe "GET /projects/:id/issues/:issue_id" do + it "should return a project issue by id" do + get "#{api_prefix}/projects/#{project.code}/issues/#{issue.id}?private_token=#{user.private_token}" + response.status.should == 200 + json_response['title'].should == issue.title + end + end + + describe "POST /projects/:id/issues" do + it "should create a new project issue" do + post "#{api_prefix}/projects/#{project.code}/issues?private_token=#{user.private_token}", + title: 'new issue', labels: 'label, label2' + response.status.should == 201 + json_response['title'].should == 'new issue' + json_response['description'].should be_nil + json_response['labels'].should == ['label', 'label2'] + end + end + + describe "PUT /projects/:id/issues/:issue_id" do + it "should update a project issue" do + put "#{api_prefix}/projects/#{project.code}/issues/#{issue.id}?private_token=#{user.private_token}", + title: 'updated title', labels: 'label2', closed: 1 + response.status.should == 200 + json_response['title'].should == 'updated title' + json_response['labels'].should == ['label2'] + json_response['closed'].should be_true + end + end + + describe "DELETE /projects/:id/issues/:issue_id" do + it "should delete a project issue" do + expect { + delete "#{api_prefix}/projects/#{project.code}/issues/#{issue.id}?private_token=#{user.private_token}" + }.to change { Issue.count }.by(-1) + end + end +end diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb new file mode 100644 index 0000000..ff45619 --- /dev/null +++ b/spec/requests/api/projects_spec.rb @@ -0,0 +1,136 @@ +require 'spec_helper' + +describe Gitlab::API do + let(:user) { Factory :user } + let!(:project) { Factory :project, owner: user } + let!(:snippet) { Factory :snippet, author: user, project: project, title: 'example' } + before { project.add_access(user, :read) } + + describe "GET /projects" do + it "should return authentication error" do + get "#{api_prefix}/projects" + response.status.should == 401 + end + + describe "authenticated GET /projects" do + it "should return an array of projects" do + get "#{api_prefix}/projects?private_token=#{user.private_token}" + response.status.should == 200 + json_response.should be_an Array + json_response.first['name'].should == project.name + json_response.first['owner']['email'].should == user.email + end + end + end + + describe "GET /projects/:id" do + it "should return a project by id" do + get "#{api_prefix}/projects/#{project.id}?private_token=#{user.private_token}" + response.status.should == 200 + json_response['name'].should == project.name + json_response['owner']['email'].should == user.email + end + + it "should return a project by code name" do + get "#{api_prefix}/projects/#{project.code}?private_token=#{user.private_token}" + response.status.should == 200 + json_response['name'].should == project.name + end + + it "should return a 404 error if not found" do + get "#{api_prefix}/projects/42?private_token=#{user.private_token}" + response.status.should == 404 + json_response['message'].should == '404 Not found' + end + end + + describe "GET /projects/:id/repository/branches" do + it "should return an array of project branches" do + get "#{api_prefix}/projects/#{project.code}/repository/branches?private_token=#{user.private_token}" + response.status.should == 200 + json_response.should be_an Array + json_response.first['name'].should == project.repo.heads.sort_by(&:name).first.name + end + end + + describe "GET /projects/:id/repository/branches/:branch" do + it "should return the branch information for a single branch" do + get "#{api_prefix}/projects/#{project.code}/repository/branches/new_design?private_token=#{user.private_token}" + response.status.should == 200 + + json_response['name'].should == 'new_design' + json_response['commit']['id'].should == '621491c677087aa243f165eab467bfdfbee00be1' + end + end + + describe "GET /projects/:id/repository/tags" do + it "should return an array of project tags" do + get "#{api_prefix}/projects/#{project.code}/repository/tags?private_token=#{user.private_token}" + response.status.should == 200 + json_response.should be_an Array + json_response.first['name'].should == project.repo.tags.sort_by(&:name).reverse.first.name + end + end + + describe "GET /projects/:id/snippets/:snippet_id" do + it "should return a project snippet" do + get "#{api_prefix}/projects/#{project.code}/snippets/#{snippet.id}?private_token=#{user.private_token}" + response.status.should == 200 + json_response['title'].should == snippet.title + end + end + + describe "POST /projects/:id/snippets" do + it "should create a new project snippet" do + post "#{api_prefix}/projects/#{project.code}/snippets?private_token=#{user.private_token}", + title: 'api test', file_name: 'sample.rb', code: 'test' + response.status.should == 201 + json_response['title'].should == 'api test' + end + end + + describe "PUT /projects/:id/snippets" do + it "should update an existing project snippet" do + put "#{api_prefix}/projects/#{project.code}/snippets/#{snippet.id}?private_token=#{user.private_token}", + code: 'updated code' + response.status.should == 200 + json_response['title'].should == 'example' + snippet.reload.content.should == 'updated code' + end + end + + describe "DELETE /projects/:id/snippets/:snippet_id" do + it "should delete existing project snippet" do + expect { + delete "#{api_prefix}/projects/#{project.code}/snippets/#{snippet.id}?private_token=#{user.private_token}" + }.to change { Snippet.count }.by(-1) + end + end + + describe "GET /projects/:id/snippets/:snippet_id/raw" do + it "should get a raw project snippet" do + get "#{api_prefix}/projects/#{project.code}/snippets/#{snippet.id}/raw?private_token=#{user.private_token}" + response.status.should == 200 + end + end + + describe "GET /projects/:id/:sha/blob" do + it "should get the raw file contents" do + get "#{api_prefix}/projects/#{project.code}/repository/commits/master/blob?filepath=README.md&private_token=#{user.private_token}" + + response.status.should == 200 + end + + it "should return 404 for invalid branch_name" do + get "#{api_prefix}/projects/#{project.code}/repository/commits/invalid_branch_name/blob?filepath=README.md&private_token=#{user.private_token}" + + response.status.should == 404 + end + + it "should return 404 for invalid file" do + get "#{api_prefix}/projects/#{project.code}/repository/commits/master/blob?filepath=README.invalid&private_token=#{user.private_token}" + + response.status.should == 404 + end + end +end diff --git a/spec/requests/api/users_spec.rb b/spec/requests/api/users_spec.rb new file mode 100644 index 0000000..32b9379 --- /dev/null +++ b/spec/requests/api/users_spec.rb @@ -0,0 +1,37 @@ +require 'spec_helper' + +describe Gitlab::API do + let(:user) { Factory :user } + + describe "GET /users" do + it "should return authentication error" do + get "#{api_prefix}/users" + response.status.should == 401 + end + + describe "authenticated GET /users" do + it "should return an array of users" do + get "#{api_prefix}/users?private_token=#{user.private_token}" + response.status.should == 200 + json_response.should be_an Array + json_response.first['email'].should == user.email + end + end + end + + describe "GET /users/:id" do + it "should return a user by id" do + get "#{api_prefix}/users/#{user.id}?private_token=#{user.private_token}" + response.status.should == 200 + json_response['email'].should == user.email + end + end + + describe "GET /user" do + it "should return current user" do + get "#{api_prefix}/user?private_token=#{user.private_token}" + response.status.should == 200 + json_response['email'].should == user.email + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index cd93147..d3635ed 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -9,10 +9,8 @@ require File.expand_path("../../config/environment", __FILE__) require 'rspec/rails' require 'capybara/rails' require 'capybara/rspec' -require 'capybara/dsl' require 'webmock/rspec' require 'factories' -require 'monkeypatch' require 'email_spec' require 'headless' @@ -23,10 +21,13 @@ Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} # Use capybara-webkit Capybara.javascript_driver = :webkit +WebMock.disable_net_connect!(allow_localhost: true) + RSpec.configure do |config| config.mock_with :rspec - config.include LoginMacros + config.include LoginHelpers, type: :request + config.include ApiHelpers, type: :request # If you're not using ActiveRecord, or you'd prefer not to run each of your # examples within a transaction, remove the following line or assign false @@ -38,35 +39,9 @@ RSpec.configure do |config| headless.start end - config.before :each, type: :integration do - DeviseSessionMock.disable - end - config.before do - if example.metadata[:js] - DatabaseCleaner.strategy = :truncation - Capybara::Selenium::Driver::DEFAULT_OPTIONS[:resynchronize] = true - else - DatabaseCleaner.strategy = :transaction - end - - DatabaseCleaner.start - - WebMock.disable_net_connect!(allow_localhost: true) - # !!! Observers disabled by default in tests - # - # Use next code to enable observers - # before(:each) { ActiveRecord::Base.observers.enable(:all) } - # - ActiveRecord::Base.observers.disable :all - end - - config.after do - DatabaseCleaner.clean + ActiveRecord::Base.observers.disable(:all) + # ActiveRecord::Base.observers.enable(:all) end - - config.include RSpec::Rails::RequestExampleGroup, type: :request, example_group: { - file_path: /spec\/api/ - } end diff --git a/spec/support/api.rb b/spec/support/api.rb deleted file mode 100644 index d363d8b..0000000 --- a/spec/support/api.rb +++ /dev/null @@ -1,7 +0,0 @@ -def api_prefix - "/api/#{Gitlab::API::VERSION}" -end - -def json_response - JSON.parse(response.body) -end diff --git a/spec/support/api_helpers.rb b/spec/support/api_helpers.rb new file mode 100644 index 0000000..e35d573 --- /dev/null +++ b/spec/support/api_helpers.rb @@ -0,0 +1,9 @@ +module ApiHelpers + def api_prefix + "/api/#{Gitlab::API::VERSION}" + end + + def json_response + JSON.parse(response.body) + end +end diff --git a/spec/support/db_cleaner.rb b/spec/support/db_cleaner.rb new file mode 100644 index 0000000..f1e072a --- /dev/null +++ b/spec/support/db_cleaner.rb @@ -0,0 +1,18 @@ +require 'database_cleaner' + +RSpec.configure do |config| + config.before do + if example.metadata[:js] + DatabaseCleaner.strategy = :truncation + Capybara::Selenium::Driver::DEFAULT_OPTIONS[:resynchronize] = true + else + DatabaseCleaner.strategy = :transaction + end + + DatabaseCleaner.start + end + + config.after do + DatabaseCleaner.clean + end +end diff --git a/spec/support/js_patch.rb b/spec/support/js_patch.rb deleted file mode 100644 index 0d4ab26..0000000 --- a/spec/support/js_patch.rb +++ /dev/null @@ -1,6 +0,0 @@ -module JsPatch - def confirm_js_popup - page.evaluate_script("window.alert = function(msg) { return true; }") - page.evaluate_script("window.confirm = function(msg) { return true; }") - end -end diff --git a/spec/support/login.rb b/spec/support/login.rb deleted file mode 100644 index 78a907b..0000000 --- a/spec/support/login.rb +++ /dev/null @@ -1,30 +0,0 @@ -module LoginMacros - def login_as role - @user = User.create(email: "user#{User.count}@mail.com", - name: "John Smith", - password: "123456", - password_confirmation: "123456", - skype: 'user_skype') - - if role == :admin - @user.admin = true - @user.save! - end - - visit new_user_session_path - fill_in "user_email", with: @user.email - fill_in "user_password", with: "123456" - click_button "Sign in" - end - - def login_with(user) - visit new_user_session_path - fill_in "user_email", with: user.email - fill_in "user_password", with: "123456" - click_button "Sign in" - end - - def logout - click_link "Logout" rescue nil - end -end diff --git a/spec/support/login_helpers.rb b/spec/support/login_helpers.rb new file mode 100644 index 0000000..769034e --- /dev/null +++ b/spec/support/login_helpers.rb @@ -0,0 +1,23 @@ +module LoginHelpers + # Internal: Create and log in as a user of the specified role + # + # role - User role (e.g., :admin, :user) + def login_as(role) + @user = Factory(role) + login_with(@user) + end + + # Internal: Login as the specified user + # + # user - User instance to login with + def login_with(user) + visit new_user_session_path + fill_in "user_email", with: user.email + fill_in "user_password", with: "123456" + click_button "Sign in" + end + + def logout + click_link "Logout" rescue nil + end +end diff --git a/spec/support/monkeypatch.rb b/spec/support/monkeypatch.rb new file mode 100644 index 0000000..855a31f --- /dev/null +++ b/spec/support/monkeypatch.rb @@ -0,0 +1,51 @@ +# Stubbing Project <-> git host path +# create project using Factory only +class Project + def update_repository + true + end + + def destroy_repository + true + end + + def path_to_repo + File.join(Rails.root, "tmp", "tests", path) + end + + def satellite + @satellite ||= FakeSatellite.new + end +end + +class Key + def update_repository + true + end + + def repository_delete_key + true + end +end + +class UsersProject + def update_repository + true + end +end + +class FakeSatellite + def exists? + true + end + + def create + true + end +end + +class ProtectedBranch + def update_repository + true + end +end diff --git a/spec/support/shared_examples.rb b/spec/support/shared_examples.rb deleted file mode 100644 index 9fd207d..0000000 --- a/spec/support/shared_examples.rb +++ /dev/null @@ -1,16 +0,0 @@ -shared_examples_for :project_side_pane do - subject { page } - it { should have_content((@project || project).name) } - it { should have_content("Commits") } - it { should have_content("Files") } -end - -shared_examples_for :tree_view do - subject { page } - - it "should have Tree View of project" do - should have_content("app") - should have_content("History") - should have_content("Gemfile") - end -end -- libgit2 0.21.2