prismatic 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8f0581313ae448d49bcb2922bc29dde490719734
4
- data.tar.gz: 2a4cc58f82cf3e92d2cfe4d60421f31e6434004c
3
+ metadata.gz: b4de90c9626cd6039b1246e18339c836a5ac409d
4
+ data.tar.gz: 029f05d754e03fb8fda36764af62a9be3223b734
5
5
  SHA512:
6
- metadata.gz: c8b506871ce9d027a3b92cbe4672d72bdd2095f02a0953a44aa9b8a6f4ec9af609fe9796f37da3b34ac49ffb6adb7d78c0922c260ee531052988d47d7169cdab
7
- data.tar.gz: 37999d4ff131a9df65259ca01e6955b4a85ff15ae84d4e44fbe521577f9eb1f05f277ce7756d4200e42032a2613c0ea8a4ac800e6c81d005b88b5e09feb3a2b6
6
+ metadata.gz: e5b2525abeb7c7b2866120e6a534af28bec2c22ffa5c630e62dee549606537fab2c1497e0554f2d65ce110b47d2fd1ed2e7ba7f65d792477660ceb25a71be141
7
+ data.tar.gz: 300bb6859b5f788c147bedb17dc9da1df6e661af6cc03675d06054048702152c640c76dcc89fdacf2484298a7c7ee9812bc77074da5750580d2b164e5435c80b
data/.rspec CHANGED
@@ -1 +1,2 @@
1
+ --order random
1
2
  -r spec_helper
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1
6
+ - jruby
7
+ - rbx-2
8
+ script: "bundle exec rake spec"
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in prismatic.gemspec
4
3
  gemspec
data/README.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Prismatic
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/joeyates/prismatic.png)][Continuous Integration]
4
+ [![Source Analysis](https://codeclimate.com/github/joeyates/prismatic/badges/gpa.svg)][Source Analysis]
5
+ [![Test Coverage](https://codeclimate.com/github/joeyates/prismatic/badges/coverage.svg)][Test Coverage]
6
+
7
+ * [Source Code]
8
+ * [API documentation]
9
+ * [Rubygem]
10
+ * [Continuous Integration]
11
+
12
+ [Source Code]: https://github.com/joeyates/prismatic "Source code at GitHub"
13
+ [API documentation]: http://rubydoc.info/gems/prismatic/frames "RDoc API Documentation at Rubydoc.info"
14
+ [Rubygem]: http://rubygems.org/gems/prismatic "Ruby gem at rubygems.org"
15
+ [Continuous Integration]: http://travis-ci.org/joeyates/prismatic "Build status by Travis-CI"
16
+ [Source Analysis]: https://codeclimate.com/github/joeyates/prismatic "Source code analysis by Code Climate"
17
+ [Test Coverage]: https://codeclimate.com/github/joeyates/prismatic "Test coverage by Code Climate"
18
+
3
19
  Use a naming convention inside your HTML to describe the DOM elements you
4
20
  want to access during tests. Prismatic will set up your SitePrism::Pages
5
21
  with the intended Sections and Elements.
@@ -70,25 +86,36 @@ search_page.load
70
86
  expect(search_page.search.start.text).to eq('Search')
71
87
  ```
72
88
 
89
+ ## Warnings
90
+
91
+ * all Pages need an `url_matcher` so that Prismatic knows when a page is
92
+ actually loaded. If you don't specify one, Prismatic will create it
93
+ (see `auto_create_url_matcher` configuration setting),
94
+ * be careful with `wait_for_*`: you may need to manually define a section
95
+ or element you intend to use as a marker that content is loaded - Prismatic
96
+ won't create them until they are actually present.
97
+
73
98
  ## Configuration
74
99
 
75
100
  In your test setup, do this:
76
101
 
77
102
  ```ruby
78
- Prismatic.configure do |conf|
79
- conf.foo = :bar
103
+ Prismatic.configure do
104
+ foo :bar
80
105
  end
81
106
  ```
82
107
 
83
108
  Configuration options:
84
109
 
85
110
  * prefix: (default: 'prism'). By default, prismatic uses data attributes called
86
- 'data-prism-*'. Set prefix to another value to allow data atributes to be
111
+ 'data-prism-*'. Set prefix to another value to allow data attributes to be
87
112
  named differently.
113
+ * auto_create_url_matcher: (default: true). If a Page has no `url_matcher` defined,
114
+ this sets it to a Regexp based on the Page's `url`.
88
115
 
89
116
  ## Contributing
90
117
 
91
- 1. Fork it ( https://github.com/[my-github-username]/prismatic/fork )
118
+ 1. Fork it ( https://github.com/joeyates/prismatic/fork )
92
119
  2. Create your feature branch (`git checkout -b my-new-feature`)
93
120
  3. Commit your changes (`git commit -am 'Add some feature'`)
94
121
  4. Push to the branch (`git push origin my-new-feature`)
@@ -4,6 +4,8 @@ require 'site_prism'
4
4
  module Prismatic
5
5
  end
6
6
 
7
+ require 'prismatic/configuration'
8
+ Prismatic.send :extend, Prismatic::Configuration
7
9
  require 'prismatic/element_container'
8
10
  require 'prismatic/page'
9
11
  require 'prismatic/section'
@@ -0,0 +1,31 @@
1
+ require 'docile'
2
+
3
+ module Prismatic::Configuration
4
+ OPTIONS_AND_DEFAULTS = {
5
+ prefix: 'prism',
6
+ auto_create_url_matcher: true,
7
+ }
8
+
9
+ OPTIONS_AND_DEFAULTS.each do |option, default|
10
+ define_method option do |value = :no_value_supplied|
11
+ v = "@#{option}"
12
+ if instance_variable_defined?(v) and value == :no_value_supplied
13
+ return instance_variable_get(v)
14
+ end
15
+ new_value = value == :no_value_supplied ? default : value
16
+ instance_variable_set(v, new_value)
17
+ end
18
+ end
19
+
20
+ def configure(&block)
21
+ Docile.dsl_eval(self, &block)
22
+ end
23
+
24
+ def reset_configuration
25
+ OPTIONS_AND_DEFAULTS.each do |option, default|
26
+ v = "@#{option}"
27
+ instance_variable_set(v, default)
28
+ end
29
+ true
30
+ end
31
+ end
@@ -1,7 +1,7 @@
1
1
  module Prismatic::ElementContainer
2
2
  private
3
3
 
4
- def create_elements
4
+ def update_elements
5
5
  find_matches 'element'
6
6
  find_matches 'elements'
7
7
  find_matches 'section'
@@ -13,6 +13,7 @@ module Prismatic::ElementContainer
13
13
 
14
14
  find_all("[#{attribute}]").each do |el|
15
15
  name = el[attribute]
16
+ next if has_instance_method?(self.class, name)
16
17
  if is_section?(type)
17
18
  self.class.send type.intern, name, Prismatic::Section, "[#{attribute}=\"#{name}\"]"
18
19
  else
@@ -26,6 +27,10 @@ module Prismatic::ElementContainer
26
27
  end
27
28
 
28
29
  def attribute_for(type)
29
- "data-prism-#{type}"
30
+ "data-#{Prismatic.prefix}-#{type}"
31
+ end
32
+
33
+ def has_instance_method?(klass, method)
34
+ klass.instance_methods.include?(method.intern)
30
35
  end
31
36
  end
@@ -3,6 +3,32 @@ class Prismatic::Page < SitePrism::Page
3
3
 
4
4
  def load
5
5
  super
6
- create_elements
6
+ optionally_update_elements
7
+ end
8
+
9
+ def respond_to?(method_id, include_all = false)
10
+ optionally_update_elements
11
+ methods.include?(method_id)
12
+ end
13
+
14
+ def method_missing(method_id, *args)
15
+ optionally_update_elements
16
+ return super unless methods.include?(method_id)
17
+ send(method_id, *args)
18
+ end
19
+
20
+ private
21
+
22
+ def optionally_update_elements
23
+ optionally_set_url_matcher
24
+ return unless displayed?(0)
25
+ update_elements
26
+ end
27
+
28
+ def optionally_set_url_matcher
29
+ return unless self.class.url_matcher.nil?
30
+ return if self.class.url.nil?
31
+ return unless Prismatic.auto_create_url_matcher
32
+ self.class.set_url_matcher %r(^https?://[^/]+#{self.class.url}([#\?].*)?$)
7
33
  end
8
34
  end
@@ -3,6 +3,6 @@ class Prismatic::Section < SitePrism::Section
3
3
 
4
4
  def initialize(parent, root_element)
5
5
  super
6
- create_elements
6
+ update_elements
7
7
  end
8
8
  end
@@ -1,6 +1,6 @@
1
1
  module Prismatic
2
2
  MAJOR = 0
3
3
  MINOR = 0
4
- REVISION = 2
4
+ REVISION = 3
5
5
  VERSION = [MAJOR, MINOR, REVISION].join('.')
6
6
  end
@@ -23,8 +23,10 @@ Gem::Specification.new do |spec|
23
23
  spec.require_paths = ['lib']
24
24
 
25
25
  spec.add_dependency 'site_prism', '~> 2.6'
26
+ spec.add_dependency 'docile', '~> 1.1'
26
27
 
27
28
  spec.add_development_dependency 'bundler', '~> 1.6'
28
29
  spec.add_development_dependency 'rake', '~> 10.0'
29
30
  spec.add_development_dependency 'rspec', '~> 3.0'
31
+ spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.4'
30
32
  end
@@ -1,5 +1,18 @@
1
1
  require 'rspec'
2
+ require 'codeclimate-test-reporter'
3
+
2
4
  spec_path = File.dirname(__FILE__)
3
5
  $LOAD_PATH << File.expand_path('../lib', spec_path)
4
6
 
7
+ SimpleCov.start do
8
+ formatter SimpleCov::Formatter::MultiFormatter[
9
+ SimpleCov::Formatter::HTMLFormatter,
10
+ CodeClimate::TestReporter::Formatter
11
+ ]
12
+ SimpleCov.start do
13
+ add_filter '/spec/'
14
+ add_filter '/vendor/'
15
+ end
16
+ end
17
+
5
18
  require 'prismatic'
@@ -0,0 +1,54 @@
1
+ require 'prismatic'
2
+
3
+ describe Prismatic::Configuration do
4
+ after do
5
+ Prismatic.reset_configuration
6
+ end
7
+
8
+ [
9
+ [:prefix, 'prism', 'foo'],
10
+ [:auto_create_url_matcher, true, false],
11
+ ].each do |option, default, new_value|
12
+ describe "##{option}" do
13
+ it 'returns the value' do
14
+ expect(Prismatic.send(option)).to eq(default)
15
+ end
16
+
17
+ context 'setting' do
18
+ it 'sets the value' do
19
+ Prismatic.send(option, new_value)
20
+ expect(Prismatic.send(option)).to eq(new_value)
21
+ end
22
+
23
+ it "accepts 'nil'" do
24
+ Prismatic.send(option, nil)
25
+ expect(Prismatic.send(option)).to eq(nil)
26
+ end
27
+
28
+ it 'returns the value' do
29
+ expect(Prismatic.send(option, new_value)).to eq(new_value)
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ context '.configure' do
36
+ it 'sets values in the block' do
37
+ Prismatic.configure do
38
+ prefix 'bar'
39
+ end
40
+
41
+ expect(Prismatic.prefix).to eq('bar')
42
+ end
43
+ end
44
+
45
+ context '.reset_configuration' do
46
+ it 'resets options to defaults' do
47
+ Prismatic.prefix 'aaaaaaa'
48
+
49
+ Prismatic.reset_configuration
50
+
51
+ expect(Prismatic.prefix).to eq('prism')
52
+ end
53
+ end
54
+ end
@@ -1,7 +1,3 @@
1
- class MyPage < Prismatic::Page
2
- set_url '/'
3
- end
4
-
5
1
  describe Prismatic::Page do
6
2
  def make_element(name, attribute)
7
3
  el = double(Capybara::Node::Element)
@@ -15,7 +11,11 @@ describe Prismatic::Page do
15
11
  el
16
12
  end
17
13
 
18
- let(:page) { double(Capybara::Session, visit: nil) }
14
+ let(:page) { double(Capybara::Session, visit: nil, current_url: current_url) }
15
+ let(:current_url) { non_matching_url } # this means the page is not displayed
16
+ let(:matching_url) { 'http://example.com/search' }
17
+ let(:non_matching_url) { 'http://example.com/quux' }
18
+
19
19
  let(:page_element_array) { [] }
20
20
  let(:page_elements_array) { [] }
21
21
  let(:page_section_array) { [] }
@@ -23,28 +23,73 @@ describe Prismatic::Page do
23
23
  let(:singleton_element) { make_element('foo', 'data-prism-element') }
24
24
  let(:collection_element) { make_element('bar', 'data-prism-elements') }
25
25
 
26
- specify { expect(subject).to be_a(SitePrism::Page) }
26
+ before do
27
+ allow(Capybara).to receive(:current_session).and_return(page)
28
+ allow(page).to receive(:all).with('[data-prism-element]').and_return(page_element_array)
29
+ allow(page).to receive(:all).with('[data-prism-elements]').and_return(page_elements_array)
30
+ allow(page).to receive(:all).with('[data-prism-section]').and_return(page_section_array)
31
+ allow(page).to receive(:all).with('[data-prism-sections]').and_return(page_sections_array)
32
+ end
27
33
 
28
- describe '#load' do
29
- subject do
30
- page = MyPage.new
31
- page.load
32
- page
34
+ # As 'url' and 'url_matcher' get set on the class itself,
35
+ # we use different subclasses for each example
36
+ let(:klass) do
37
+ Class.new(Prismatic::Page) do
38
+ set_url '/search'
33
39
  end
40
+ end
41
+ subject { klass.new }
42
+
43
+ specify { expect(subject).to be_a(SitePrism::Page) }
44
+
45
+ context 'configuration' do
46
+ let(:current_url) { matching_url }
47
+ let(:prefix) { 'hello' }
48
+ let(:singleton_element) { make_element('foo', "data-#{prefix}-element") }
34
49
 
35
50
  before do
36
- allow(Capybara).to receive(:current_session).and_return(page)
37
- allow(page).to receive(:all).with('[data-prism-element]').and_return(page_element_array)
38
- allow(page).to receive(:all).with('[data-prism-elements]').and_return(page_elements_array)
39
- allow(page).to receive(:all).with('[data-prism-section]').and_return(page_section_array)
40
- allow(page).to receive(:all).with('[data-prism-sections]').and_return(page_sections_array)
51
+ allow(page).to receive(:all).with("[data-#{prefix}-element]").and_return([singleton_element])
52
+ allow(page).to receive(:all).with("[data-#{prefix}-elements]").and_return([])
53
+ allow(page).to receive(:all).with("[data-#{prefix}-section]").and_return([])
54
+ allow(page).to receive(:all).with("[data-#{prefix}-sections]").and_return([])
55
+ allow(page).to receive(:find).with("[data-#{prefix}-element=\"foo\"]").and_return(singleton_element)
41
56
  end
42
57
 
58
+ after { Prismatic.reset_configuration }
59
+
60
+ context 'when a prefix is configured' do
61
+ before { Prismatic.prefix prefix }
62
+
63
+ it 'is used' do
64
+ subject.load
65
+ expect(subject.foo).to be(singleton_element)
66
+ end
67
+ end
68
+
69
+ context 'when auto_create_url_matcher is set to false' do
70
+ before { Prismatic.auto_create_url_matcher false }
71
+
72
+ it 'fails to create elements' do
73
+ expect do
74
+ subject.load
75
+ end.to raise_error
76
+ end
77
+ end
78
+ end
79
+
80
+ describe '#load' do
81
+ let(:current_url) { matching_url }
82
+
43
83
  context "for 'data-prism-element' attributes" do
44
84
  let(:page_element_array) { [singleton_element] }
45
85
 
86
+ before do
87
+ allow(page).to receive(:find).with("[data-prism-element=\"foo\"]").and_return(singleton_element)
88
+ subject.load
89
+ end
90
+
46
91
  it "creates a single element" do
47
- expect(subject).to respond_to('foo')
92
+ expect(subject.foo).to be(singleton_element)
48
93
  end
49
94
  end
50
95
 
@@ -54,6 +99,7 @@ describe Prismatic::Page do
54
99
 
55
100
  before do
56
101
  allow(page).to receive(:all).with('[data-prism-elements="bar"]').and_return(bar_elements_array)
102
+ subject.load
57
103
  end
58
104
 
59
105
  it "creates an arrays of elements" do
@@ -80,8 +126,12 @@ describe Prismatic::Page do
80
126
  allow(singleton_section).to receive(:all).with('[data-prism-sections]').and_return(nested_sections_array)
81
127
  end
82
128
 
83
- it "creates a single section" do
84
- expect(subject).to respond_to(section_name)
129
+ context 'the section' do
130
+ before { subject.load }
131
+
132
+ it "is created" do
133
+ expect(subject.send(section_name.intern)).to be_a(Prismatic::Section)
134
+ end
85
135
  end
86
136
 
87
137
  context "with contained 'data-prism-element' attributes" do
@@ -89,7 +139,8 @@ describe Prismatic::Page do
89
139
 
90
140
  before do
91
141
  allow(singleton_section).to receive(:find).with('[data-prism-element="foo"]').and_return(singleton_element)
92
- allow(singleton_section).to receive(:find).with('[data-prism-elements="foo"]').and_return([])
142
+ allow(singleton_section).to receive(:find).with('[data-prism-elements="bar"]').and_return([])
143
+ subject.load
93
144
  end
94
145
 
95
146
  it 'creates an element' do
@@ -101,14 +152,15 @@ describe Prismatic::Page do
101
152
  let(:bar_elements_array) { [collection_element] }
102
153
 
103
154
  before do
104
- allow(singleton_section).to receive(:all).with('[data-prism-element="foo"]').and_return(foo_element_array)
105
- allow(singleton_section).to receive(:all).with('[data-prism-elements="foo"]').and_return(bar_elements_array)
155
+ allow(singleton_section).to receive(:all).with('[data-prism-element="foo"]').and_return([])
156
+ allow(singleton_section).to receive(:all).with('[data-prism-elements="bar"]').and_return(bar_elements_array)
106
157
  allow(singleton_section).to receive(:find).with('[data-prism-element="foo"]').and_return([])
107
- allow(singleton_section).to receive(:find).with('[data-prism-elements="foo"]').and_return(collection_element)
158
+ allow(singleton_section).to receive(:find).with('[data-prism-elements="bar"]').and_return(collection_element)
159
+ subject.load
108
160
  end
109
161
 
110
162
  it 'creates an element array' do
111
- expect(subject.send(section_name).foo).to be_a(Array)
163
+ expect(subject.send(section_name).bar).to be_a(Array)
112
164
  end
113
165
  end
114
166
 
@@ -116,6 +168,8 @@ describe Prismatic::Page do
116
168
  let(:baz_section) { make_section('baz', 'data-prism-section') }
117
169
  let(:nested_section_array) { [baz_section] }
118
170
 
171
+ before { subject.load }
172
+
119
173
  it "creates a heirarchy of sections containing elements" do
120
174
  expect(subject.send(section_name)).to respond_to(:baz)
121
175
  end
@@ -137,6 +191,7 @@ describe Prismatic::Page do
137
191
  allow(section_collection_member).to receive(:all).with('[data-prism-elements]').and_return(bar_elements_array)
138
192
  allow(section_collection_member).to receive(:all).with('[data-prism-section]').and_return([])
139
193
  allow(section_collection_member).to receive(:all).with('[data-prism-sections]').and_return([])
194
+ subject.load
140
195
  end
141
196
 
142
197
  it "creates an array of sections" do
@@ -145,4 +200,103 @@ describe Prismatic::Page do
145
200
  end
146
201
  end
147
202
  end
203
+
204
+ shared_examples 'optionally creates elements' do |action|
205
+ context 'when the page is not displayed' do
206
+ let(:current_url) { non_matching_url }
207
+
208
+ before do
209
+ allow(page).to receive(:all)
210
+ action.call subject
211
+ end
212
+
213
+ it 'does nothing' do
214
+ expect(page).to_not have_received(:all)
215
+ end
216
+ end
217
+
218
+ context 'when the page is displayed' do
219
+ let(:current_url) { matching_url }
220
+ let(:page_element_array) { [singleton_element] }
221
+
222
+ before do
223
+ allow(page).to receive(:all).with("[data-prism-element]").and_return([singleton_element])
224
+ allow(page).to receive(:find).with("[data-prism-element=\"foo\"]").and_return(singleton_element)
225
+ action.call subject
226
+ end
227
+
228
+ it 'creates elements' do
229
+ # stop elements being created:
230
+ allow(page).to receive(:find).with("[data-prism-element]").and_return([])
231
+ expect(subject.foo).to be(singleton_element)
232
+ end
233
+ end
234
+ end
235
+
236
+ describe '#respond_to?' do
237
+ action = ->(subject) { subject.respond_to?(:baz) }
238
+ include_examples 'optionally creates elements', action
239
+ end
240
+
241
+ describe '#method_missing' do
242
+ action = ->(subject) { subject.baz rescue nil }
243
+ include_examples 'optionally creates elements', action
244
+
245
+ context 'with truly missing methods' do
246
+ specify 'raise an error' do
247
+ expect do
248
+ subject.baz
249
+ end.to raise_error(NoMethodError)
250
+ end
251
+ end
252
+
253
+ context 'on-the-fly methods' do
254
+ let(:current_url) { matching_url }
255
+ let(:page_element_array) { [singleton_element] }
256
+
257
+ before do
258
+ allow(page).to receive(:all).with("[data-prism-element]").and_return([singleton_element])
259
+ allow(page).to receive(:find).with("[data-prism-element=\"foo\"]").and_return(singleton_element)
260
+ end
261
+
262
+ specify 'get called' do
263
+ expect(subject.foo).to eq(singleton_element)
264
+ end
265
+ end
266
+ end
267
+
268
+ context 'on-the-fly methods' do
269
+ let(:current_url) { matching_url }
270
+ let(:page_element_array) { [singleton_element] }
271
+
272
+ before do
273
+ allow(page).to receive(:all).with("[data-prism-element]").and_return([singleton_element])
274
+ allow(page).to receive(:find).with("[data-prism-element=\"foo\"]").and_return(singleton_element)
275
+ end
276
+
277
+ specify "don't replace existing methods" do
278
+ subject.class.send(:define_method, :foo) { 'hello' }
279
+
280
+ subject.baz rescue nil
281
+
282
+ expect(subject.foo).to eq('hello')
283
+ end
284
+
285
+ context 'with dynamic content' do
286
+ specify 'missing methods are created on successive updates' do
287
+ # Initially it's not there:
288
+ allow(page).to receive(:all).with("[data-prism-element]").and_return([])
289
+ subject.baz rescue nil
290
+
291
+ expect(subject.methods).to_not include(:foo)
292
+
293
+ # Then it appears:
294
+ allow(page).to receive(:all).with("[data-prism-element]").and_return([singleton_element])
295
+ subject.baz rescue nil
296
+
297
+ expect(subject.methods).to include(:foo)
298
+ expect(subject.foo).to eq(singleton_element)
299
+ end
300
+ end
301
+ end
148
302
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prismatic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Yates
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-18 00:00:00.000000000 Z
11
+ date: 2014-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: site_prism
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: docile
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.1'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,20 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: codeclimate-test-reporter
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.4'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.4'
69
97
  description: 'Thanks to a naming convention, Prismatic recognises the DOM elements
70
98
  in your web pages that you intend to access during integration tests and automatically
71
99
  creates the intended SitePrism sections and elements. '
@@ -77,17 +105,20 @@ extra_rdoc_files: []
77
105
  files:
78
106
  - ".gitignore"
79
107
  - ".rspec"
108
+ - ".travis.yml"
80
109
  - Gemfile
81
110
  - LICENSE.txt
82
111
  - README.md
83
112
  - Rakefile
84
113
  - lib/prismatic.rb
114
+ - lib/prismatic/configuration.rb
85
115
  - lib/prismatic/element_container.rb
86
116
  - lib/prismatic/page.rb
87
117
  - lib/prismatic/section.rb
88
118
  - lib/prismatic/version.rb
89
119
  - prismatic.gemspec
90
120
  - spec/spec_helper.rb
121
+ - spec/unit/prismatic/configuration_spec.rb
91
122
  - spec/unit/prismatic/page_spec.rb
92
123
  homepage: https://github.com/joeyates/prismatic
93
124
  licenses:
@@ -115,5 +146,6 @@ specification_version: 4
115
146
  summary: Automate SitePrism's access to DOM elements
116
147
  test_files:
117
148
  - spec/spec_helper.rb
149
+ - spec/unit/prismatic/configuration_spec.rb
118
150
  - spec/unit/prismatic/page_spec.rb
119
151
  has_rdoc: