site_prism.vcr 0.0.1 → 0.1.0

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.
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