site_prism.vcr 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +5 -13
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +78 -0
  4. data/Gemfile +2 -0
  5. data/README.md +61 -24
  6. data/TODO.md +28 -40
  7. data/lib/site_prism_vcr/applier.rb +20 -6
  8. data/lib/site_prism_vcr/dsl/adjuster.rb +40 -19
  9. data/lib/site_prism_vcr/dsl/initial_adjuster.rb +1 -1
  10. data/lib/site_prism_vcr/element.rb +8 -5
  11. data/lib/site_prism_vcr/fixture.rb +0 -1
  12. data/lib/site_prism_vcr/options.rb +12 -1
  13. data/lib/site_prism_vcr/patches/element_container.rb +4 -0
  14. data/lib/site_prism_vcr/patches/page.rb +25 -27
  15. data/lib/site_prism_vcr/version.rb +1 -1
  16. data/site_prism.vcr.gemspec +2 -2
  17. data/spec/integration/elements/apply_spec.rb +100 -0
  18. data/spec/integration/elements/events/click_spec.rb +20 -0
  19. data/spec/integration/{immediate_http_interactions/page_load_on_click_spec.rb → pages/custom_event_spec.rb} +5 -3
  20. data/spec/integration/{immediate_http_interactions/page_load_spec.rb → pages/load_spec.rb} +13 -9
  21. data/spec/spec_helper.rb +3 -0
  22. data/spec/support/shared/integration/custom_fixtures.rb +17 -0
  23. data/spec/support/shared/integration/exchange.rb +1 -1
  24. data/spec/support/shared/integration/home_path.rb +1 -1
  25. data/spec/support/shared/integration/waiter.rb +37 -25
  26. data/spec/support/site_prism/pages/home.rb +7 -0
  27. data/spec/support/site_prism/pages/{immediate_http_interactions → page_load}/home_path.rb +1 -1
  28. data/spec/support/site_prism/pages/{immediate_http_interactions → page_load}/one_request.rb +1 -1
  29. data/spec/support/site_prism/pages/{immediate_http_interactions → page_load}/subpage.rb +1 -1
  30. data/spec/support/site_prism/pages/{immediate_http_interactions → page_load}/two_requests.rb +1 -1
  31. data/spec/support/site_prism/pages/{immediate_http_interactions → page_load}/waiter_without_fixtures_ejection.rb +1 -1
  32. data/spec/unit/applier_spec.rb +74 -56
  33. data/spec/unit/dsl/adjuster_spec.rb +58 -47
  34. data/spec/unit/dsl/initial_adjuster_spec.rb +18 -12
  35. data/spec/unit/element_spec.rb +11 -13
  36. data/spec/unit/fixtures/handler_spec.rb +7 -2
  37. data/spec/unit/fixtures/manager_spec.rb +20 -4
  38. data/spec/unit/fixtures/modifiers/home_path_spec.rb +14 -3
  39. data/spec/unit/fixtures/modifiers/path_spec.rb +9 -3
  40. data/spec/unit/fixtures/tmp_keeper_spec.rb +1 -1
  41. data/spec/unit/fixtures_spec.rb +5 -5
  42. data/spec/unit/options_spec.rb +35 -1
  43. data/spec/unit/patches/element_container_spec.rb +25 -12
  44. data/spec/unit/patches/page_spec.rb +23 -30
  45. data/spec/unit/waiter_spec.rb +16 -4
  46. metadata +30 -30
  47. data/spec/integration/http_interactions_on_even/click_spec.rb +0 -75
  48. data/spec/unit/element_container_spec.rb +0 -48
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: site_prism.vcr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitriy Nesteryuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-20 00:00:00.000000000 Z
11
+ date: 2013-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: site_prism
@@ -16,40 +16,40 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '2.4'
19
+ version: '2.5'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: '2.4'
26
+ version: '2.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: vcr
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 2.6.0
33
+ version: 2.8.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: 2.6.0
40
+ version: 2.8.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: webmock
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: This gem integrates VCR library into SitePrism
@@ -62,6 +62,7 @@ files:
62
62
  - .gitignore
63
63
  - .rspec
64
64
  - .travis.yml
65
+ - CHANGELOG.md
65
66
  - Gemfile
66
67
  - LICENSE.txt
67
68
  - README.md
@@ -96,9 +97,10 @@ files:
96
97
  - spec/fixtures/jon_snow.yml
97
98
  - spec/fixtures/ned_stark.yml
98
99
  - spec/fixtures/robb_stark.yml
99
- - spec/integration/http_interactions_on_even/click_spec.rb
100
- - spec/integration/immediate_http_interactions/page_load_on_click_spec.rb
101
- - spec/integration/immediate_http_interactions/page_load_spec.rb
100
+ - spec/integration/elements/apply_spec.rb
101
+ - spec/integration/elements/events/click_spec.rb
102
+ - spec/integration/pages/custom_event_spec.rb
103
+ - spec/integration/pages/load_spec.rb
102
104
  - spec/spec_helper.rb
103
105
  - spec/spec_integration_helper.rb
104
106
  - spec/support/shared/integration/custom_fixtures.rb
@@ -107,11 +109,11 @@ files:
107
109
  - spec/support/shared/integration/waiter.rb
108
110
  - spec/support/site_prism/pages/base.rb
109
111
  - spec/support/site_prism/pages/home.rb
110
- - spec/support/site_prism/pages/immediate_http_interactions/home_path.rb
111
- - spec/support/site_prism/pages/immediate_http_interactions/one_request.rb
112
- - spec/support/site_prism/pages/immediate_http_interactions/subpage.rb
113
- - spec/support/site_prism/pages/immediate_http_interactions/two_requests.rb
114
- - spec/support/site_prism/pages/immediate_http_interactions/waiter_without_fixtures_ejection.rb
112
+ - spec/support/site_prism/pages/page_load/home_path.rb
113
+ - spec/support/site_prism/pages/page_load/one_request.rb
114
+ - spec/support/site_prism/pages/page_load/subpage.rb
115
+ - spec/support/site_prism/pages/page_load/two_requests.rb
116
+ - spec/support/site_prism/pages/page_load/waiter_without_fixtures_ejection.rb
115
117
  - spec/support/site_prism/sections/console_block.rb
116
118
  - spec/support/test_app/public/jquery.min.js
117
119
  - spec/support/test_app/public/test.js
@@ -120,7 +122,6 @@ files:
120
122
  - spec/unit/applier_spec.rb
121
123
  - spec/unit/dsl/adjuster_spec.rb
122
124
  - spec/unit/dsl/initial_adjuster_spec.rb
123
- - spec/unit/element_container_spec.rb
124
125
  - spec/unit/element_spec.rb
125
126
  - spec/unit/fixture_spec.rb
126
127
  - spec/unit/fixtures/converter_spec.rb
@@ -145,17 +146,17 @@ require_paths:
145
146
  - lib
146
147
  required_ruby_version: !ruby/object:Gem::Requirement
147
148
  requirements:
148
- - - ! '>='
149
+ - - '>='
149
150
  - !ruby/object:Gem::Version
150
151
  version: '0'
151
152
  required_rubygems_version: !ruby/object:Gem::Requirement
152
153
  requirements:
153
- - - ! '>='
154
+ - - '>='
154
155
  - !ruby/object:Gem::Version
155
156
  version: '0'
156
157
  requirements: []
157
158
  rubyforge_project:
158
- rubygems_version: 2.1.9
159
+ rubygems_version: 2.1.11
159
160
  signing_key:
160
161
  specification_version: 4
161
162
  summary: VCR and SitePrism are awesome libraries. But, it is a bit difficult to work
@@ -171,9 +172,10 @@ test_files:
171
172
  - spec/fixtures/jon_snow.yml
172
173
  - spec/fixtures/ned_stark.yml
173
174
  - spec/fixtures/robb_stark.yml
174
- - spec/integration/http_interactions_on_even/click_spec.rb
175
- - spec/integration/immediate_http_interactions/page_load_on_click_spec.rb
176
- - spec/integration/immediate_http_interactions/page_load_spec.rb
175
+ - spec/integration/elements/apply_spec.rb
176
+ - spec/integration/elements/events/click_spec.rb
177
+ - spec/integration/pages/custom_event_spec.rb
178
+ - spec/integration/pages/load_spec.rb
177
179
  - spec/spec_helper.rb
178
180
  - spec/spec_integration_helper.rb
179
181
  - spec/support/shared/integration/custom_fixtures.rb
@@ -182,11 +184,11 @@ test_files:
182
184
  - spec/support/shared/integration/waiter.rb
183
185
  - spec/support/site_prism/pages/base.rb
184
186
  - spec/support/site_prism/pages/home.rb
185
- - spec/support/site_prism/pages/immediate_http_interactions/home_path.rb
186
- - spec/support/site_prism/pages/immediate_http_interactions/one_request.rb
187
- - spec/support/site_prism/pages/immediate_http_interactions/subpage.rb
188
- - spec/support/site_prism/pages/immediate_http_interactions/two_requests.rb
189
- - spec/support/site_prism/pages/immediate_http_interactions/waiter_without_fixtures_ejection.rb
187
+ - spec/support/site_prism/pages/page_load/home_path.rb
188
+ - spec/support/site_prism/pages/page_load/one_request.rb
189
+ - spec/support/site_prism/pages/page_load/subpage.rb
190
+ - spec/support/site_prism/pages/page_load/two_requests.rb
191
+ - spec/support/site_prism/pages/page_load/waiter_without_fixtures_ejection.rb
190
192
  - spec/support/site_prism/sections/console_block.rb
191
193
  - spec/support/test_app/public/jquery.min.js
192
194
  - spec/support/test_app/public/test.js
@@ -195,7 +197,6 @@ test_files:
195
197
  - spec/unit/applier_spec.rb
196
198
  - spec/unit/dsl/adjuster_spec.rb
197
199
  - spec/unit/dsl/initial_adjuster_spec.rb
198
- - spec/unit/element_container_spec.rb
199
200
  - spec/unit/element_spec.rb
200
201
  - spec/unit/fixture_spec.rb
201
202
  - spec/unit/fixtures/converter_spec.rb
@@ -210,4 +211,3 @@ test_files:
210
211
  - spec/unit/patches/page_spec.rb
211
212
  - spec/unit/vcr_helpers_spec.rb
212
213
  - spec/unit/waiter_spec.rb
213
- has_rdoc:
@@ -1,75 +0,0 @@
1
- require 'spec_integration_helper'
2
-
3
- feature 'Http interactions on event > Click' do
4
- let(:cat_owner) { test_app_page.cat_owner }
5
- let(:test_app_page) { HomePage.new }
6
- let(:action_method) { :click_and_apply_vcr }
7
-
8
- before do
9
- test_app_page.load
10
- end
11
-
12
- context 'clicks and handles one HTTP request' do
13
- before do
14
- test_app_page.link_with_one_request.click_and_apply_vcr
15
- end
16
-
17
- it 'applies a default fixture' do
18
- expect(test_app_page.cat_owner).to have_content('Ned Stark')
19
- end
20
- end
21
-
22
- context 'when there is a delay between clicking and doing an HTTP request' do
23
- before do
24
- test_app_page.link_with_one_request_and_delay.click_and_apply_vcr
25
- end
26
-
27
- it 'applies a fixture and the test waits for results' do
28
- expect(cat_owner).to have_content('Ned Stark')
29
- end
30
- end
31
-
32
- # TODO: should we write the same test for the page load?
33
- context 'when an user clicks on the link which causes 2 HTTP requests' do
34
- before do
35
- test_app_page.link_with_2_requests.click_and_apply_vcr
36
- end
37
-
38
- it 'applies 2 fixtures' do
39
- expect(cat_owner).to have_content('Ned Stark')
40
- expect(cat_owner).to have_content('Robb Stark')
41
- end
42
- end
43
-
44
- it_behaves_like 'when a custom fixture is applied' do
45
- let(:actor) { test_app_page.link_with_one_request }
46
-
47
- context 'when clicks again without specifying a custom fixture' do
48
- it 'uses a default fixture again' do
49
- actor.click_and_apply_vcr
50
-
51
- expect(cat_owner).to have_content('Ned Stark')
52
- end
53
- end
54
- end
55
-
56
- context 'waiters' do
57
- it_behaves_like 'when a default waiter does not eject fixtures' do
58
- let(:actor) { test_app_page.link_without_ejecting_fixtures }
59
- end
60
-
61
- it_behaves_like 'custom waiters' do
62
- let(:actor) { test_app_page.link_with_2_requests }
63
- end
64
- end
65
-
66
- it_behaves_like 'when a home path is define' do
67
- let(:actor_with_home_path) { test_app_page.link_with_home_path }
68
- let(:actor_without_home_path) { test_app_page.link_with_one_request }
69
- end
70
-
71
- it_behaves_like 'when a default fixture is exchanged' do
72
- let(:actor_with_home_path) { test_app_page.link_with_home_path }
73
- let(:actor_without_home_path) { test_app_page.link_with_2_requests }
74
- end
75
- end
@@ -1,48 +0,0 @@
1
- require 'spec_helper'
2
-
3
- class TestPageWithElement
4
- extend SitePrism::ElementContainer
5
-
6
- class << self
7
- def element(*); end
8
- end
9
-
10
- def el_with_options
11
- 'original element with options'
12
- end
13
-
14
- def test_el; end
15
-
16
- element_with_vcr(:el_with_options, '#selector', fixtures: 'some fixtures') {}
17
- end
18
-
19
- describe SitePrism::ElementContainer do
20
- describe '.element_with_vcr' do
21
- it 'calls the original element method with given arguments' do
22
- expect(TestPageWithElement).to receive(:element).with(
23
- :test_el,
24
- '#test_selector',
25
- visible: false
26
- )
27
-
28
- TestPageWithElement.instance_eval do
29
- element_with_vcr :test_el, '#test_selector', visible: false
30
- end
31
- end
32
-
33
- context 'when a method for getting an element is called' do
34
- let(:page) { TestPageWithElement.new }
35
- let(:vcr_el) { 'vcr element' }
36
-
37
- subject { page.el_with_options }
38
-
39
- it 'initializes a new instance of an element with empty options' do
40
- expect(SPV::Element).to receive(:new).with(
41
- 'original element with options', page
42
- ).and_return(vcr_el)
43
-
44
- expect(subject).to eq(vcr_el)
45
- end
46
- end
47
- end
48
- end