nanoc 4.8.11 → 4.8.12

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