smartgen 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +0 -8
- data/Gemfile.lock +25 -31
- data/lib/smartgen/object_hash.rb +2 -2
- data/lib/smartgen/version.rb +1 -1
- metadata +138 -194
- data/spec/fixtures/expectations/common/another_index.html +0 -13
- data/spec/fixtures/expectations/common/index.html +0 -8
- data/spec/fixtures/expectations/common/other_index.html +0 -13
- data/spec/fixtures/expectations/erb/index.html +0 -15
- data/spec/fixtures/expectations/erb/with_layout/index.html +0 -19
- data/spec/fixtures/expectations/indexer/index_with_indexer.html +0 -16
- data/spec/fixtures/expectations/indexer/index_with_indexer_and_numbered_index.html +0 -16
- data/spec/fixtures/expectations/with_layout/index.html +0 -12
- data/spec/fixtures/expectations/with_layout/index_with_metadata.html +0 -43
- data/spec/fixtures/expectations/with_layout/index_with_specific_metadata.html +0 -44
- data/spec/fixtures/src/assets/images/image.gif +0 -0
- data/spec/fixtures/src/assets/javascripts/somelib.js +0 -2
- data/spec/fixtures/src/assets/stylesheets/style.css +0 -2
- data/spec/fixtures/src/common/another_index.md +0 -12
- data/spec/fixtures/src/common/index.textile +0 -10
- data/spec/fixtures/src/common/other_index.markdown +0 -12
- data/spec/fixtures/src/common/somefile +0 -10
- data/spec/fixtures/src/erb/index.html.erb +0 -7
- data/spec/fixtures/src/erb/with_layout/index.html.erb +0 -7
- data/spec/fixtures/src/erb/with_layout/layout.html.erb +0 -5
- data/spec/fixtures/src/indexer/index_with_indexer.textile +0 -26
- data/spec/fixtures/src/indexer/index_with_indexer_and_numbered_index.textile +0 -26
- data/spec/fixtures/src/layout.html.erb +0 -5
- data/spec/fixtures/src/layout_with_metadata.html.erb +0 -22
- data/spec/fixtures/src/layout_with_specific_metadata.html.erb +0 -23
- data/spec/fixtures/src/metadata.yml +0 -43
- data/spec/fixtures/src/with_layout/index.textile +0 -10
- data/spec/fixtures/src/with_layout/index_with_specific_metadata.textile +0 -10
- data/spec/lib/smartgen/configuration_spec.rb +0 -5
- data/spec/lib/smartgen/engines/base_spec.rb +0 -92
- data/spec/lib/smartgen/engines/erb_spec.rb +0 -37
- data/spec/lib/smartgen/engines/markdown_spec.rb +0 -23
- data/spec/lib/smartgen/engines/textile_spec.rb +0 -19
- data/spec/lib/smartgen/generator_spec.rb +0 -272
- data/spec/lib/smartgen/indexer_spec.rb +0 -122
- data/spec/lib/smartgen/markup_file_spec.rb +0 -168
- data/spec/lib/smartgen/object_hash_spec.rb +0 -91
- data/spec/lib/smartgen/renderers/erb_spec.rb +0 -38
- data/spec/lib/smartgen/resource_spec.rb +0 -73
- data/spec/lib/smartgen/watcher_spec.rb +0 -71
- data/spec/lib/smartgen_spec.rb +0 -18
- data/spec/sandbox/.gitkeep +0 -0
- data/spec/spec_helper.rb +0 -37
@@ -1,122 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Smartgen::Indexer do
|
4
|
-
matcher :have_tag do |tag, attributes|
|
5
|
-
match do |actual|
|
6
|
-
tags = Nokogiri::HTML(actual).css(tag.to_s)
|
7
|
-
tags.present? && tags.any? do |tag|
|
8
|
-
attributes.all? do |attribute, value|
|
9
|
-
tag.has_attribute?(attribute.to_s) && tag[attribute.to_s] == value
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
matcher :have_tag_with_contents do |tag, content|
|
16
|
-
match do |actual|
|
17
|
-
tags = Nokogiri::HTML(actual).css(tag.to_s)
|
18
|
-
tags.present? && tags.any? do |tag|
|
19
|
-
tag.content == content
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def html
|
25
|
-
"<h1>Some header</h1>"
|
26
|
-
end
|
27
|
-
|
28
|
-
subject { Smartgen::Indexer.new html }
|
29
|
-
|
30
|
-
describe "addition of IDs" do
|
31
|
-
def html
|
32
|
-
return <<-HTML
|
33
|
-
<html>
|
34
|
-
<body>
|
35
|
-
<h1>A h1 header</h1>
|
36
|
-
<h2>A h2 header</h2>
|
37
|
-
<h3>A h3 header</h3>
|
38
|
-
<h4>A h4 header</h4>
|
39
|
-
<h5>A h5 header</h5>
|
40
|
-
<h6>A h6 header</h6>
|
41
|
-
</body>
|
42
|
-
</html>
|
43
|
-
HTML
|
44
|
-
end
|
45
|
-
|
46
|
-
1.upto(6).each do |header_level|
|
47
|
-
it "should add IDs for each <h#{header_level}> tag in the result" do
|
48
|
-
subject.result.should have_tag("h#{header_level}", :id => "a-h#{header_level}-header")
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
describe "index" do
|
54
|
-
def html
|
55
|
-
return <<-HTML
|
56
|
-
<html>
|
57
|
-
<body>
|
58
|
-
<h1>A h1 header</h1>
|
59
|
-
<h2>A h2 header</h2>
|
60
|
-
<h3>A h3 header</h3>
|
61
|
-
<h3>Some other h3 header</h3>
|
62
|
-
<h2>Another h2 header</h2>
|
63
|
-
<h5>A h5 header</h5>
|
64
|
-
<h2>Yet Another h2 header</h2>
|
65
|
-
<h3>Yet Another h3 header</h3>
|
66
|
-
<h1>Other h1 header</h1>
|
67
|
-
</body>
|
68
|
-
</html>
|
69
|
-
HTML
|
70
|
-
end
|
71
|
-
|
72
|
-
it "should return an index with headers data hierarquically distributed" do
|
73
|
-
expected_index = [
|
74
|
-
{ :text => 'A h1 header', :id => 'a-h1-header', :level => 1, :children => [
|
75
|
-
{ :text => 'A h2 header', :id => 'a-h2-header', :level => 2, :children => [
|
76
|
-
{ :text => 'A h3 header', :id => 'a-h3-header', :level => 3, :children => [] },
|
77
|
-
{ :text => 'Some other h3 header', :id => 'some-other-h3-header', :level => 3, :children => [] }
|
78
|
-
] },
|
79
|
-
{ :text => 'Another h2 header', :id => 'another-h2-header', :level => 2, :children => [
|
80
|
-
{ :text => 'A h5 header', :id => 'a-h5-header', :level => 5, :children => [] }
|
81
|
-
] },
|
82
|
-
{ :text => 'Yet Another h2 header', :id => 'yet-another-h2-header', :level => 2, :children => [
|
83
|
-
{ :text => 'Yet Another h3 header', :id => 'yet-another-h3-header', :level => 3, :children => [] }
|
84
|
-
] },
|
85
|
-
]},
|
86
|
-
{ :text => 'Other h1 header', :id => 'other-h1-header', :level => 1, :children => [] }
|
87
|
-
]
|
88
|
-
|
89
|
-
subject.index.should == expected_index
|
90
|
-
end
|
91
|
-
|
92
|
-
context "when numbered_index options is given" do
|
93
|
-
subject { Smartgen::Indexer.new html, :numbered_index => true }
|
94
|
-
|
95
|
-
it "should add the numbered index to header contents" do
|
96
|
-
subject.result.should have_tag_with_contents("h1", "1 A h1 header")
|
97
|
-
subject.result.should have_tag_with_contents("h2", "1.1 A h2 header")
|
98
|
-
subject.result.should have_tag_with_contents("h3", "1.1.2 Some other h3 header")
|
99
|
-
end
|
100
|
-
|
101
|
-
it "should return an index with headers data hierarquically distributed with numbered index" do
|
102
|
-
expected_index = [
|
103
|
-
{ :text => 'A h1 header', :id => 'a-h1-header', :level => 1, :numbered_index => '1', :children => [
|
104
|
-
{ :text => 'A h2 header', :id => 'a-h2-header', :level => 2, :numbered_index => '1.1', :children => [
|
105
|
-
{ :text => 'A h3 header', :id => 'a-h3-header', :level => 3, :numbered_index => '1.1.1', :children => [] },
|
106
|
-
{ :text => 'Some other h3 header', :id => 'some-other-h3-header', :level => 3, :numbered_index => '1.1.2', :children => [] }
|
107
|
-
] },
|
108
|
-
{ :text => 'Another h2 header', :id => 'another-h2-header', :level => 2, :numbered_index => '1.2', :children => [
|
109
|
-
{ :text => 'A h5 header', :id => 'a-h5-header', :level => 5, :numbered_index => '1.2.1', :children => [] }
|
110
|
-
] },
|
111
|
-
{ :text => 'Yet Another h2 header', :id => 'yet-another-h2-header', :level => 2, :numbered_index => '1.3', :children => [
|
112
|
-
{ :text => 'Yet Another h3 header', :id => 'yet-another-h3-header', :level => 3, :numbered_index => '1.3.1', :children => [] }
|
113
|
-
] },
|
114
|
-
]},
|
115
|
-
{ :text => 'Other h1 header', :id => 'other-h1-header', :level => 1, :numbered_index => '2', :children => [] }
|
116
|
-
]
|
117
|
-
|
118
|
-
subject.index.should == expected_index
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
@@ -1,168 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Smartgen::MarkupFile do
|
4
|
-
def path
|
5
|
-
fixture('src/common/index.textile')
|
6
|
-
end
|
7
|
-
|
8
|
-
subject { Smartgen::MarkupFile.new path }
|
9
|
-
|
10
|
-
describe "engine registration" do
|
11
|
-
before do
|
12
|
-
Smartgen::MarkupFile.engines.clear
|
13
|
-
end
|
14
|
-
|
15
|
-
after do
|
16
|
-
Smartgen::MarkupFile.engines.clear
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should register textile engine by default" do
|
20
|
-
Smartgen::MarkupFile.engines.one? { |engine| engine.instance_of?(Smartgen::Engine::Textile) }.should be_true, "Textile was not registered as engine"
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should register markdown engine by default" do
|
24
|
-
Smartgen::MarkupFile.engines.one? { |engine| engine.instance_of?(Smartgen::Engine::Markdown) }.should be_true, "Markdown was not registered as engine"
|
25
|
-
end
|
26
|
-
|
27
|
-
class MyEngine < Smartgen::Engine::Base
|
28
|
-
protected
|
29
|
-
def parse(body)
|
30
|
-
"some processing"
|
31
|
-
end
|
32
|
-
|
33
|
-
def extensions
|
34
|
-
['.something', '.otherext']
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should register an engine" do
|
39
|
-
Smartgen::MarkupFile.register(MyEngine)
|
40
|
-
Smartgen::MarkupFile.engines.one? { |engine| engine.instance_of?(MyEngine) }.should be_true, "MyEngine was not registered as engine"
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should register the engine with high priority" do
|
44
|
-
Smartgen::MarkupFile.register(MyEngine)
|
45
|
-
Smartgen::MarkupFile.engines.first.should be_an_instance_of(MyEngine)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe "attributes" do
|
50
|
-
it "should have a file path" do
|
51
|
-
subject.path.should == path
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should have a filename" do
|
55
|
-
subject.filename.should == File.basename(path, File.extname(path))
|
56
|
-
end
|
57
|
-
|
58
|
-
context "when filename ends with .html" do
|
59
|
-
def path
|
60
|
-
fixture('src/erb/index.html.erb')
|
61
|
-
end
|
62
|
-
|
63
|
-
it "should not have .html in filename" do
|
64
|
-
subject.filename.should == File.basename(path, ".html#{File.extname(path)}")
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
it "should have an extension" do
|
69
|
-
subject.extension.should == File.extname(path)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
describe "contents" do
|
74
|
-
it "should returns its raw contents" do
|
75
|
-
subject.raw_contents.should == File.read(path)
|
76
|
-
end
|
77
|
-
|
78
|
-
it "should return its contents" do
|
79
|
-
subject.contents.should == File.read(fixture('expectations/common/index.html'))
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
context "engines usage" do
|
84
|
-
context "using default engine" do
|
85
|
-
it "should use textile as markup engine when using defaults for files without extension" do
|
86
|
-
def path
|
87
|
-
fixture('src/common/somefile')
|
88
|
-
end
|
89
|
-
|
90
|
-
subject.engine.should be_an_instance_of(Smartgen::Engine::Textile)
|
91
|
-
end
|
92
|
-
|
93
|
-
it "should use the engine with the highest priority for files without extension" do
|
94
|
-
class MyEngine
|
95
|
-
def process(body, metadata={})
|
96
|
-
"some processing"
|
97
|
-
end
|
98
|
-
|
99
|
-
def supported?(extension)
|
100
|
-
['.something'].include?(extension)
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
def path
|
105
|
-
fixture('src/common/somefile')
|
106
|
-
end
|
107
|
-
|
108
|
-
Smartgen::MarkupFile.register(MyEngine)
|
109
|
-
subject.engine.should be_an_instance_of(MyEngine)
|
110
|
-
Smartgen::MarkupFile.engines.clear
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
context "using textile engine" do
|
115
|
-
it "should use textile as markup engine" do
|
116
|
-
subject.engine.should be_an_instance_of(Smartgen::Engine::Textile)
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
context "using markdown engine" do
|
121
|
-
it "should use markdown as markup engine for files with .markdown" do
|
122
|
-
def path
|
123
|
-
fixture('src/common/other_index.markdown')
|
124
|
-
end
|
125
|
-
|
126
|
-
subject.engine.should be_an_instance_of(Smartgen::Engine::Markdown)
|
127
|
-
end
|
128
|
-
|
129
|
-
it "should use markdown as markup engine for files with .md" do
|
130
|
-
def path
|
131
|
-
fixture('src/common/another_index.md')
|
132
|
-
end
|
133
|
-
|
134
|
-
subject.engine.should be_an_instance_of(Smartgen::Engine::Markdown)
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
context "using erb engine" do
|
139
|
-
it "should use markdown as markup engine for files with .md" do
|
140
|
-
def path
|
141
|
-
fixture('src/erb/index.html.erb')
|
142
|
-
end
|
143
|
-
|
144
|
-
subject.engine.should be_an_instance_of(Smartgen::Engine::ERB)
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
describe "indexer" do
|
150
|
-
subject { Smartgen::MarkupFile.new path, :indexer => true }
|
151
|
-
|
152
|
-
it "should be accessible when using indexer" do
|
153
|
-
subject.indexer.should be_an_instance_of(Smartgen::Indexer)
|
154
|
-
end
|
155
|
-
|
156
|
-
it "should use indexer" do
|
157
|
-
mock_indexer = mock(Smartgen::Indexer, :result => 'result')
|
158
|
-
Smartgen::Indexer.should_receive(:new).and_return(mock_indexer)
|
159
|
-
subject
|
160
|
-
end
|
161
|
-
|
162
|
-
it "should return indexer result as contents" do
|
163
|
-
mock_indexer = mock(Smartgen::Indexer, :result => 'result')
|
164
|
-
Smartgen::Indexer.should_receive(:new).and_return(mock_indexer)
|
165
|
-
subject.contents.should == 'result'
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
@@ -1,91 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Smartgen::ObjectHash do
|
4
|
-
it { should be_a_kind_of(HashWithIndifferentAccess) }
|
5
|
-
|
6
|
-
it "should be duped as an Smartgen::ObjectHash" do
|
7
|
-
subject.dup.should be_an_instance_of(Smartgen::ObjectHash)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should differentiate itself when its inspected" do
|
11
|
-
subject.inspect.should == "ObjectHash({})"
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should respond to all of its keys" do
|
15
|
-
subject.merge!({:foo => 'foo', 'bar' => 'bar'})
|
16
|
-
|
17
|
-
subject.keys.each do |key|
|
18
|
-
should respond_to(key)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should respond to all of its keys with setter methods" do
|
23
|
-
subject.merge!({:foo => 'foo', 'bar' => 'bar'})
|
24
|
-
|
25
|
-
subject.keys.map { |k| "#{k}=" }.each do |key|
|
26
|
-
should respond_to(key)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe "inexistent key" do
|
31
|
-
it "should not respond to" do
|
32
|
-
capture(:stderr) { subject.should_not respond_to("invalid_key") }
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should return an empty ObjectHash" do
|
36
|
-
capture(:stderr) { subject.invalid_key.should be_an_instance_of(Smartgen::ObjectHash) }
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should print a warn" do
|
40
|
-
capture(:stderr) { subject.invalid_key }.should == "warning: key invalid_key not found on #{subject.inspect}\n"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should respond to ancestor methods" do
|
45
|
-
ancestor = Smartgen::ObjectHash.ancestors.first
|
46
|
-
ancestor.instance_methods.each do |method|
|
47
|
-
should respond_to(method)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should fetch key when calling method with the same name directly" do
|
52
|
-
subject.merge!({:foo => 'foo'})
|
53
|
-
subject.foo.should == 'foo'
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should set a new key when any setter method is called" do
|
57
|
-
subject.foo = 'foo'
|
58
|
-
subject.foo.should == 'foo'
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should update an existing key when setter method is called" do
|
62
|
-
subject.merge!({:foo => 'foo'})
|
63
|
-
subject.foo = 'bar'
|
64
|
-
subject.foo.should == 'bar'
|
65
|
-
end
|
66
|
-
|
67
|
-
describe "nested hashes" do
|
68
|
-
subject { Smartgen::ObjectHash.new({:nested_hash => {:some_key => 'value'}})}
|
69
|
-
|
70
|
-
it "should accept calling nested methods" do
|
71
|
-
subject.nested_hash.some_key.should == 'value'
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
describe "nested array with hashes" do
|
76
|
-
subject { Smartgen::ObjectHash.new({:array => [{:some_key => 'value'}]})}
|
77
|
-
|
78
|
-
it "should accept calling nested methods" do
|
79
|
-
subject.array.first.some_key.should == 'value'
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
describe Hash do
|
84
|
-
subject { Hash.new }
|
85
|
-
|
86
|
-
it "should return an object hash" do
|
87
|
-
subject.with_object_hash.should be_an_instance_of(Smartgen::ObjectHash)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Smartgen::Renderer::ERB do
|
4
|
-
def contents
|
5
|
-
"<p>Some HTML content</p>"
|
6
|
-
end
|
7
|
-
|
8
|
-
def markup_file
|
9
|
-
@markup_file ||= mock(Smartgen::MarkupFile, :contents => contents)
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should render the given layout with markup_file variable" do
|
13
|
-
layout = "<html><body><%= markup_file.contents %></body></html>"
|
14
|
-
|
15
|
-
subject.render(layout, markup_file).should == "<html><body>#{contents}</body></html>"
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should render the given layout without setting metadata, but using methods to access metadata in template" do
|
19
|
-
layout = "<html><body><%= markup_file.contents %><div><%= metadata.some_key %></div></body></html>"
|
20
|
-
|
21
|
-
capture(:stderr) { subject.render(layout, markup_file).should == "<html><body>#{contents}<div>{}</div></body></html>" }
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should render the given layout with metadata variable" do
|
25
|
-
layout = "<html><body><%= markup_file.contents %><div><%= metadata[:some_key] %></div></body></html>"
|
26
|
-
subject.render(layout, markup_file, Smartgen::ObjectHash.new(:some_key => 'some_value')).should == "<html><body>#{contents}<div>some_value</div></body></html>"
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should render the given layout with metadata variable, using methods instead of accessing keys" do
|
30
|
-
layout = "<html><body><%= markup_file.contents %><div><%= metadata.some_key %></div></body></html>"
|
31
|
-
subject.render(layout, markup_file, Smartgen::ObjectHash.new(:some_key => 'some_value')).should == "<html><body>#{contents}<div>some_value</div></body></html>"
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should render the given layout with metadata variable, using nested methods instead of accessing keys" do
|
35
|
-
layout = "<html><body><%= markup_file.contents %><div><%= metadata.nested_hash.some_key %></div></body></html>"
|
36
|
-
subject.render(layout, markup_file, Smartgen::ObjectHash.new(:nested_hash => {:some_key => 'some_value'})).should == "<html><body>#{contents}<div>some_value</div></body></html>"
|
37
|
-
end
|
38
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Smartgen::Resource do
|
4
|
-
describe "configuration" do
|
5
|
-
it "should yield a configuration when configuring" do
|
6
|
-
subject.configure do |config|
|
7
|
-
config.should be_an_instance_of(Smartgen::Configuration)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
it "should use the same configuration on later accesses" do
|
12
|
-
configuration = nil
|
13
|
-
subject.configure { |config| configuration = config }
|
14
|
-
|
15
|
-
subject.configure do |config|
|
16
|
-
config.should be_equal(configuration)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe "generating" do
|
22
|
-
shared_examples_for "generation with configuration" do
|
23
|
-
let :expected_arguments do
|
24
|
-
[subject.config.src_files, subject.config.output_folder]
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should generate files using the configuration" do
|
28
|
-
mock_generator = mock(Smartgen::Generator)
|
29
|
-
Smartgen::Generator.
|
30
|
-
should_receive(:new).
|
31
|
-
with(expected_arguments, expected_options).
|
32
|
-
and_return(mock_generator)
|
33
|
-
|
34
|
-
mock_generator.should_receive(:invoke_all)
|
35
|
-
subject.generate!
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context "with default options" do
|
40
|
-
let :expected_options do
|
41
|
-
Smartgen::ObjectHash.new
|
42
|
-
end
|
43
|
-
|
44
|
-
it_should_behave_like "generation with configuration"
|
45
|
-
end
|
46
|
-
|
47
|
-
context "with customized options" do
|
48
|
-
before do
|
49
|
-
subject.configure do |c|
|
50
|
-
c.src_files = ['help/**/*', 'ChangeLog', 'doc_src/**/*']
|
51
|
-
c.output_folder = 'public/docs'
|
52
|
-
c.layout = 'doc_src/layout.html.erb'
|
53
|
-
c.assets = ['doc_src/javascript/*.js', 'doc_src/stylesheets/*.css', 'doc_src/images/*.*']
|
54
|
-
c.metadata_file = 'doc_src/metadata.yml'
|
55
|
-
c.some_other_option = true
|
56
|
-
c.and_another_one = 'some-value'
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
let :expected_options do
|
61
|
-
Smartgen::ObjectHash.new({
|
62
|
-
:layout => subject.config.layout,
|
63
|
-
:assets => subject.config.assets,
|
64
|
-
:metadata_file => subject.config.metadata_file,
|
65
|
-
:some_other_option => subject.config.some_other_option,
|
66
|
-
:and_another_one => subject.config.and_another_one
|
67
|
-
})
|
68
|
-
end
|
69
|
-
|
70
|
-
it_should_behave_like "generation with configuration"
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|