nanoc 4.8.11 → 4.8.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +5 -5
  2. data/NEWS.md +10 -0
  3. data/README.md +1 -0
  4. data/lib/nanoc/base/entities/pattern.rb +2 -0
  5. data/lib/nanoc/base/entities/site.rb +1 -1
  6. data/lib/nanoc/base/repos/action_sequence_store.rb +4 -1
  7. data/lib/nanoc/base/repos/compiled_content_cache.rb +2 -2
  8. data/lib/nanoc/base/services/compiler.rb +4 -1
  9. data/lib/nanoc/base/services/compiler/stages/cleanup.rb +3 -3
  10. data/lib/nanoc/filters/colorize_syntax/colorizers.rb +2 -3
  11. data/lib/nanoc/filters/pandoc.rb +1 -1
  12. data/lib/nanoc/version.rb +1 -1
  13. data/nanoc.manifest +4 -6
  14. data/spec/gem_spec.rb +21 -0
  15. data/spec/manifest_spec.rb +2 -2
  16. data/spec/nanoc/base/compiler_spec.rb +7 -2
  17. data/spec/nanoc/base/entities/pattern_spec.rb +6 -0
  18. data/spec/nanoc/base/repos/compiled_content_cache_spec.rb +9 -1
  19. data/spec/nanoc/base/repos/dependency_store_spec.rb +116 -9
  20. data/spec/nanoc/base/repos/store_spec.rb +34 -0
  21. data/spec/nanoc/base/services/compiler/phases/cache_spec.rb +9 -1
  22. data/spec/nanoc/base/services/compiler/stages/cleanup_spec.rb +1 -1
  23. data/spec/nanoc/base/services/compiler/stages/compile_reps_spec.rb +1 -1
  24. data/spec/nanoc/base/services/notification_center_spec.rb +25 -0
  25. data/spec/nanoc/base/services/outdatedness_checker_spec.rb +3 -3
  26. data/spec/nanoc/base/services/outdatedness_rules_spec.rb +2 -2
  27. data/spec/nanoc/base/views/post_compile_item_rep_view_spec.rb +10 -2
  28. data/spec/nanoc/filters/colorize_syntax/rouge_spec.rb +66 -108
  29. data/spec/nanoc/regressions/gh_1248_spec.rb +24 -0
  30. data/spec/nanoc/rule_dsl/rule_spec.rb +111 -0
  31. data/spec/spec_helper.rb +0 -6
  32. data/test/base/test_compiler.rb +0 -54
  33. data/test/filters/test_pandoc.rb +2 -2
  34. data/test/helper.rb +0 -36
  35. metadata +7 -9
  36. data/Appraisals +0 -13
  37. data/test/base/test_dependency_tracker.rb +0 -265
  38. data/test/base/test_notification_center.rb +0 -32
  39. data/test/base/test_store.rb +0 -39
  40. data/test/rule_dsl/test_rule.rb +0 -27
  41. data/test/test_gem.rb +0 -30
@@ -56,4 +56,38 @@ describe Nanoc::Int::Store do
56
56
  end
57
57
  end
58
58
  end
59
+
60
+ let(:test_store_klass) do
61
+ Class.new(Nanoc::Int::Store) do
62
+ def data
63
+ @data
64
+ end
65
+
66
+ def data=(new_data)
67
+ @data = new_data
68
+ end
69
+ end
70
+ end
71
+
72
+ it 'deletes and reloads on error' do
73
+ store = test_store_klass.new('test.db', 1)
74
+
75
+ # Create
76
+ store.load
77
+ store.data = { fun: 'sure' }
78
+ store.store
79
+
80
+ # Test stored values
81
+ store = test_store_klass.new('test.db', 1)
82
+ store.load
83
+ expect(store.data).to eq(fun: 'sure')
84
+
85
+ # Mess up
86
+ File.write('test.db', 'Damn {}#}%@}$^)@&$&*^#@ broken stores!!!')
87
+
88
+ # Reload
89
+ store = test_store_klass.new('test.db', 1)
90
+ store.load
91
+ expect(store.data).to be_nil
92
+ end
59
93
  end
@@ -10,7 +10,7 @@ describe Nanoc::Int::Compiler::Phases::Cache do
10
10
  end
11
11
 
12
12
  let(:compiled_content_cache) do
13
- Nanoc::Int::CompiledContentCache.new(items: [item])
13
+ Nanoc::Int::CompiledContentCache.new(items: [item], site: site)
14
14
  end
15
15
 
16
16
  let(:snapshot_repo) { Nanoc::Int::SnapshotRepo.new }
@@ -32,6 +32,14 @@ describe Nanoc::Int::Compiler::Phases::Cache do
32
32
  let(:item) { Nanoc::Int::Item.new('item content', {}, '/donkey.md') }
33
33
  let(:rep) { Nanoc::Int::ItemRep.new(item, :latex) }
34
34
 
35
+ let(:site) do
36
+ Nanoc::Int::Site.new(
37
+ config: Nanoc::Int::Configuration.new.with_defaults,
38
+ code_snippets: [],
39
+ data_source: Nanoc::Int::InMemDataSource.new([item], []),
40
+ )
41
+ end
42
+
35
43
  describe '#run' do
36
44
  subject { phase.call(rep, is_outdated: is_outdated) }
37
45
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe Nanoc::Int::Compiler::Stages::Cleanup do
4
- let(:stage) { described_class.new(config) }
4
+ let(:stage) { described_class.new(config.output_dirs) }
5
5
 
6
6
  let(:config) do
7
7
  Nanoc::Int::Configuration.new.with_defaults
@@ -25,7 +25,7 @@ describe Nanoc::Int::Compiler::Stages::CompileReps do
25
25
  let(:action_provider) { double(:action_provider) }
26
26
  let(:action_sequences) { double(:action_sequences) }
27
27
  let(:reps) { Nanoc::Int::ItemRepRepo.new }
28
- let(:compiled_content_cache) { Nanoc::Int::CompiledContentCache.new(items: items) }
28
+ let(:compiled_content_cache) { Nanoc::Int::CompiledContentCache.new(items: items, site: site) }
29
29
  let(:snapshot_repo) { Nanoc::Int::SnapshotRepo.new }
30
30
 
31
31
  let(:outdatedness_store) { Nanoc::Int::OutdatednessStore.new(site: site) }
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe Nanoc::Int::NotificationCenter do
4
+ it 'receives notification after subscribing' do
5
+ ping_received = false
6
+ Nanoc::Int::NotificationCenter.on :ping_received, :test do
7
+ ping_received = true
8
+ end
9
+
10
+ Nanoc::Int::NotificationCenter.post :ping_received
11
+ expect(ping_received).to be
12
+ end
13
+
14
+ it 'does not receive notification after unsubscribing' do
15
+ ping_received = false
16
+ Nanoc::Int::NotificationCenter.on :ping_received, :test do
17
+ ping_received = true
18
+ end
19
+
20
+ Nanoc::Int::NotificationCenter.remove :ping_received, :test
21
+
22
+ Nanoc::Int::NotificationCenter.post :ping_received
23
+ expect(ping_received).not_to be
24
+ end
25
+ end
@@ -42,7 +42,7 @@ describe Nanoc::Int::OutdatednessChecker do
42
42
  end
43
43
 
44
44
  let(:action_sequence_store) do
45
- Nanoc::Int::ActionSequenceStore.new
45
+ Nanoc::Int::ActionSequenceStore.new(site: site)
46
46
  end
47
47
 
48
48
  let(:old_action_sequence_for_item_rep) do
@@ -74,7 +74,7 @@ describe Nanoc::Int::OutdatednessChecker do
74
74
 
75
75
  let(:checksum_store) { Nanoc::Int::ChecksumStore.new(objects: items.to_a + layouts.to_a) }
76
76
 
77
- let(:config) { Nanoc::Int::Configuration.new }
77
+ let(:config) { Nanoc::Int::Configuration.new.with_defaults }
78
78
 
79
79
  before do
80
80
  checksum_store.add(item)
@@ -182,7 +182,7 @@ describe Nanoc::Int::OutdatednessChecker do
182
182
  let(:other_item) { Nanoc::Int::Item.new('other stuff', {}, '/other.md') }
183
183
  let(:other_item_rep) { Nanoc::Int::ItemRep.new(other_item, :default) }
184
184
 
185
- let(:config) { Nanoc::Int::Configuration.new }
185
+ let(:config) { Nanoc::Int::Configuration.new.with_defaults }
186
186
 
187
187
  let(:items) { Nanoc::Int::ItemCollection.new(config, [item, other_item]) }
188
188
 
@@ -21,7 +21,7 @@ describe Nanoc::Int::OutdatednessRules do
21
21
  let(:item_rep) { Nanoc::Int::ItemRep.new(item, :default) }
22
22
  let(:item) { Nanoc::Int::Item.new('stuff', {}, '/foo.md') }
23
23
 
24
- let(:config) { Nanoc::Int::Configuration.new }
24
+ let(:config) { Nanoc::Int::Configuration.new.with_defaults }
25
25
  let(:code_snippets) { [] }
26
26
  let(:objects) { [config] + code_snippets + [item] }
27
27
 
@@ -36,7 +36,7 @@ describe Nanoc::Int::OutdatednessRules do
36
36
  let(:action_sequences) { {} }
37
37
  let(:reps) { Nanoc::Int::ItemRepRepo.new }
38
38
  let(:dependency_store) { Nanoc::Int::DependencyStore.new(items, layouts, config) }
39
- let(:action_sequence_store) { Nanoc::Int::ActionSequenceStore.new }
39
+ let(:action_sequence_store) { Nanoc::Int::ActionSequenceStore.new(site: site) }
40
40
  let(:checksum_store) { Nanoc::Int::ChecksumStore.new(objects: objects) }
41
41
 
42
42
  let(:checksums) do
@@ -23,7 +23,7 @@ describe Nanoc::PostCompileItemRepView do
23
23
 
24
24
  let(:reps) { double(:reps) }
25
25
  let(:items) { Nanoc::Int::ItemCollection.new(config) }
26
- let(:config) { Nanoc::Int::Configuration.new }
26
+ let(:config) { Nanoc::Int::Configuration.new.with_defaults }
27
27
  let(:dependency_tracker) { Nanoc::Int::DependencyTracker.new(double(:dependency_store)) }
28
28
  let(:compilation_context) { double(:compilation_context, compiled_content_cache: compiled_content_cache) }
29
29
  let(:snapshot_repo) { double(:snapshot_repo) }
@@ -36,8 +36,16 @@ describe Nanoc::PostCompileItemRepView do
36
36
  }
37
37
  end
38
38
 
39
+ let(:site) do
40
+ Nanoc::Int::Site.new(
41
+ config: config,
42
+ code_snippets: [],
43
+ data_source: Nanoc::Int::InMemDataSource.new(items, []),
44
+ )
45
+ end
46
+
39
47
  let(:compiled_content_cache) do
40
- Nanoc::Int::CompiledContentCache.new(items: items).tap do |ccc|
48
+ Nanoc::Int::CompiledContentCache.new(items: items, site: site).tap do |ccc|
41
49
  ccc[item_rep] = snapshot_contents
42
50
  end
43
51
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'rouge'
4
4
 
5
- describe Nanoc::Filters::ColorizeSyntax, filter: true, rouge: true do
5
+ describe Nanoc::Filters::ColorizeSyntax, filter: true do
6
6
  subject { filter.setup_and_run(input, default_colorizer: :rouge, rouge: params) }
7
7
  let(:filter) { ::Nanoc::Filters::ColorizeSyntax.new }
8
8
  let(:params) { {} }
@@ -28,10 +28,15 @@ describe Nanoc::Filters::ColorizeSyntax, filter: true, rouge: true do
28
28
  end
29
29
 
30
30
  context 'with Rouge' do
31
- context 'with 1.x', if: Rouge.version < '2' do
32
- context 'with default options' do
33
- it { is_expected.to eql output }
34
- end
31
+ context 'with default options' do
32
+ it { is_expected.to eql output }
33
+ end
34
+
35
+ context 'with legacy' do
36
+ let(:legacy) { true }
37
+ let(:params) { super().merge(legacy: legacy) }
38
+
39
+ it { is_expected.to eql output }
35
40
 
36
41
  context 'with pygments wrapper' do
37
42
  let(:wrap) { true }
@@ -53,12 +58,12 @@ describe Nanoc::Filters::ColorizeSyntax, filter: true, rouge: true do
53
58
  let(:output) do
54
59
  <<~EOS
55
60
  before
56
- <pre><code class="language-ruby"><table style="border-spacing: 0"><tbody><tr>
57
- <td class="gutter gl" style="text-align: right"><pre class="lineno">1
58
- 2</pre></td>
59
- <td class="code"><pre> <span class="k">def</span> <span class="nf">foo</span>
60
- <span class="k">end</span><span class="w">
61
- </span></pre></td>
61
+ <pre><code class="language-ruby"><table class="rouge-table"><tbody><tr>
62
+ <td class="rouge-gutter gl"><pre class="lineno">1
63
+ 2
64
+ </pre></td>
65
+ <td class="rouge-code"><pre> <span class="k">def</span> <span class="nf">foo</span>
66
+ <span class="k">end</span></pre></td>
62
67
  </tr></tbody></table></code></pre>
63
68
  after
64
69
  EOS
@@ -68,129 +73,82 @@ describe Nanoc::Filters::ColorizeSyntax, filter: true, rouge: true do
68
73
  end
69
74
  end
70
75
 
71
- context 'with 2.x', if: Rouge.version >= '2' do
72
- context 'with default options' do
73
- it { is_expected.to eql output }
74
- end
75
-
76
- context 'with legacy' do
77
- let(:legacy) { true }
78
- let(:params) { super().merge(legacy: legacy) }
79
-
80
- it { is_expected.to eql output }
81
-
82
- context 'with pygments wrapper' do
83
- let(:wrap) { true }
84
- let(:params) { super().merge(wrap: wrap) }
85
-
86
- it { is_expected.to eql output }
87
-
88
- context 'with css_class' do
89
- let(:css_class) { 'nanoc' }
90
- let(:params) { super().merge(css_class: css_class) }
76
+ context 'with formater' do
77
+ let(:params) { super().merge(formatter: formatter) }
91
78
 
92
- it { is_expected.to eql output }
93
- end
94
- end
79
+ context 'with inline' do
80
+ let(:formatter) { Rouge::Formatters::HTMLInline.new(theme) }
95
81
 
96
- context 'with line number' do
97
- let(:line_numbers) { true }
98
- let(:params) { super().merge(line_numbers: line_numbers) }
82
+ context 'with github theme' do
83
+ let(:theme) { Rouge::Themes::Github.new }
99
84
  let(:output) do
100
85
  <<~EOS
101
86
  before
102
- <pre><code class="language-ruby"><table class="rouge-table"><tbody><tr>
103
- <td class="rouge-gutter gl"><pre class="lineno">1
104
- 2
105
- </pre></td>
106
- <td class="rouge-code"><pre> <span class="k">def</span> <span class="nf">foo</span>
107
- <span class="k">end</span></pre></td>
108
- </tr></tbody></table></code></pre>
87
+ <pre><code class="language-ruby"> <span style="color: #000000;font-weight: bold">def</span> <span style="color: #990000;font-weight: bold">foo</span>
88
+ <span style="color: #000000;font-weight: bold">end</span></code></pre>
109
89
  after
110
90
  EOS
111
91
  end
112
92
 
113
93
  it { is_expected.to eql output }
114
94
  end
115
- end
116
-
117
- context 'with formater' do
118
- let(:params) { super().merge(formatter: formatter) }
119
-
120
- context 'with inline' do
121
- let(:formatter) { Rouge::Formatters::HTMLInline.new(theme) }
122
-
123
- context 'with github theme' do
124
- let(:theme) { Rouge::Themes::Github.new }
125
- let(:output) do
126
- <<~EOS
127
- before
128
- <pre><code class="language-ruby"> <span style="color: #000000;font-weight: bold">def</span> <span style="color: #990000;font-weight: bold">foo</span>
129
- <span style="color: #000000;font-weight: bold">end</span></code></pre>
130
- after
131
- EOS
132
- end
133
-
134
- it { is_expected.to eql output }
135
- end
136
-
137
- context 'with colorful theme' do
138
- let(:theme) { Rouge::Themes::Colorful.new }
139
- let(:output) do
140
- <<~EOS
141
- before
142
- <pre><code class="language-ruby"> <span style="color: #080;font-weight: bold">def</span> <span style="color: #06B;font-weight: bold">foo</span>
143
- <span style="color: #080;font-weight: bold">end</span></code></pre>
144
- after
145
- EOS
146
- end
147
-
148
- it { is_expected.to eql output }
149
- end
150
- end
151
95
 
152
- context 'with linewise' do
153
- let(:formatter) { Rouge::Formatters::HTMLLinewise.new(Rouge::Formatters::HTML.new) }
96
+ context 'with colorful theme' do
97
+ let(:theme) { Rouge::Themes::Colorful.new }
154
98
  let(:output) do
155
99
  <<~EOS
156
100
  before
157
- <pre><code class="language-ruby"><div class="line-1"> <span class="k">def</span> <span class="nf">foo</span>
158
- </div>
159
- <div class="line-2"> <span class="k">end</span>
160
- </div></code></pre>
101
+ <pre><code class="language-ruby"> <span style="color: #080;font-weight: bold">def</span> <span style="color: #06B;font-weight: bold">foo</span>
102
+ <span style="color: #080;font-weight: bold">end</span></code></pre>
161
103
  after
162
104
  EOS
163
105
  end
164
106
 
165
107
  it { is_expected.to eql output }
166
108
  end
109
+ end
167
110
 
168
- context 'with pygments' do
169
- let(:wrap) { true }
170
- let(:css_class) { 'codehilite' }
171
- let(:formatter) { Rouge::Formatters::HTMLPygments.new(Rouge::Formatters::HTML.new) }
172
-
173
- it { is_expected.to eql output }
111
+ context 'with linewise' do
112
+ let(:formatter) { Rouge::Formatters::HTMLLinewise.new(Rouge::Formatters::HTML.new) }
113
+ let(:output) do
114
+ <<~EOS
115
+ before
116
+ <pre><code class="language-ruby"><div class="line-1"> <span class="k">def</span> <span class="nf">foo</span>
117
+ </div>
118
+ <div class="line-2"> <span class="k">end</span>
119
+ </div></code></pre>
120
+ after
121
+ EOS
174
122
  end
175
123
 
176
- context 'with table' do
177
- let(:formatter) { Rouge::Formatters::HTMLTable.new(Rouge::Formatters::HTML.new) }
178
- let(:output) do
179
- <<~EOS
180
- before
181
- <pre><code class="language-ruby"><table class="rouge-table"><tbody><tr>
182
- <td class="rouge-gutter gl"><pre class="lineno">1
183
- 2
184
- </pre></td>
185
- <td class="rouge-code"><pre> <span class="k">def</span> <span class="nf">foo</span>
186
- <span class="k">end</span></pre></td>
187
- </tr></tbody></table></code></pre>
188
- after
189
- EOS
190
- end
124
+ it { is_expected.to eql output }
125
+ end
191
126
 
192
- it { is_expected.to eql output }
127
+ context 'with pygments' do
128
+ let(:wrap) { true }
129
+ let(:css_class) { 'codehilite' }
130
+ let(:formatter) { Rouge::Formatters::HTMLPygments.new(Rouge::Formatters::HTML.new) }
131
+
132
+ it { is_expected.to eql output }
133
+ end
134
+
135
+ context 'with table' do
136
+ let(:formatter) { Rouge::Formatters::HTMLTable.new(Rouge::Formatters::HTML.new) }
137
+ let(:output) do
138
+ <<~EOS
139
+ before
140
+ <pre><code class="language-ruby"><table class="rouge-table"><tbody><tr>
141
+ <td class="rouge-gutter gl"><pre class="lineno">1
142
+ 2
143
+ </pre></td>
144
+ <td class="rouge-code"><pre> <span class="k">def</span> <span class="nf">foo</span>
145
+ <span class="k">end</span></pre></td>
146
+ </tr></tbody></table></code></pre>
147
+ after
148
+ EOS
193
149
  end
150
+
151
+ it { is_expected.to eql output }
194
152
  end
195
153
  end
196
154
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe 'GH-1248', site: true, stdio: true do
4
+ before do
5
+ File.write('content/stuff.html', 'hi')
6
+
7
+ File.write('Rules', <<~EOS)
8
+ preprocess do
9
+ @config[:output_dir] = 'ootpoot'
10
+ end
11
+
12
+ passthrough '/**/*'
13
+ EOS
14
+ end
15
+
16
+ before do
17
+ Nanoc::CLI.run(%w[compile])
18
+ end
19
+
20
+ example do
21
+ expect { Nanoc::CLI.run(%w[compile --verbose]) }
22
+ .not_to output(/identical .* ootpoot\/stuff.html/).to_stdout
23
+ end
24
+ end
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe Nanoc::RuleDSL::Rule do
4
+ subject(:rule) do
5
+ Nanoc::RuleDSL::Rule.new(pattern, :xml, block)
6
+ end
7
+
8
+ let(:pattern) { Nanoc::Int::Pattern.from(%r{/(.*)/(.*)/}) }
9
+ let(:block) { proc {} }
10
+
11
+ describe '#matches' do
12
+ subject { rule.send(:matches, identifier) }
13
+
14
+ context 'does not match' do
15
+ let(:identifier) { '/moo/' }
16
+ it { is_expected.to be_nil }
17
+ end
18
+
19
+ context 'matches' do
20
+ let(:identifier) { '/anything/else/' }
21
+ it { is_expected.to eql(%w[anything else]) }
22
+ end
23
+ end
24
+
25
+ describe '#initialize' do
26
+ context 'with snapshot_name' do
27
+ subject { Nanoc::RuleDSL::Rule.new(pattern, :xml, proc {}, snapshot_name: :donkey) }
28
+
29
+ its(:rep_name) { is_expected.to eql(:xml) }
30
+ its(:pattern) { is_expected.to eql(pattern) }
31
+ its(:snapshot_name) { is_expected.to eql(:donkey) }
32
+ end
33
+
34
+ context 'without snapshot_name' do
35
+ subject { Nanoc::RuleDSL::Rule.new(pattern, :xml, proc {}) }
36
+
37
+ its(:rep_name) { is_expected.to eql(:xml) }
38
+ its(:pattern) { is_expected.to eql(pattern) }
39
+ its(:snapshot_name) { is_expected.to be_nil }
40
+ end
41
+ end
42
+
43
+ describe '#applicable_to?' do
44
+ subject { rule.applicable_to?(item) }
45
+
46
+ let(:item) { Nanoc::Int::Item.new('', {}, '/foo.md') }
47
+
48
+ context 'pattern matches' do
49
+ let(:pattern) { Nanoc::Int::Pattern.from(%r{^/foo.*}) }
50
+ it { is_expected.to be }
51
+ end
52
+
53
+ context 'pattern does not match' do
54
+ let(:pattern) { Nanoc::Int::Pattern.from(%r{^/bar.*}) }
55
+ it { is_expected.not_to be }
56
+ end
57
+ end
58
+
59
+ describe '#apply_to' do
60
+ subject { rule.apply_to(rep, site: site, executor: executor, view_context: view_context) }
61
+
62
+ let(:block) do
63
+ proc { self }
64
+ end
65
+
66
+ let(:item) { Nanoc::Int::Item.new('', {}, '/foo.md') }
67
+ let(:rep) { Nanoc::Int::ItemRep.new(item, :amazings) }
68
+
69
+ let(:site) { Nanoc::Int::Site.new(config: config, data_source: data_source, code_snippets: []) }
70
+ let(:data_source) { Nanoc::Int::InMemDataSource.new(items, layouts) }
71
+ let(:config) { Nanoc::Int::Configuration.new }
72
+ let(:executor) { nil }
73
+ let(:view_context) { Nanoc::ViewContextForPreCompilation.new(items: items) }
74
+ let(:items) { Nanoc::Int::ItemCollection.new(config, []) }
75
+ let(:layouts) { Nanoc::Int::LayoutCollection.new(config, []) }
76
+
77
+ it 'returns a rule context' do
78
+ expect(subject).to be_a(Nanoc::RuleDSL::RuleContext)
79
+ end
80
+
81
+ it 'makes rep accessible' do
82
+ expect(subject.instance_eval { rep }.unwrap).to eql(rep)
83
+ expect(subject.instance_eval { @rep }.unwrap).to eql(rep)
84
+ end
85
+
86
+ it 'makes item_rep accessible' do
87
+ expect(subject.instance_eval { item_rep }.unwrap).to eql(rep)
88
+ expect(subject.instance_eval { @item_rep }.unwrap).to eql(rep)
89
+ end
90
+
91
+ it 'makes item accessible' do
92
+ expect(subject.instance_eval { item }.unwrap).to eql(item)
93
+ expect(subject.instance_eval { @item }.unwrap).to eql(item)
94
+ end
95
+
96
+ it 'makes items accessible' do
97
+ expect(subject.instance_eval { items }.unwrap).to eql(items)
98
+ expect(subject.instance_eval { @items }.unwrap).to eql(items)
99
+ end
100
+
101
+ it 'makes layouts accessible' do
102
+ expect(subject.instance_eval { layouts }.unwrap).to eql(layouts)
103
+ expect(subject.instance_eval { @layouts }.unwrap).to eql(layouts)
104
+ end
105
+
106
+ it 'makes config accessible' do
107
+ expect(subject.instance_eval { config }.unwrap).to eql(config)
108
+ expect(subject.instance_eval { @config }.unwrap).to eql(config)
109
+ end
110
+ end
111
+ end