site_prism.vcr 0.1.2 → 0.2.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 +5 -0
  3. data/CHANGELOG.md +51 -4
  4. data/Gemfile +3 -4
  5. data/README.md +88 -10
  6. data/TODO.md +29 -31
  7. data/lib/site_prism_vcr/applier.rb +51 -13
  8. data/lib/site_prism_vcr/dsl/adjuster.rb +1 -1
  9. data/lib/site_prism_vcr/dsl/initial_adjuster.rb +26 -6
  10. data/lib/site_prism_vcr/fixture.rb +7 -4
  11. data/lib/site_prism_vcr/fixtures/manager.rb +30 -11
  12. data/lib/site_prism_vcr/fixtures/modifiers/path.rb +6 -6
  13. data/lib/site_prism_vcr/fixtures/modifiers/shortcut_path.rb +25 -0
  14. data/lib/site_prism_vcr/mixins/element.rb +23 -0
  15. data/lib/site_prism_vcr/mixins/page.rb +63 -0
  16. data/lib/site_prism_vcr/options.rb +20 -6
  17. data/lib/site_prism_vcr/patches/element.rb +4 -0
  18. data/lib/site_prism_vcr/patches/page.rb +2 -38
  19. data/lib/site_prism_vcr/version.rb +1 -1
  20. data/lib/site_prism_vcr.rb +2 -2
  21. data/spec/integration/elements/apply_spec.rb +4 -0
  22. data/spec/integration/pages/custom_event_spec.rb +1 -1
  23. data/spec/integration/pages/load_spec.rb +11 -0
  24. data/spec/spec_helper.rb +3 -2
  25. data/spec/spec_integration_helper.rb +0 -3
  26. data/spec/support/shared/integration/home_path.rb +1 -1
  27. data/spec/support/shared/integration/shortcut_path.rb +13 -0
  28. data/spec/support/site_prism/pages/page_load/subpage_with_fixtures.rb +14 -0
  29. data/spec/unit/applier_spec.rb +97 -43
  30. data/spec/unit/dsl/adjuster_spec.rb +7 -7
  31. data/spec/unit/dsl/initial_adjuster_spec.rb +29 -13
  32. data/spec/unit/element_spec.rb +3 -3
  33. data/spec/unit/fixture_spec.rb +47 -17
  34. data/spec/unit/fixtures/converter_spec.rb +1 -1
  35. data/spec/unit/fixtures/handler_spec.rb +3 -3
  36. data/spec/unit/fixtures/manager_spec.rb +76 -29
  37. data/spec/unit/fixtures/modifiers/path_spec.rb +10 -10
  38. data/spec/unit/fixtures/modifiers/relative_path_spec.rb +1 -1
  39. data/spec/unit/fixtures/modifiers/shortcut_path_spec.rb +61 -0
  40. data/spec/unit/{patches/element_container_spec.rb → mixins/element_spec.rb} +2 -2
  41. data/spec/unit/mixins/page_spec.rb +105 -0
  42. data/spec/unit/options_spec.rb +6 -6
  43. data/spec/unit/waiter_spec.rb +3 -3
  44. metadata +28 -22
  45. data/lib/site_prism_vcr/fixtures/modifiers/home_path.rb +0 -25
  46. data/lib/site_prism_vcr/patches/element_container.rb +0 -19
  47. data/spec/unit/fixtures/modifiers/home_path_spec.rb +0 -58
  48. data/spec/unit/patches/page_spec.rb +0 -50
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: site_prism.vcr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.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: 2014-06-01 00:00:00.000000000 Z
11
+ date: 2015-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: site_prism
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.6'
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
26
  version: '2.6'
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
33
  version: 2.9.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
40
  version: 2.9.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
@@ -59,9 +59,9 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - .gitignore
63
- - .rspec
64
- - .travis.yml
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - ".travis.yml"
65
65
  - CHANGELOG.md
66
66
  - Gemfile
67
67
  - LICENSE.txt
@@ -80,13 +80,15 @@ files:
80
80
  - lib/site_prism_vcr/fixtures/handler.rb
81
81
  - lib/site_prism_vcr/fixtures/manager.rb
82
82
  - lib/site_prism_vcr/fixtures/modifiers/base.rb
83
- - lib/site_prism_vcr/fixtures/modifiers/home_path.rb
84
83
  - lib/site_prism_vcr/fixtures/modifiers/path.rb
85
84
  - lib/site_prism_vcr/fixtures/modifiers/relative_path.rb
85
+ - lib/site_prism_vcr/fixtures/modifiers/shortcut_path.rb
86
86
  - lib/site_prism_vcr/fixtures/tmp_keeper.rb
87
+ - lib/site_prism_vcr/mixins/element.rb
88
+ - lib/site_prism_vcr/mixins/page.rb
87
89
  - lib/site_prism_vcr/options.rb
88
90
  - lib/site_prism_vcr/options_with_path.rb
89
- - lib/site_prism_vcr/patches/element_container.rb
91
+ - lib/site_prism_vcr/patches/element.rb
90
92
  - lib/site_prism_vcr/patches/page.rb
91
93
  - lib/site_prism_vcr/vcr_helpers.rb
92
94
  - lib/site_prism_vcr/version.rb
@@ -110,12 +112,14 @@ files:
110
112
  - spec/support/shared/integration/custom_fixtures.rb
111
113
  - spec/support/shared/integration/exchange.rb
112
114
  - spec/support/shared/integration/home_path.rb
115
+ - spec/support/shared/integration/shortcut_path.rb
113
116
  - spec/support/shared/integration/waiter.rb
114
117
  - spec/support/site_prism/pages/base.rb
115
118
  - spec/support/site_prism/pages/home.rb
116
119
  - spec/support/site_prism/pages/page_load/home_path.rb
117
120
  - spec/support/site_prism/pages/page_load/one_request.rb
118
121
  - spec/support/site_prism/pages/page_load/subpage.rb
122
+ - spec/support/site_prism/pages/page_load/subpage_with_fixtures.rb
119
123
  - spec/support/site_prism/pages/page_load/two_requests.rb
120
124
  - spec/support/site_prism/pages/page_load/waiter_without_fixtures_ejection.rb
121
125
  - spec/support/site_prism/sections/console_block.rb
@@ -131,14 +135,14 @@ files:
131
135
  - spec/unit/fixtures/converter_spec.rb
132
136
  - spec/unit/fixtures/handler_spec.rb
133
137
  - spec/unit/fixtures/manager_spec.rb
134
- - spec/unit/fixtures/modifiers/home_path_spec.rb
135
138
  - spec/unit/fixtures/modifiers/path_spec.rb
136
139
  - spec/unit/fixtures/modifiers/relative_path_spec.rb
140
+ - spec/unit/fixtures/modifiers/shortcut_path_spec.rb
137
141
  - spec/unit/fixtures/tmp_keeper_spec.rb
138
142
  - spec/unit/fixtures_spec.rb
143
+ - spec/unit/mixins/element_spec.rb
144
+ - spec/unit/mixins/page_spec.rb
139
145
  - spec/unit/options_spec.rb
140
- - spec/unit/patches/element_container_spec.rb
141
- - spec/unit/patches/page_spec.rb
142
146
  - spec/unit/vcr_helpers_spec.rb
143
147
  - spec/unit/waiter_spec.rb
144
148
  homepage: http://github.com/dnesteryuk/site_prism.vcr
@@ -151,17 +155,17 @@ require_paths:
151
155
  - lib
152
156
  required_ruby_version: !ruby/object:Gem::Requirement
153
157
  requirements:
154
- - - ! '>='
158
+ - - ">="
155
159
  - !ruby/object:Gem::Version
156
160
  version: '0'
157
161
  required_rubygems_version: !ruby/object:Gem::Requirement
158
162
  requirements:
159
- - - ! '>='
163
+ - - ">="
160
164
  - !ruby/object:Gem::Version
161
165
  version: '0'
162
166
  requirements: []
163
167
  rubyforge_project:
164
- rubygems_version: 2.2.2
168
+ rubygems_version: 2.4.3
165
169
  signing_key:
166
170
  specification_version: 4
167
171
  summary: VCR and SitePrism are awesome libraries. But, it is a bit difficult to work
@@ -188,12 +192,14 @@ test_files:
188
192
  - spec/support/shared/integration/custom_fixtures.rb
189
193
  - spec/support/shared/integration/exchange.rb
190
194
  - spec/support/shared/integration/home_path.rb
195
+ - spec/support/shared/integration/shortcut_path.rb
191
196
  - spec/support/shared/integration/waiter.rb
192
197
  - spec/support/site_prism/pages/base.rb
193
198
  - spec/support/site_prism/pages/home.rb
194
199
  - spec/support/site_prism/pages/page_load/home_path.rb
195
200
  - spec/support/site_prism/pages/page_load/one_request.rb
196
201
  - spec/support/site_prism/pages/page_load/subpage.rb
202
+ - spec/support/site_prism/pages/page_load/subpage_with_fixtures.rb
197
203
  - spec/support/site_prism/pages/page_load/two_requests.rb
198
204
  - spec/support/site_prism/pages/page_load/waiter_without_fixtures_ejection.rb
199
205
  - spec/support/site_prism/sections/console_block.rb
@@ -209,13 +215,13 @@ test_files:
209
215
  - spec/unit/fixtures/converter_spec.rb
210
216
  - spec/unit/fixtures/handler_spec.rb
211
217
  - spec/unit/fixtures/manager_spec.rb
212
- - spec/unit/fixtures/modifiers/home_path_spec.rb
213
218
  - spec/unit/fixtures/modifiers/path_spec.rb
214
219
  - spec/unit/fixtures/modifiers/relative_path_spec.rb
220
+ - spec/unit/fixtures/modifiers/shortcut_path_spec.rb
215
221
  - spec/unit/fixtures/tmp_keeper_spec.rb
216
222
  - spec/unit/fixtures_spec.rb
223
+ - spec/unit/mixins/element_spec.rb
224
+ - spec/unit/mixins/page_spec.rb
217
225
  - spec/unit/options_spec.rb
218
- - spec/unit/patches/element_container_spec.rb
219
- - spec/unit/patches/page_spec.rb
220
226
  - spec/unit/vcr_helpers_spec.rb
221
227
  - spec/unit/waiter_spec.rb
@@ -1,25 +0,0 @@
1
- require_relative 'base'
2
-
3
- module SPV
4
- class Fixtures
5
- module Modifiers
6
- # It takes a fixture and replaces "~/" with
7
- # a defined home path.
8
- class HomePath < Base
9
- def modify(fixture)
10
- if fixture.has_link_to_home_path?
11
- if @options.home_path
12
- fixture.set_home_path(@options.home_path)
13
- else
14
- raise ArgumentError.new(
15
- "You are trying to use a home path for #{fixture.name} fixture. " \
16
- "Home path cannot be used since it is not defined, please refer to the documentation " \
17
- "to make sure you define the home path properly."
18
- )
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,19 +0,0 @@
1
- module SitePrism::ElementContainer
2
- def element_with_vcr(element_name, *args, &block)
3
- element element_name, *args
4
-
5
- link_vcr_with_element(element_name, &block)
6
- end
7
-
8
- def link_vcr_with_element(element_name, &block)
9
- origin_element_name = "origin_#{element_name}"
10
-
11
- alias_method origin_element_name, element_name
12
-
13
- define_method element_name.to_s do
14
- elem = public_send(origin_element_name)
15
-
16
- SPV::Element.new(elem, self, &block)
17
- end
18
- end
19
- end
@@ -1,58 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe SPV::Fixtures::Modifiers::HomePath do
4
- describe '#modify' do
5
- let(:path) { 'some home path' }
6
- let(:options) { instance_double('SPV::Options', home_path: path) }
7
- let(:fixture) do
8
- instance_double(
9
- 'SPV::Fixture',
10
- name: 'test_with_home_path',
11
- :has_link_to_home_path? => true
12
- )
13
- end
14
-
15
- subject { described_class.new(options).modify(fixture) }
16
-
17
- context 'when a name of the fixture has a link to the home path' do
18
- context 'when the home_path is defined' do
19
- it 'writes a proper path to the fixture' do
20
- expect(fixture).to receive(:set_home_path).with(path)
21
-
22
- subject
23
- end
24
- end
25
-
26
- context 'when the home_path is not defined' do
27
- before do
28
- options.stub(:home_path).and_return(nil)
29
- end
30
-
31
- it 'raises an argument error about wrong way of defining fixtures' do
32
- msg = 'You are trying to use a home path for test_with_home_path fixture. ' \
33
- 'Home path cannot be used since it is not defined, please refer to the documentation ' \
34
- 'to make sure you define the home path properly.'
35
-
36
- expect { subject }.to raise_error(
37
- ArgumentError, msg
38
- )
39
- end
40
- end
41
- end
42
-
43
- context 'when a name of the fixture has no link to the home path' do
44
- let(:fixture) do
45
- instance_double(
46
- 'SPV::Fixture',
47
- :has_link_to_home_path? => false
48
- )
49
- end
50
-
51
- it 'does not set any home path' do
52
- expect(fixture).to_not receive(:set_home_path)
53
-
54
- subject
55
- end
56
- end
57
- end
58
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe SitePrism::Page do
4
- subject { SitePrism::Page.new }
5
-
6
- let(:applier) do
7
- instance_double(
8
- 'SPV::Applier',
9
- apply_vcr: true
10
- )
11
- end
12
-
13
- before do
14
- SitePrism::Page.vcr_options_for_load { }
15
- end
16
-
17
- describe '.new' do
18
- before do
19
- SPV::Applier.stub(:new).and_return(applier)
20
- end
21
-
22
- it 'initializes the fixtures applier' do
23
- expect(SPV::Applier).to receive(:new).with(
24
- kind_of(described_class)
25
- )
26
-
27
- subject
28
- end
29
- end
30
-
31
- describe '#load_and_apply_vcr' do
32
- before do
33
- subject.stub(:load)
34
- subject.stub(:shift_event).and_yield.and_return(applier)
35
- end
36
-
37
- it 'shifts a load event to the applier' do
38
- expect(subject).to receive(:shift_event).and_yield.and_return(applier)
39
- expect(subject).to receive(:load).with('some arguments')
40
-
41
- subject.load_and_apply_vcr('some arguments')
42
- end
43
-
44
- it 'applies vcr' do
45
- expect(applier).to receive(:apply_vcr)
46
-
47
- subject.load_and_apply_vcr
48
- end
49
- end
50
- end