hyper-spec 0.1.1 → 0.1.2
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 +4 -4
- data/.gitignore +7 -0
- data/.rubocop.yml +107 -0
- data/Gemfile.lock +31 -20
- data/README.md +5 -0
- data/hyper-spec.gemspec +49 -45
- data/lib/hyper-spec.rb +54 -252
- data/lib/hyper-spec/component_test_helpers.rb +306 -0
- data/lib/hyper-spec/lolex.rb +66 -0
- data/lib/hyper-spec/{engine.rb → rails/engine.rb} +1 -0
- data/lib/hyper-spec/time_cop.rb +30 -99
- data/lib/hyper-spec/version.rb +1 -1
- data/lib/hyper-spec/wait_for_ajax.rb +30 -0
- data/lib/react/isomorphic_helpers.rb +7 -0
- data/lib/react/top_level_rails_component.rb +104 -0
- data/lib/selenium/web_driver/firefox/profile.rb +55 -0
- data/vendor/assets/javascripts/time_cop.rb +7 -10
- metadata +97 -75
- data/play.rb +0 -0
data/lib/hyper-spec/version.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
module HyperSpec
|
2
|
+
module WaitForAjax
|
3
|
+
def wait_for_ajax
|
4
|
+
Timeout.timeout(Capybara.default_max_wait_time) do
|
5
|
+
loop do
|
6
|
+
sleep 0.25
|
7
|
+
break if finished_all_ajax_requests?
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def running?
|
13
|
+
result = page.evaluate_script('(function(active) { return active; })(jQuery.active)')
|
14
|
+
result && !result.zero?
|
15
|
+
rescue Exception => e
|
16
|
+
puts "wait_for_ajax failed while testing state of jQuery.active: #{e}"
|
17
|
+
end
|
18
|
+
|
19
|
+
def finished_all_ajax_requests?
|
20
|
+
unless running?
|
21
|
+
sleep 0.25 # this was 1 second, not sure if its necessary to be so long...
|
22
|
+
!running?
|
23
|
+
end
|
24
|
+
rescue Capybara::NotSupportedByDriverError
|
25
|
+
true
|
26
|
+
rescue Exception => e
|
27
|
+
e.message == 'jQuery is not defined'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
module React
|
2
|
+
class TopLevelRailsComponent
|
3
|
+
class << self
|
4
|
+
attr_accessor :event_history
|
5
|
+
|
6
|
+
def callback_history_for(proc_name)
|
7
|
+
event_history[proc_name]
|
8
|
+
end
|
9
|
+
|
10
|
+
def last_callback_for(proc_name)
|
11
|
+
event_history[proc_name].last
|
12
|
+
end
|
13
|
+
|
14
|
+
def clear_callback_history_for(proc_name)
|
15
|
+
event_history[proc_name] = []
|
16
|
+
end
|
17
|
+
|
18
|
+
def event_history_for(event_name)
|
19
|
+
event_history["_on#{event_name.event_camelize}"]
|
20
|
+
end
|
21
|
+
|
22
|
+
def last_event_for(event_name)
|
23
|
+
event_history["_on#{event_name.event_camelize}"].last
|
24
|
+
end
|
25
|
+
|
26
|
+
def clear_event_history_for(event_name)
|
27
|
+
event_history["_on#{event_name.event_camelize}"] = []
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def component
|
32
|
+
return @component if @component
|
33
|
+
paths_searched = []
|
34
|
+
|
35
|
+
if params.component_name.start_with?('::')
|
36
|
+
paths_searched << params.component_name.gsub(/^\:\:/, '')
|
37
|
+
|
38
|
+
@component =
|
39
|
+
begin
|
40
|
+
params.component_name.gsub(/^\:\:/, '').split('::')
|
41
|
+
.inject(Module) { |scope, next_const| scope.const_get(next_const, false) }
|
42
|
+
rescue
|
43
|
+
nil
|
44
|
+
end
|
45
|
+
|
46
|
+
return @component if @component && @component.method_defined?(:render)
|
47
|
+
else
|
48
|
+
self.class.search_path.each do |path|
|
49
|
+
# try each path + params.controller + params.component_name
|
50
|
+
paths_searched << "#{path.name + '::' unless path == Module}"\
|
51
|
+
"#{params.controller}::#{params.component_name}"
|
52
|
+
|
53
|
+
@component =
|
54
|
+
begin
|
55
|
+
[params.controller, params.component_name]
|
56
|
+
.join('::').split('::')
|
57
|
+
.inject(path) { |scope, next_const| scope.const_get(next_const, false) }
|
58
|
+
rescue
|
59
|
+
nil
|
60
|
+
end
|
61
|
+
|
62
|
+
return @component if @component && @component.method_defined?(:render)
|
63
|
+
end
|
64
|
+
|
65
|
+
self.class.search_path.each do |path|
|
66
|
+
# then try each path + params.component_name
|
67
|
+
paths_searched << "#{path.name + '::' unless path == Module}#{params.component_name}"
|
68
|
+
@component =
|
69
|
+
begin
|
70
|
+
params.component_name.to_s.split('::')
|
71
|
+
.inject(path) { |scope, next_const| scope.const_get(next_const, false) }
|
72
|
+
rescue
|
73
|
+
nil
|
74
|
+
end
|
75
|
+
|
76
|
+
return @component if @component && @component.method_defined?(:render)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
@component = nil
|
81
|
+
|
82
|
+
raise "Could not find component class '#{params.component_name}' "\
|
83
|
+
"for params.controller '#{params.controller}' in any component directory. "\
|
84
|
+
"Tried [#{paths_searched.join(', ')}]"
|
85
|
+
end
|
86
|
+
|
87
|
+
before_mount do
|
88
|
+
TopLevelRailsComponent.event_history = Hash.new { |h, k| h[k] = [] }
|
89
|
+
@render_params = params.render_params
|
90
|
+
component.validator.rules.each do |name, rules|
|
91
|
+
next unless rules[:type] == Proc
|
92
|
+
|
93
|
+
TopLevelRailsComponent.event_history[name] = []
|
94
|
+
@render_params[name] = lambda do |*args|
|
95
|
+
TopLevelRailsComponent.event_history[name] << args
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def render
|
101
|
+
present component, @render_params
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Selenium
|
2
|
+
module WebDriver
|
3
|
+
module Firefox
|
4
|
+
class Profile
|
5
|
+
class << self
|
6
|
+
attr_accessor :firebug_version
|
7
|
+
|
8
|
+
def firebug_version
|
9
|
+
@firebug_version ||= '2.0.13-fx'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def frame_position
|
14
|
+
@frame_position ||= 'detached'
|
15
|
+
end
|
16
|
+
|
17
|
+
def frame_position=(position)
|
18
|
+
@frame_position = %w(left right top detached).detect do |side|
|
19
|
+
position && position[0].downcase == side[0]
|
20
|
+
end || 'detached'
|
21
|
+
end
|
22
|
+
|
23
|
+
def enable_firebug(version = nil)
|
24
|
+
version ||= Selenium::WebDriver::Firefox::Profile.firebug_version
|
25
|
+
add_extension(File.expand_path("../../../../bin/firebug-#{version}.xpi", __FILE__))
|
26
|
+
|
27
|
+
# For some reason, Firebug seems to trigger the Firefox plugin check
|
28
|
+
# (navigating to https://www.mozilla.org/en-US/plugincheck/ at startup).
|
29
|
+
# This prevents it. See http://code.google.com/p/selenium/issues/detail?id=4619.
|
30
|
+
self['extensions.blocklist.enabled'] = false
|
31
|
+
|
32
|
+
# Prevent "Welcome!" tab
|
33
|
+
self['extensions.firebug.showFirstRunPage'] = false
|
34
|
+
|
35
|
+
# Enable for all sites.
|
36
|
+
self['extensions.firebug.allPagesActivation'] = 'on'
|
37
|
+
|
38
|
+
# Enable all features.
|
39
|
+
%w(console net script).each do |feature|
|
40
|
+
self["extensions.firebug.#{feature}.enableSites"] = true
|
41
|
+
end
|
42
|
+
|
43
|
+
# Closed by default, will open detached.
|
44
|
+
self['extensions.firebug.framePosition'] = frame_position
|
45
|
+
self['extensions.firebug.previousPlacement'] = 3
|
46
|
+
self['extensions.firebug.defaultPanelName'] = 'console'
|
47
|
+
|
48
|
+
# Disable native "Inspect Element" menu item.
|
49
|
+
self['devtools.inspector.enabled'] = false
|
50
|
+
self['extensions.firebug.hideDefaultInspector'] = true
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -38,7 +38,6 @@ if RUBY_ENGINE == 'opal'
|
|
38
38
|
mock_elapsed_time = mock_clock - @mock_start_time
|
39
39
|
|
40
40
|
ticks = real_elapsed_time * @scale - mock_elapsed_time
|
41
|
-
#puts "ticking... #{real_clock}: #{Time.now} + #{ticks / 1000} = #{Time.now + ticks/1000}"
|
42
41
|
|
43
42
|
`#{@lolex}.tick(#{ticks.to_i})`
|
44
43
|
nil
|
@@ -53,21 +52,22 @@ if RUBY_ENGINE == 'opal'
|
|
53
52
|
#{@resolution}
|
54
53
|
)
|
55
54
|
}
|
56
|
-
|
55
|
+
ticker
|
57
56
|
end
|
58
57
|
|
59
58
|
def update_lolex(time, scale, resolution)
|
60
|
-
#puts "update_lolex(#{time}, #{scale}, #{resolution}) time.to_f: #{(time.to_f*1000)}"
|
61
59
|
`#{@lolex}.uninstall()` && return if scale.nil?
|
62
60
|
@mock_start_time = time.to_f * 1000
|
61
|
+
|
63
62
|
if @lolex
|
64
63
|
`#{@lolex}['_clearInterval'].call(window, #{@ticker})` if @ticker
|
65
64
|
@real_start_time = `(new #{@lolex}['_Date']).getTime()`
|
66
|
-
`#{@lolex}.tick(#{@mock_start_time-Time.now.to_f * 1000})`
|
65
|
+
`#{@lolex}.tick(#{@mock_start_time - Time.now.to_f * 1000})`
|
67
66
|
else
|
68
67
|
@real_start_time = Time.now.to_f * 1000
|
69
68
|
@lolex = `lolex.install(window, #{@mock_start_time})`
|
70
69
|
end
|
70
|
+
|
71
71
|
@scale = scale
|
72
72
|
@resolution = resolution
|
73
73
|
@ticker = create_ticker
|
@@ -77,6 +77,8 @@ if RUBY_ENGINE == 'opal'
|
|
77
77
|
end
|
78
78
|
|
79
79
|
else
|
80
|
+
require 'timecop'
|
81
|
+
|
80
82
|
# Interface to the Lolex package running on the client side
|
81
83
|
# Below we will monkey patch Timecop to call these methods
|
82
84
|
class Lolex
|
@@ -138,19 +140,14 @@ else
|
|
138
140
|
|
139
141
|
def run_pending_evaluations
|
140
142
|
return if pending_evaluations.empty?
|
141
|
-
@capybara_page.evaluate_ruby(pending_evaluations.collect
|
142
|
-
block.call
|
143
|
-
end.join("\n"))
|
143
|
+
@capybara_page.evaluate_ruby(pending_evaluations.collect(&:call).join("\n"))
|
144
144
|
@pending_evaluations ||= []
|
145
145
|
end
|
146
146
|
end
|
147
147
|
end
|
148
148
|
|
149
|
-
require 'timecop'
|
150
|
-
|
151
149
|
# Monkey patches to call our Lolex interface
|
152
150
|
class Timecop
|
153
|
-
|
154
151
|
private
|
155
152
|
|
156
153
|
def travel(mock_type, *args, &block)
|
metadata
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyper-spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- catmando
|
8
|
+
- adamcreekroad
|
8
9
|
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
@@ -24,20 +25,6 @@ dependencies:
|
|
24
25
|
- - "~>"
|
25
26
|
- !ruby/object:Gem::Version
|
26
27
|
version: '1.12'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '10.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '10.0'
|
41
28
|
- !ruby/object:Gem::Dependency
|
42
29
|
name: hyper-react
|
43
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,27 +32,13 @@ dependencies:
|
|
45
32
|
- - ">="
|
46
33
|
- !ruby/object:Gem::Version
|
47
34
|
version: 0.10.0
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 0.10.0
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec-rails
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
35
|
type: :development
|
63
36
|
prerelease: false
|
64
37
|
version_requirements: !ruby/object:Gem::Requirement
|
65
38
|
requirements:
|
66
39
|
- - ">="
|
67
40
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
41
|
+
version: 0.10.0
|
69
42
|
- !ruby/object:Gem::Dependency
|
70
43
|
name: rails
|
71
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,35 +54,35 @@ dependencies:
|
|
81
54
|
- !ruby/object:Gem::Version
|
82
55
|
version: 5.0.0
|
83
56
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
57
|
+
name: rake
|
85
58
|
requirement: !ruby/object:Gem::Requirement
|
86
59
|
requirements:
|
87
60
|
- - "~>"
|
88
61
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
62
|
+
version: '10.0'
|
90
63
|
type: :development
|
91
64
|
prerelease: false
|
92
65
|
version_requirements: !ruby/object:Gem::Requirement
|
93
66
|
requirements:
|
94
67
|
- - "~>"
|
95
68
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
69
|
+
version: '10.0'
|
97
70
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
71
|
+
name: react-rails
|
99
72
|
requirement: !ruby/object:Gem::Requirement
|
100
73
|
requirements:
|
101
|
-
- - "
|
74
|
+
- - "<"
|
102
75
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
76
|
+
version: 1.10.0
|
104
77
|
type: :development
|
105
78
|
prerelease: false
|
106
79
|
version_requirements: !ruby/object:Gem::Requirement
|
107
80
|
requirements:
|
108
|
-
- - "
|
81
|
+
- - "<"
|
109
82
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
83
|
+
version: 1.10.0
|
111
84
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
85
|
+
name: rubocop
|
113
86
|
requirement: !ruby/object:Gem::Requirement
|
114
87
|
requirements:
|
115
88
|
- - ">="
|
@@ -137,13 +110,13 @@ dependencies:
|
|
137
110
|
- !ruby/object:Gem::Version
|
138
111
|
version: 0.12.2
|
139
112
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
113
|
+
name: capybara
|
141
114
|
requirement: !ruby/object:Gem::Requirement
|
142
115
|
requirements:
|
143
116
|
- - ">="
|
144
117
|
- !ruby/object:Gem::Version
|
145
118
|
version: '0'
|
146
|
-
type: :
|
119
|
+
type: :runtime
|
147
120
|
prerelease: false
|
148
121
|
version_requirements: !ruby/object:Gem::Requirement
|
149
122
|
requirements:
|
@@ -151,13 +124,13 @@ dependencies:
|
|
151
124
|
- !ruby/object:Gem::Version
|
152
125
|
version: '0'
|
153
126
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
127
|
+
name: opal
|
155
128
|
requirement: !ruby/object:Gem::Requirement
|
156
129
|
requirements:
|
157
130
|
- - ">="
|
158
131
|
- !ruby/object:Gem::Version
|
159
132
|
version: '0'
|
160
|
-
type: :
|
133
|
+
type: :runtime
|
161
134
|
prerelease: false
|
162
135
|
version_requirements: !ruby/object:Gem::Requirement
|
163
136
|
requirements:
|
@@ -165,13 +138,13 @@ dependencies:
|
|
165
138
|
- !ruby/object:Gem::Version
|
166
139
|
version: '0'
|
167
140
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
141
|
+
name: parser
|
169
142
|
requirement: !ruby/object:Gem::Requirement
|
170
143
|
requirements:
|
171
144
|
- - ">="
|
172
145
|
- !ruby/object:Gem::Version
|
173
146
|
version: '0'
|
174
|
-
type: :
|
147
|
+
type: :runtime
|
175
148
|
prerelease: false
|
176
149
|
version_requirements: !ruby/object:Gem::Requirement
|
177
150
|
requirements:
|
@@ -179,13 +152,13 @@ dependencies:
|
|
179
152
|
- !ruby/object:Gem::Version
|
180
153
|
version: '0'
|
181
154
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
155
|
+
name: poltergeist
|
183
156
|
requirement: !ruby/object:Gem::Requirement
|
184
157
|
requirements:
|
185
158
|
- - ">="
|
186
159
|
- !ruby/object:Gem::Version
|
187
160
|
version: '0'
|
188
|
-
type: :
|
161
|
+
type: :runtime
|
189
162
|
prerelease: false
|
190
163
|
version_requirements: !ruby/object:Gem::Requirement
|
191
164
|
requirements:
|
@@ -193,13 +166,13 @@ dependencies:
|
|
193
166
|
- !ruby/object:Gem::Version
|
194
167
|
version: '0'
|
195
168
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
169
|
+
name: pry
|
197
170
|
requirement: !ruby/object:Gem::Requirement
|
198
171
|
requirements:
|
199
172
|
- - ">="
|
200
173
|
- !ruby/object:Gem::Version
|
201
174
|
version: '0'
|
202
|
-
type: :
|
175
|
+
type: :runtime
|
203
176
|
prerelease: false
|
204
177
|
version_requirements: !ruby/object:Gem::Requirement
|
205
178
|
requirements:
|
@@ -207,13 +180,13 @@ dependencies:
|
|
207
180
|
- !ruby/object:Gem::Version
|
208
181
|
version: '0'
|
209
182
|
- !ruby/object:Gem::Dependency
|
210
|
-
name: rspec-
|
183
|
+
name: rspec-rails
|
211
184
|
requirement: !ruby/object:Gem::Requirement
|
212
185
|
requirements:
|
213
186
|
- - ">="
|
214
187
|
- !ruby/object:Gem::Version
|
215
188
|
version: '0'
|
216
|
-
type: :
|
189
|
+
type: :runtime
|
217
190
|
prerelease: false
|
218
191
|
version_requirements: !ruby/object:Gem::Requirement
|
219
192
|
requirements:
|
@@ -221,13 +194,27 @@ dependencies:
|
|
221
194
|
- !ruby/object:Gem::Version
|
222
195
|
version: '0'
|
223
196
|
- !ruby/object:Gem::Dependency
|
224
|
-
name:
|
197
|
+
name: selenium-webdriver
|
198
|
+
requirement: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - '='
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: 2.53.4
|
203
|
+
type: :runtime
|
204
|
+
prerelease: false
|
205
|
+
version_requirements: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - '='
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: 2.53.4
|
210
|
+
- !ruby/object:Gem::Dependency
|
211
|
+
name: timecop
|
225
212
|
requirement: !ruby/object:Gem::Requirement
|
226
213
|
requirements:
|
227
214
|
- - ">="
|
228
215
|
- !ruby/object:Gem::Version
|
229
216
|
version: '0'
|
230
|
-
type: :
|
217
|
+
type: :runtime
|
231
218
|
prerelease: false
|
232
219
|
version_requirements: !ruby/object:Gem::Requirement
|
233
220
|
requirements:
|
@@ -235,21 +222,21 @@ dependencies:
|
|
235
222
|
- !ruby/object:Gem::Version
|
236
223
|
version: '0'
|
237
224
|
- !ruby/object:Gem::Dependency
|
238
|
-
name:
|
225
|
+
name: unparser
|
239
226
|
requirement: !ruby/object:Gem::Requirement
|
240
227
|
requirements:
|
241
228
|
- - '='
|
242
229
|
- !ruby/object:Gem::Version
|
243
|
-
version: 2.
|
244
|
-
type: :
|
230
|
+
version: 0.2.5
|
231
|
+
type: :runtime
|
245
232
|
prerelease: false
|
246
233
|
version_requirements: !ruby/object:Gem::Requirement
|
247
234
|
requirements:
|
248
235
|
- - '='
|
249
236
|
- !ruby/object:Gem::Version
|
250
|
-
version: 2.
|
237
|
+
version: 0.2.5
|
251
238
|
- !ruby/object:Gem::Dependency
|
252
|
-
name:
|
239
|
+
name: chromedriver-helper
|
253
240
|
requirement: !ruby/object:Gem::Requirement
|
254
241
|
requirements:
|
255
242
|
- - ">="
|
@@ -263,7 +250,7 @@ dependencies:
|
|
263
250
|
- !ruby/object:Gem::Version
|
264
251
|
version: '0'
|
265
252
|
- !ruby/object:Gem::Dependency
|
266
|
-
name:
|
253
|
+
name: method_source
|
267
254
|
requirement: !ruby/object:Gem::Requirement
|
268
255
|
requirements:
|
269
256
|
- - ">="
|
@@ -277,7 +264,7 @@ dependencies:
|
|
277
264
|
- !ruby/object:Gem::Version
|
278
265
|
version: '0'
|
279
266
|
- !ruby/object:Gem::Dependency
|
280
|
-
name:
|
267
|
+
name: opal-browser
|
281
268
|
requirement: !ruby/object:Gem::Requirement
|
282
269
|
requirements:
|
283
270
|
- - ">="
|
@@ -291,7 +278,7 @@ dependencies:
|
|
291
278
|
- !ruby/object:Gem::Version
|
292
279
|
version: '0'
|
293
280
|
- !ruby/object:Gem::Dependency
|
294
|
-
name:
|
281
|
+
name: opal-rails
|
295
282
|
requirement: !ruby/object:Gem::Requirement
|
296
283
|
requirements:
|
297
284
|
- - ">="
|
@@ -305,21 +292,21 @@ dependencies:
|
|
305
292
|
- !ruby/object:Gem::Version
|
306
293
|
version: '0'
|
307
294
|
- !ruby/object:Gem::Dependency
|
308
|
-
name:
|
295
|
+
name: puma
|
309
296
|
requirement: !ruby/object:Gem::Requirement
|
310
297
|
requirements:
|
311
|
-
- -
|
298
|
+
- - ">="
|
312
299
|
- !ruby/object:Gem::Version
|
313
|
-
version: 0
|
300
|
+
version: '0'
|
314
301
|
type: :development
|
315
302
|
prerelease: false
|
316
303
|
version_requirements: !ruby/object:Gem::Requirement
|
317
304
|
requirements:
|
318
|
-
- -
|
305
|
+
- - ">="
|
319
306
|
- !ruby/object:Gem::Version
|
320
|
-
version: 0
|
307
|
+
version: '0'
|
321
308
|
- !ruby/object:Gem::Dependency
|
322
|
-
name:
|
309
|
+
name: rspec-collection_matchers
|
323
310
|
requirement: !ruby/object:Gem::Requirement
|
324
311
|
requirements:
|
325
312
|
- - ">="
|
@@ -333,7 +320,7 @@ dependencies:
|
|
333
320
|
- !ruby/object:Gem::Version
|
334
321
|
version: '0'
|
335
322
|
- !ruby/object:Gem::Dependency
|
336
|
-
name:
|
323
|
+
name: rspec-expectations
|
337
324
|
requirement: !ruby/object:Gem::Requirement
|
338
325
|
requirements:
|
339
326
|
- - ">="
|
@@ -347,7 +334,21 @@ dependencies:
|
|
347
334
|
- !ruby/object:Gem::Version
|
348
335
|
version: '0'
|
349
336
|
- !ruby/object:Gem::Dependency
|
350
|
-
name:
|
337
|
+
name: rspec-its
|
338
|
+
requirement: !ruby/object:Gem::Requirement
|
339
|
+
requirements:
|
340
|
+
- - ">="
|
341
|
+
- !ruby/object:Gem::Version
|
342
|
+
version: '0'
|
343
|
+
type: :development
|
344
|
+
prerelease: false
|
345
|
+
version_requirements: !ruby/object:Gem::Requirement
|
346
|
+
requirements:
|
347
|
+
- - ">="
|
348
|
+
- !ruby/object:Gem::Version
|
349
|
+
version: '0'
|
350
|
+
- !ruby/object:Gem::Dependency
|
351
|
+
name: rspec-mocks
|
351
352
|
requirement: !ruby/object:Gem::Requirement
|
352
353
|
requirements:
|
353
354
|
- - ">="
|
@@ -375,13 +376,13 @@ dependencies:
|
|
375
376
|
- !ruby/object:Gem::Version
|
376
377
|
version: '0'
|
377
378
|
- !ruby/object:Gem::Dependency
|
378
|
-
name:
|
379
|
+
name: shoulda
|
379
380
|
requirement: !ruby/object:Gem::Requirement
|
380
381
|
requirements:
|
381
382
|
- - ">="
|
382
383
|
- !ruby/object:Gem::Version
|
383
384
|
version: '0'
|
384
|
-
type: :
|
385
|
+
type: :development
|
385
386
|
prerelease: false
|
386
387
|
version_requirements: !ruby/object:Gem::Requirement
|
387
388
|
requirements:
|
@@ -389,7 +390,21 @@ dependencies:
|
|
389
390
|
- !ruby/object:Gem::Version
|
390
391
|
version: '0'
|
391
392
|
- !ruby/object:Gem::Dependency
|
392
|
-
name:
|
393
|
+
name: shoulda-matchers
|
394
|
+
requirement: !ruby/object:Gem::Requirement
|
395
|
+
requirements:
|
396
|
+
- - ">="
|
397
|
+
- !ruby/object:Gem::Version
|
398
|
+
version: '0'
|
399
|
+
type: :development
|
400
|
+
prerelease: false
|
401
|
+
version_requirements: !ruby/object:Gem::Requirement
|
402
|
+
requirements:
|
403
|
+
- - ">="
|
404
|
+
- !ruby/object:Gem::Version
|
405
|
+
version: '0'
|
406
|
+
- !ruby/object:Gem::Dependency
|
407
|
+
name: spring-commands-rspec
|
393
408
|
requirement: !ruby/object:Gem::Requirement
|
394
409
|
requirements:
|
395
410
|
- - ">="
|
@@ -412,6 +427,7 @@ extensions: []
|
|
412
427
|
extra_rdoc_files: []
|
413
428
|
files:
|
414
429
|
- ".gitignore"
|
430
|
+
- ".rubocop.yml"
|
415
431
|
- CODE_OF_CONDUCT.md
|
416
432
|
- Gemfile
|
417
433
|
- Gemfile.lock
|
@@ -424,16 +440,22 @@ files:
|
|
424
440
|
- lib/bin/firebug-2.0.13-fx.xpi
|
425
441
|
- lib/hyper-spec.rb
|
426
442
|
- lib/hyper-spec/component_helpers.rb
|
427
|
-
- lib/hyper-spec/
|
443
|
+
- lib/hyper-spec/component_test_helpers.rb
|
444
|
+
- lib/hyper-spec/lolex.rb
|
445
|
+
- lib/hyper-spec/rails/engine.rb
|
428
446
|
- lib/hyper-spec/time_cop.rb
|
429
447
|
- lib/hyper-spec/version.rb
|
430
|
-
-
|
448
|
+
- lib/hyper-spec/wait_for_ajax.rb
|
449
|
+
- lib/react/isomorphic_helpers.rb
|
450
|
+
- lib/react/top_level_rails_component.rb
|
451
|
+
- lib/selenium/web_driver/firefox/profile.rb
|
431
452
|
- vendor/assets/javascripts/lolex.js
|
432
453
|
- vendor/assets/javascripts/time_cop.rb
|
433
454
|
homepage: https://github.com/ruby-hyperloop/hyper-spec
|
434
455
|
licenses:
|
435
456
|
- MIT
|
436
|
-
metadata:
|
457
|
+
metadata:
|
458
|
+
allowed_push_host: https://rubygems.org
|
437
459
|
post_install_message:
|
438
460
|
rdoc_options: []
|
439
461
|
require_paths:
|