Commit db69836319ebf716b31f52e818605df0816790e0

Authored by randx
1 parent 9cabe043

Move ProjectHooks from spec/requests to spinach

features/project/hooks.feature 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +Feature: Project Hooks
  2 + Background:
  3 + Given I sign in as a user
  4 + And I own project "Shop"
  5 +
  6 + Scenario: I should see hook list
  7 + Given project has hook
  8 + When I visit project hooks page
  9 + Then I should see project hook
  10 +
  11 + Scenario: I add new hook
  12 + Given I visit project hooks page
  13 + When I submit new hook
  14 + Then I should see newly created hook
  15 +
  16 + Scenario: I test hook
  17 + Given project has hook
  18 + And I visit project hooks page
  19 + When I click test hook button
  20 + Then hook should be triggered
  21 +
... ...
features/steps/project/project_hooks.rb 0 → 100644
... ... @@ -0,0 +1,36 @@
  1 +class ProjectHooks < Spinach::FeatureSteps
  2 + include SharedAuthentication
  3 + include SharedProject
  4 + include SharedPaths
  5 + include RSpec::Matchers
  6 + include RSpec::Mocks::ExampleMethods
  7 +
  8 + Given 'project has hook' do
  9 + @hook = Factory :project_hook, project: current_project
  10 + end
  11 +
  12 + Then 'I should see project hook' do
  13 + page.should have_content @hook.url
  14 + end
  15 +
  16 + When 'I submit new hook' do
  17 + @url = Faker::Internet.uri("http")
  18 + fill_in "hook_url", with: @url
  19 + expect { click_button "Add Web Hook" }.to change(ProjectHook, :count).by(1)
  20 + end
  21 +
  22 + Then 'I should see newly created hook' do
  23 + page.current_path.should == project_hooks_path(current_project)
  24 + page.should have_content(@url)
  25 + end
  26 +
  27 + When 'I click test hook button' do
  28 + test_hook_context = double(execute: true)
  29 + TestHookContext.should_receive(:new).and_return(test_hook_context)
  30 + click_link 'Test Hook'
  31 + end
  32 +
  33 + Then 'hook should be triggered' do
  34 + page.current_path.should == project_hooks_path(current_project)
  35 + end
  36 +end
... ...
features/steps/shared/paths.rb
... ... @@ -125,6 +125,10 @@ module SharedPaths
125 125 visit project_wiki_path(@project, :index)
126 126 end
127 127  
  128 + When 'I visit project hooks page' do
  129 + visit project_hooks_path(@project)
  130 + end
  131 +
128 132 # ----------------------------------------
129 133 # "Shop" Project
130 134 # ----------------------------------------
... ...
features/steps/shared/project.rb
... ... @@ -12,4 +12,8 @@ module SharedProject
12 12 @project = Factory :project, :name => "Shop"
13 13 @project.add_access(@user, :admin)
14 14 end
  15 +
  16 + def current_project
  17 + @project ||= Project.first
  18 + end
15 19 end
... ...
spec/requests/hooks_spec.rb
... ... @@ -1,43 +0,0 @@
1   -require 'spec_helper'
2   -
3   -describe "Hooks" do
4   - before do
5   - login_as :user
6   - @project = Factory :project
7   - @project.add_access(@user, :read, :admin)
8   - end
9   -
10   - describe "GET index" do
11   - it "should be available" do
12   - @hook = Factory :project_hook, project: @project
13   - visit project_hooks_path(@project)
14   - page.should have_content "Hooks"
15   - page.should have_content @hook.url
16   - end
17   - end
18   -
19   - describe "New Hook" do
20   - before do
21   - @url = Faker::Internet.uri("http")
22   - visit project_hooks_path(@project)
23   - fill_in "hook_url", with: @url
24   - expect { click_button "Add Web Hook" }.to change(ProjectHook, :count).by(1)
25   - end
26   -
27   - it "should open new team member popup" do
28   - page.current_path.should == project_hooks_path(@project)
29   - page.should have_content(@url)
30   - end
31   - end
32   -
33   - describe "Test" do
34   - before do
35   - @hook = Factory :project_hook, project: @project
36   - stub_request(:post, @hook.url)
37   - visit project_hooks_path(@project)
38   - click_link "Test Hook"
39   - end
40   -
41   - it { page.current_path.should == project_hooks_path(@project) }
42   - end
43   -end