capybara_discoball 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.rspec +1 -2
- data/.travis.yml +3 -1
- data/Appraisals +7 -0
- data/Rakefile +11 -9
- data/capybara_discoball.gemspec +5 -14
- data/gemfiles/capybara_2.gemfile +7 -0
- data/gemfiles/capybara_3.gemfile +7 -0
- data/lib/capybara_discoball/runner.rb +2 -5
- data/lib/capybara_discoball/version.rb +1 -1
- data/spec/black_box/rails_app_spec.rb +183 -0
- data/spec/lib/capybara_discoball_spec.rb +16 -0
- data/spec/spec_helper.rb +13 -16
- metadata +26 -117
- data/spec/acceptance/rails.feature +0 -57
- data/spec/step_definitions/rails_steps.rb +0 -72
- data/spec/support/rails_support.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cac015fc3b1bc5a40692f0ff66fd5080c555ea1c7070148af280d5bde5f8091a
|
4
|
+
data.tar.gz: 752a97d51f5e970851bdc1ca92f8ffa9d107a565c9a84fe1770050babc136e8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6fe4ffdf43b29278d96ff7a39c4e4f25e632c4f221f994b61d12115d0927f791fa33e5d6c594cd9a46fa716fd5039b0829519c03cc731bf4168443cef129d8a
|
7
|
+
data.tar.gz: 7f48ead23ef8dd6a735972d8170be4967649e38d2630d57009dc1ba686b0ef36198e83c91708e8e7c27185aa9ec37b435afe95477377a656b55e39e7a5872f96
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
-r turnip/rspec
|
1
|
+
--require spec_helper
|
data/.travis.yml
CHANGED
data/Appraisals
ADDED
data/Rakefile
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
-
require
|
2
|
-
require 'rspec/core/rake_task'
|
1
|
+
require "bundler/gem_tasks"
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
desc "Appraisals: Test different dependency versions"
|
4
|
+
task :run_appraisals do
|
5
|
+
sh("bundle exec appraisal install")
|
6
|
+
sh("bundle exec appraisal rspec --tag ~type:black_box")
|
8
7
|
end
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
begin
|
10
|
+
require "rspec/core/rake_task"
|
11
|
+
RSpec::Core::RakeTask.new(:spec)
|
12
|
+
task default: [:spec, :run_appraisals]
|
13
|
+
rescue LoadError
|
14
|
+
end
|
data/capybara_discoball.gemspec
CHANGED
@@ -23,21 +23,12 @@ present the Discoball.
|
|
23
23
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
24
24
|
s.require_paths = ["lib"]
|
25
25
|
|
26
|
-
s.add_dependency 'capybara', '
|
26
|
+
s.add_dependency 'capybara', '>= 2.7', '< 4'
|
27
27
|
|
28
|
+
s.add_development_dependency 'appraisal'
|
29
|
+
s.add_development_dependency 'jet_black', '~> 0.2'
|
30
|
+
s.add_development_dependency 'pry'
|
31
|
+
s.add_development_dependency 'rake'
|
28
32
|
s.add_development_dependency 'rspec'
|
29
|
-
s.add_development_dependency 'turnip', '~> 2.1'
|
30
|
-
s.add_development_dependency 'aruba'
|
31
33
|
s.add_development_dependency 'sinatra'
|
32
|
-
|
33
|
-
# Rails dependencies
|
34
|
-
s.add_development_dependency 'rails'
|
35
|
-
s.add_development_dependency 'thin'
|
36
|
-
s.add_development_dependency 'uglifier'
|
37
|
-
s.add_development_dependency 'sass-rails'
|
38
|
-
s.add_development_dependency 'coffee-rails'
|
39
|
-
s.add_development_dependency 'jquery-rails'
|
40
|
-
s.add_development_dependency 'rspec-rails'
|
41
|
-
s.add_development_dependency 'sqlite3'
|
42
|
-
s.add_development_dependency 'therubyracer'
|
43
34
|
end
|
@@ -22,13 +22,10 @@ module Capybara
|
|
22
22
|
|
23
23
|
def with_webrick_runner
|
24
24
|
default_server_process = Capybara.server
|
25
|
-
Capybara.
|
26
|
-
require "rack/handler/webrick"
|
27
|
-
Rack::Handler::WEBrick.run(app, Port: port, AccessLog: [], Logger: WEBrick::Log::new(nil, 0))
|
28
|
-
end
|
25
|
+
Capybara.server = :webrick
|
29
26
|
yield
|
30
27
|
ensure
|
31
|
-
Capybara.
|
28
|
+
Capybara.server = default_server_process
|
32
29
|
end
|
33
30
|
end
|
34
31
|
end
|
@@ -0,0 +1,183 @@
|
|
1
|
+
require "jet_black"
|
2
|
+
|
3
|
+
RSpec.describe "Using Discoball in a Rails app" do
|
4
|
+
let(:session) do
|
5
|
+
JetBlack::Session.new(options: { clean_bundler_env: true })
|
6
|
+
end
|
7
|
+
|
8
|
+
it "works with a block" do
|
9
|
+
create_rails_application
|
10
|
+
setup_discoball
|
11
|
+
setup_rspec_rails
|
12
|
+
install_success_api
|
13
|
+
|
14
|
+
setup_controller_action(<<~RUBY)
|
15
|
+
render plain: SuccessAPI.get
|
16
|
+
RUBY
|
17
|
+
|
18
|
+
setup_integration_spec(<<~RUBY)
|
19
|
+
visit "/successes"
|
20
|
+
expect(page).to have_content("success")
|
21
|
+
RUBY
|
22
|
+
|
23
|
+
setup_spec_supporter(<<-RUBY)
|
24
|
+
require "sinatra/base"
|
25
|
+
require "capybara_discoball"
|
26
|
+
require "success_api"
|
27
|
+
|
28
|
+
class FakeSuccess < Sinatra::Base
|
29
|
+
get("/") { "success" }
|
30
|
+
end
|
31
|
+
|
32
|
+
Capybara::Discoball.spin(FakeSuccess) do |server|
|
33
|
+
SuccessAPI.endpoint_url = server.url
|
34
|
+
end
|
35
|
+
RUBY
|
36
|
+
|
37
|
+
expect(run_integration_test).
|
38
|
+
to be_a_success.and have_stdout(/1 example, 0 failures/)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "works without a block" do
|
42
|
+
create_rails_application
|
43
|
+
setup_discoball
|
44
|
+
setup_rspec_rails
|
45
|
+
install_success_api
|
46
|
+
|
47
|
+
setup_controller_action(<<~RUBY)
|
48
|
+
render :plain => SuccessAPI.get
|
49
|
+
RUBY
|
50
|
+
|
51
|
+
setup_integration_spec(<<~RUBY)
|
52
|
+
visit "/successes"
|
53
|
+
expect(page).to have_content("success")
|
54
|
+
RUBY
|
55
|
+
|
56
|
+
setup_spec_supporter(<<-RUBY)
|
57
|
+
require "sinatra/base"
|
58
|
+
require "capybara_discoball"
|
59
|
+
require "success_api"
|
60
|
+
|
61
|
+
class FakeSuccess < Sinatra::Base
|
62
|
+
get("/") { "success" }
|
63
|
+
end
|
64
|
+
|
65
|
+
SuccessAPI.endpoint_url = Capybara::Discoball.spin(FakeSuccess)
|
66
|
+
RUBY
|
67
|
+
|
68
|
+
expect(run_integration_test).
|
69
|
+
to be_a_success.and have_stdout("1 example, 0 failures")
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
def create_rails_application
|
75
|
+
session.create_file("Gemfile", <<~RUBY)
|
76
|
+
source "http://rubygems.org"
|
77
|
+
|
78
|
+
gem "rails"
|
79
|
+
RUBY
|
80
|
+
|
81
|
+
session.run("bundle install")
|
82
|
+
|
83
|
+
rails_new_cmd = [
|
84
|
+
"bundle exec rails new .",
|
85
|
+
"--skip-bundle",
|
86
|
+
"--skip-test",
|
87
|
+
"--skip-coffee",
|
88
|
+
"--skip-turbolinks",
|
89
|
+
"--skip-spring",
|
90
|
+
"--skip-bootsnap",
|
91
|
+
"--force",
|
92
|
+
].join(" ")
|
93
|
+
|
94
|
+
expect(session.run(rails_new_cmd)).
|
95
|
+
to be_a_success.and have_stdout("force Gemfile")
|
96
|
+
end
|
97
|
+
|
98
|
+
def setup_discoball
|
99
|
+
discoball_path = File.expand_path("../../", __dir__)
|
100
|
+
|
101
|
+
session.append_to_file "Gemfile", <<~RUBY
|
102
|
+
gem "capybara_discoball", path: "#{discoball_path}"
|
103
|
+
gem "sinatra"
|
104
|
+
RUBY
|
105
|
+
|
106
|
+
expect(session.run("bundle install")).
|
107
|
+
to be_a_success.and have_stdout(/capybara_discoball .* from source at/)
|
108
|
+
end
|
109
|
+
|
110
|
+
def setup_rspec_rails
|
111
|
+
session.append_to_file("Gemfile", <<~RUBY)
|
112
|
+
gem "rspec-rails"
|
113
|
+
RUBY
|
114
|
+
|
115
|
+
session.run("bundle install")
|
116
|
+
|
117
|
+
expect(session.run("bundle exec rails g rspec:install")).
|
118
|
+
to be_a_success.and have_stdout("create spec/rails_helper.rb")
|
119
|
+
end
|
120
|
+
|
121
|
+
def install_success_api
|
122
|
+
session.create_file("app/models/success_api.rb", <<~RUBY)
|
123
|
+
require "net/http"
|
124
|
+
require "uri"
|
125
|
+
|
126
|
+
class SuccessAPI
|
127
|
+
@@endpoint_url = "http://yahoo.com/"
|
128
|
+
|
129
|
+
def self.endpoint_url=(endpoint_url)
|
130
|
+
@@endpoint_url = endpoint_url
|
131
|
+
end
|
132
|
+
|
133
|
+
def self.get
|
134
|
+
Net::HTTP.get(uri)
|
135
|
+
end
|
136
|
+
|
137
|
+
private
|
138
|
+
|
139
|
+
def self.uri
|
140
|
+
URI.parse(@@endpoint_url)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
RUBY
|
144
|
+
end
|
145
|
+
|
146
|
+
def setup_controller_action(content)
|
147
|
+
session.create_file("app/controllers/whatever_controller.rb", <<~RUBY)
|
148
|
+
class WhateverController < ApplicationController
|
149
|
+
def the_action
|
150
|
+
#{content}
|
151
|
+
end
|
152
|
+
end
|
153
|
+
RUBY
|
154
|
+
|
155
|
+
session.create_file("config/routes.rb", <<~RUBY)
|
156
|
+
Rails.application.routes.draw do
|
157
|
+
get "/successes", to: "whatever#the_action"
|
158
|
+
end
|
159
|
+
RUBY
|
160
|
+
end
|
161
|
+
|
162
|
+
def setup_integration_spec(spec_content)
|
163
|
+
session.create_file("spec/integration/whatever_spec.rb", <<~RUBY)
|
164
|
+
require "rails_helper"
|
165
|
+
require "capybara/rspec"
|
166
|
+
require "support/whatever"
|
167
|
+
|
168
|
+
RSpec.describe "whatever", type: :feature do
|
169
|
+
it "does the thing" do
|
170
|
+
#{spec_content}
|
171
|
+
end
|
172
|
+
end
|
173
|
+
RUBY
|
174
|
+
end
|
175
|
+
|
176
|
+
def setup_spec_supporter(support_content)
|
177
|
+
session.create_file("spec/support/whatever.rb", support_content)
|
178
|
+
end
|
179
|
+
|
180
|
+
def run_integration_test
|
181
|
+
session.run("bundle exec rspec spec/integration")
|
182
|
+
end
|
183
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "capybara_discoball"
|
2
|
+
require "net/http"
|
3
|
+
require "sinatra/base"
|
4
|
+
|
5
|
+
RSpec.describe Capybara::Discoball do
|
6
|
+
it "spins up a server" do
|
7
|
+
example_discoball_app = Class.new(Sinatra::Base) do
|
8
|
+
get("/") { "success" }
|
9
|
+
end
|
10
|
+
|
11
|
+
server_url = described_class.spin(example_discoball_app)
|
12
|
+
response = Net::HTTP.get(URI(server_url))
|
13
|
+
|
14
|
+
expect(response).to eq "success"
|
15
|
+
end
|
16
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,21 +1,18 @@
|
|
1
|
-
require
|
2
|
-
require 'turnip'
|
3
|
-
require 'aruba/api'
|
4
|
-
Dir["spec/{support,step_definitions}/**/*.rb"].each { |f| require File.expand_path(f) }
|
1
|
+
require "jet_black/rspec"
|
5
2
|
|
6
3
|
RSpec.configure do |config|
|
7
|
-
config.
|
8
|
-
|
4
|
+
config.expect_with :rspec do |expectations|
|
5
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
6
|
+
end
|
9
7
|
|
10
|
-
config.
|
11
|
-
|
12
|
-
if ENV['DEBUG']
|
13
|
-
@puts = true
|
14
|
-
@announce_stdout = true
|
15
|
-
@announce_stderr = true
|
16
|
-
@announce_cmd = true
|
17
|
-
@announce_dir = true
|
18
|
-
@announce_env = true
|
19
|
-
end
|
8
|
+
config.mock_with :rspec do |mocks|
|
9
|
+
mocks.verify_partial_doubles = true
|
20
10
|
end
|
11
|
+
|
12
|
+
config.shared_context_metadata_behavior = :apply_to_host_groups
|
13
|
+
config.disable_monkey_patching!
|
14
|
+
config.warnings = true
|
15
|
+
|
16
|
+
config.order = :random
|
17
|
+
Kernel.srand config.seed
|
21
18
|
end
|
metadata
CHANGED
@@ -1,31 +1,37 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capybara_discoball
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Burns
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.7'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '4'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '2.7'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '4'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
34
|
+
name: appraisal
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - ">="
|
@@ -39,35 +45,21 @@ dependencies:
|
|
39
45
|
- !ruby/object:Gem::Version
|
40
46
|
version: '0'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
48
|
+
name: jet_black
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version: '2
|
53
|
+
version: '0.2'
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
58
|
- - "~>"
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version: '2
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: aruba
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
60
|
+
version: '0.2'
|
69
61
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
62
|
+
name: pry
|
71
63
|
requirement: !ruby/object:Gem::Requirement
|
72
64
|
requirements:
|
73
65
|
- - ">="
|
@@ -81,7 +73,7 @@ dependencies:
|
|
81
73
|
- !ruby/object:Gem::Version
|
82
74
|
version: '0'
|
83
75
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
76
|
+
name: rake
|
85
77
|
requirement: !ruby/object:Gem::Requirement
|
86
78
|
requirements:
|
87
79
|
- - ">="
|
@@ -95,91 +87,7 @@ dependencies:
|
|
95
87
|
- !ruby/object:Gem::Version
|
96
88
|
version: '0'
|
97
89
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: uglifier
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: sass-rails
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: coffee-rails
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - ">="
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: jquery-rails
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: rspec-rails
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: sqlite3
|
90
|
+
name: rspec
|
183
91
|
requirement: !ruby/object:Gem::Requirement
|
184
92
|
requirements:
|
185
93
|
- - ">="
|
@@ -193,7 +101,7 @@ dependencies:
|
|
193
101
|
- !ruby/object:Gem::Version
|
194
102
|
version: '0'
|
195
103
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
104
|
+
name: sinatra
|
197
105
|
requirement: !ruby/object:Gem::Requirement
|
198
106
|
requirements:
|
199
107
|
- - ">="
|
@@ -220,6 +128,7 @@ files:
|
|
220
128
|
- ".gitignore"
|
221
129
|
- ".rspec"
|
222
130
|
- ".travis.yml"
|
131
|
+
- Appraisals
|
223
132
|
- CONTRIBUTING.md
|
224
133
|
- Gemfile
|
225
134
|
- LICENSE
|
@@ -227,14 +136,15 @@ files:
|
|
227
136
|
- README.md
|
228
137
|
- Rakefile
|
229
138
|
- capybara_discoball.gemspec
|
139
|
+
- gemfiles/capybara_2.gemfile
|
140
|
+
- gemfiles/capybara_3.gemfile
|
230
141
|
- lib/capybara_discoball.rb
|
231
142
|
- lib/capybara_discoball/runner.rb
|
232
143
|
- lib/capybara_discoball/server.rb
|
233
144
|
- lib/capybara_discoball/version.rb
|
234
|
-
- spec/
|
145
|
+
- spec/black_box/rails_app_spec.rb
|
146
|
+
- spec/lib/capybara_discoball_spec.rb
|
235
147
|
- spec/spec_helper.rb
|
236
|
-
- spec/step_definitions/rails_steps.rb
|
237
|
-
- spec/support/rails_support.rb
|
238
148
|
homepage: ''
|
239
149
|
licenses: []
|
240
150
|
metadata: {}
|
@@ -254,12 +164,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
254
164
|
version: '0'
|
255
165
|
requirements: []
|
256
166
|
rubyforge_project: capybara_discoball
|
257
|
-
rubygems_version: 2.
|
167
|
+
rubygems_version: 2.7.6
|
258
168
|
signing_key:
|
259
169
|
specification_version: 4
|
260
170
|
summary: Spin up an external server just for Capybara
|
261
171
|
test_files:
|
262
|
-
- spec/
|
172
|
+
- spec/black_box/rails_app_spec.rb
|
173
|
+
- spec/lib/capybara_discoball_spec.rb
|
263
174
|
- spec/spec_helper.rb
|
264
|
-
- spec/step_definitions/rails_steps.rb
|
265
|
-
- spec/support/rails_support.rb
|
@@ -1,57 +0,0 @@
|
|
1
|
-
Feature: Rails
|
2
|
-
|
3
|
-
@disable-bundler
|
4
|
-
Scenario: Using Discoball in a Rails app with a block
|
5
|
-
Given I have a Rails application with Discoball installed
|
6
|
-
And the SuccessAPI is installed
|
7
|
-
And the following integration spec:
|
8
|
-
"""
|
9
|
-
visit '/successes'
|
10
|
-
expect(page).to have_content('success')
|
11
|
-
"""
|
12
|
-
And the following controller action:
|
13
|
-
"""
|
14
|
-
render :text => SuccessAPI.get
|
15
|
-
"""
|
16
|
-
And the following spec supporter:
|
17
|
-
"""
|
18
|
-
require 'sinatra/base'
|
19
|
-
require 'capybara_discoball'
|
20
|
-
require 'success_api'
|
21
|
-
|
22
|
-
class FakeSuccess < Sinatra::Base
|
23
|
-
get('/') { 'success' }
|
24
|
-
end
|
25
|
-
|
26
|
-
Capybara::Discoball.spin(FakeSuccess) do |server|
|
27
|
-
SuccessAPI.endpoint_url = server.url
|
28
|
-
end
|
29
|
-
"""
|
30
|
-
Then the integration spec should pass
|
31
|
-
|
32
|
-
@disable-bundler
|
33
|
-
Scenario: Using Discoball in a Rails app without a block
|
34
|
-
Given I have a Rails application with Discoball installed
|
35
|
-
And the SuccessAPI is installed
|
36
|
-
And the following integration spec:
|
37
|
-
"""
|
38
|
-
visit '/successes'
|
39
|
-
expect(page).to have_content('success')
|
40
|
-
"""
|
41
|
-
And the following controller action:
|
42
|
-
"""
|
43
|
-
render :text => SuccessAPI.get
|
44
|
-
"""
|
45
|
-
And the following spec supporter:
|
46
|
-
"""
|
47
|
-
require 'sinatra/base'
|
48
|
-
require 'capybara_discoball'
|
49
|
-
require 'success_api'
|
50
|
-
|
51
|
-
class FakeSuccess < Sinatra::Base
|
52
|
-
get('/') { 'success' }
|
53
|
-
end
|
54
|
-
|
55
|
-
SuccessAPI.endpoint_url = Capybara::Discoball.spin(FakeSuccess)
|
56
|
-
"""
|
57
|
-
Then the integration spec should pass
|
@@ -1,72 +0,0 @@
|
|
1
|
-
step %{I have a Rails application with Discoball installed} do
|
2
|
-
create_rails_app
|
3
|
-
append_to_file("Gemfile", <<-GEMS)
|
4
|
-
gem 'rspec-rails'
|
5
|
-
gem 'capybara'
|
6
|
-
GEMS
|
7
|
-
run_simple "bundle exec rails generate rspec:install"
|
8
|
-
end
|
9
|
-
|
10
|
-
step %{the following controller action:} do |action_content|
|
11
|
-
write_file("app/controllers/whatever_controller.rb", <<-CONTROLLER)
|
12
|
-
class WhateverController < ApplicationController
|
13
|
-
def the_action
|
14
|
-
#{action_content}
|
15
|
-
end
|
16
|
-
end
|
17
|
-
CONTROLLER
|
18
|
-
write_file("config/routes.rb", <<-ROUTES)
|
19
|
-
Testapp::Application.routes.draw do
|
20
|
-
get '/successes', :to => 'whatever#the_action'
|
21
|
-
end
|
22
|
-
ROUTES
|
23
|
-
end
|
24
|
-
|
25
|
-
step %{the following integration spec:} do |spec_content|
|
26
|
-
write_file("spec/integration/whatever_spec.rb", <<-SPEC)
|
27
|
-
require 'rails_helper'
|
28
|
-
require 'capybara/rspec'
|
29
|
-
require 'support/whatever'
|
30
|
-
|
31
|
-
RSpec.describe "whatever", :type => :feature do
|
32
|
-
it "does the thing" do
|
33
|
-
#{spec_content}
|
34
|
-
end
|
35
|
-
end
|
36
|
-
SPEC
|
37
|
-
end
|
38
|
-
|
39
|
-
step %{the following spec supporter:} do |support_content|
|
40
|
-
write_file("spec/support/whatever.rb", support_content)
|
41
|
-
end
|
42
|
-
|
43
|
-
step %{the integration spec should pass} do
|
44
|
-
run_simple("bundle exec rspec spec/integration", false)
|
45
|
-
expect(last_command_started).to have_output(/1 example, 0 failures/)
|
46
|
-
expect(last_command_started).to have_exit_status(0)
|
47
|
-
end
|
48
|
-
|
49
|
-
step %{the SuccessAPI is installed} do
|
50
|
-
write_file('app/models/success_api.rb', <<-SUCCESS_API)
|
51
|
-
require 'net/http'
|
52
|
-
require 'uri'
|
53
|
-
|
54
|
-
class SuccessAPI
|
55
|
-
@@endpoint_url = 'http://yahoo.com/'
|
56
|
-
|
57
|
-
def self.endpoint_url=(endpoint_url)
|
58
|
-
@@endpoint_url = endpoint_url
|
59
|
-
end
|
60
|
-
|
61
|
-
def self.get
|
62
|
-
Net::HTTP.get(uri)
|
63
|
-
end
|
64
|
-
|
65
|
-
private
|
66
|
-
|
67
|
-
def self.uri
|
68
|
-
URI.parse(@@endpoint_url)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
SUCCESS_API
|
72
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module RailsSupport
|
2
|
-
def create_rails_app
|
3
|
-
setup_aruba
|
4
|
-
cd(".") { FileUtils.rm_rf "testapp" }
|
5
|
-
run_simple "bundle exec rails new testapp --skip-bundle --skip-test-unit"
|
6
|
-
cd "testapp"
|
7
|
-
append_to_file("Gemfile", <<-GEMS)
|
8
|
-
gem "capybara_discoball", :path => "../../.."
|
9
|
-
gem "thin"
|
10
|
-
gem "therubyracer"
|
11
|
-
gem "sinatra"
|
12
|
-
GEMS
|
13
|
-
end
|
14
|
-
end
|