templater 0.1.6 → 0.2
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.
- data/README +13 -7
- data/Rakefile +30 -0
- data/lib/templater.rb +4 -2
- data/lib/templater/actions/action.rb +43 -0
- data/lib/templater/actions/empty_directory.rb +16 -14
- data/lib/templater/actions/file.rb +16 -21
- data/lib/templater/actions/template.rb +13 -22
- data/lib/templater/cli/generator.rb +13 -9
- data/lib/templater/core_ext/string.rb +1 -1
- data/lib/templater/description.rb +61 -0
- data/lib/templater/discovery.rb +16 -9
- data/lib/templater/generator.rb +115 -137
- data/lib/templater/spec/helpers.rb +1 -1
- data/spec/actions/empty_directory_spec.rb +105 -0
- data/spec/actions/file_spec.rb +112 -0
- data/spec/actions/template_spec.rb +141 -0
- data/spec/generator/actions_spec.rb +92 -43
- data/spec/generator/arguments_spec.rb +7 -3
- data/spec/generator/empty_directories_spec.rb +12 -4
- data/spec/generator/files_spec.rb +17 -26
- data/spec/generator/templates_spec.rb +17 -28
- data/spec/spec_helper.rb +24 -1
- metadata +18 -6
- data/lib/templater/proxy.rb +0 -62
- data/spec/empty_directory_spec.rb +0 -97
- data/spec/file_spec.rb +0 -97
- data/spec/template_spec.rb +0 -137
@@ -46,7 +46,7 @@ module Templater
|
|
46
46
|
def matches?(actual)
|
47
47
|
@actual = actual
|
48
48
|
# Satisfy expectation here. Return false or raise an error if it's not met.
|
49
|
-
@actual.
|
49
|
+
@actual.all_actions.map{|t| t.destination }.include?(@expected)
|
50
50
|
end
|
51
51
|
|
52
52
|
def failure_message
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require File.dirname(__FILE__) / '..' / 'spec_helper'
|
2
|
+
|
3
|
+
describe Templater::Actions::EmptyDirectory do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@generator = mock('a generator')
|
7
|
+
@generator.stub!(:source_root).and_return('/tmp/source')
|
8
|
+
@generator.stub!(:destination_root).and_return('/tmp/destination')
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '.new' do
|
12
|
+
it "sets name and destination" do
|
13
|
+
Templater::Actions::EmptyDirectory.new(@generator, :monkey, '/path/to/destination').
|
14
|
+
name.should == :monkey
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'sets destination' do
|
18
|
+
Templater::Actions::EmptyDirectory.new(@generator, :monkey, '/path/to/destination').
|
19
|
+
destination.should == '/path/to/destination'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#relative_destination' do
|
24
|
+
it "returns the destination relative to the generator's destination root" do
|
25
|
+
@generator.stub!(:destination_root).and_return('/path/to')
|
26
|
+
file = Templater::Actions::EmptyDirectory.new(@generator, :monkey, '/path/to/destination/with/some/more/subdirs')
|
27
|
+
file.relative_destination.should == 'destination/with/some/more/subdirs'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#render' do
|
32
|
+
it 'does nothing for empty directories?'
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#exists?' do
|
36
|
+
|
37
|
+
it "should exist if the destination file exists" do
|
38
|
+
file = Templater::Actions::EmptyDirectory.new(@generator, :monkey, result_path('erb.rbs'))
|
39
|
+
file.should be_exists
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should not exist if the destination file does not exist" do
|
43
|
+
file = Templater::Actions::EmptyDirectory.new(@generator, :monkey, result_path('some_weird_file.rbs'))
|
44
|
+
file.should_not be_exists
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#identical' do
|
49
|
+
it "should not be identical if the destination file doesn't exist" do
|
50
|
+
file = Templater::Actions::EmptyDirectory.new(@generator, :monkey, result_path('some_weird/path/that_does/not_exist'))
|
51
|
+
file.should_not be_identical
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should not be identical if the destination file is not identical to the source file" do
|
55
|
+
file = Templater::Actions::EmptyDirectory.new(@generator, :monkey, result_path('simple_erb.rbs'))
|
56
|
+
file.should be_exists
|
57
|
+
file.should be_identical
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should be identical if the destination file is identical to the source file" do
|
61
|
+
file= Templater::Actions::EmptyDirectory.new(@generator, :monkey, result_path('file.rbs'))
|
62
|
+
file.should be_exists
|
63
|
+
file.should be_identical
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe '#invoke!' do
|
68
|
+
it "should copy the source file to the destination" do
|
69
|
+
file = Templater::Actions::EmptyDirectory.new(@generator, :monkey, result_path('path/to/subdir/test2.rbs'))
|
70
|
+
|
71
|
+
file.invoke!
|
72
|
+
|
73
|
+
File.exists?(result_path('path/to/subdir/test2.rbs')).should be_true
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should trigger before and after callbacks" do
|
77
|
+
@options = { :before => :ape, :after => :elephant }
|
78
|
+
file = Templater::Actions::EmptyDirectory.new(@generator, :monkey, result_path('path/to/subdir/test2.rbs'), @options)
|
79
|
+
|
80
|
+
@generator.should_receive(:ape).with(file).ordered
|
81
|
+
@generator.should_receive(:elephant).with(file).ordered
|
82
|
+
|
83
|
+
file.invoke!
|
84
|
+
|
85
|
+
File.exists?(result_path('path/to/subdir/test2.rbs')).should be_true
|
86
|
+
end
|
87
|
+
|
88
|
+
after do
|
89
|
+
FileUtils.rm_rf(result_path('path'))
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '#revoke!' do
|
94
|
+
it "removes the destination directory" do
|
95
|
+
file = Templater::Actions::EmptyDirectory.new(@generator, :monkey, result_path('path/to/empty/subdir/'))
|
96
|
+
|
97
|
+
file.invoke!
|
98
|
+
File.exists?(result_path('path/to/empty/subdir/')).should be_true
|
99
|
+
|
100
|
+
file.revoke!
|
101
|
+
File.exists?(result_path('path/to/empty/subdir/')).should be_false
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require File.dirname(__FILE__) / '..' / 'spec_helper'
|
2
|
+
|
3
|
+
describe Templater::Actions::File do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@generator = mock('a generator')
|
7
|
+
@generator.stub!(:source_root).and_return('/tmp/source')
|
8
|
+
@generator.stub!(:destination_root).and_return('/tmp/destination')
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '.new' do
|
12
|
+
it "should set name, source and destination" do
|
13
|
+
file = Templater::Actions::File.new(@generator, :monkey, '/path/to/source', '/path/to/destination')
|
14
|
+
file.name.should == :monkey
|
15
|
+
file.source.should == '/path/to/source'
|
16
|
+
file.destination.should == '/path/to/destination'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#relative_destination' do
|
21
|
+
it "should get the destination relative to the generator's destination root" do
|
22
|
+
@generator.stub!(:destination_root).and_return('/path/to')
|
23
|
+
file = Templater::Actions::File.new(@generator, :monkey, '/path/to/source', '/path/to/destination/with/some/more/subdirs')
|
24
|
+
file.relative_destination.should == 'destination/with/some/more/subdirs'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#render' do
|
29
|
+
it "should output the file" do
|
30
|
+
file = Templater::Actions::File.new(@generator, :monkey, template_path('simple_erb.rbt'), '/path/to/destination')
|
31
|
+
file.render.should == "test<%= 1+1 %>test"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#exists?' do
|
36
|
+
it "should exist if the destination file exists" do
|
37
|
+
file = Templater::Actions::File.new(@generator, :monkey, template_path('simple.rbt'), result_path('erb.rbs'))
|
38
|
+
file.should be_exists
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should not exist if the destination file does not exist" do
|
42
|
+
file = Templater::Actions::File.new(@generator, :monkey, template_path('simple.rbt'), result_path('some_weird_file.rbs'))
|
43
|
+
file.should_not be_exists
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#identical' do
|
48
|
+
it "should not be identical if the destination file doesn't exist" do
|
49
|
+
file = Templater::Actions::File.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('some_weird_file.rbs'))
|
50
|
+
file.should_not be_identical
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should not be identical if the destination file is not identical to the source file" do
|
54
|
+
file = Templater::Actions::File.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('simple_erb.rbs'))
|
55
|
+
file.should be_exists
|
56
|
+
file.should_not be_identical
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should be identical if the destination file is identical to the source file" do
|
60
|
+
file= Templater::Actions::File.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('file.rbs'))
|
61
|
+
file.should be_exists
|
62
|
+
file.should be_identical
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#invoke!' do
|
67
|
+
it "should copy the source file to the destination" do
|
68
|
+
file = Templater::Actions::File.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('path/to/subdir/test2.rbs'))
|
69
|
+
|
70
|
+
file.invoke!
|
71
|
+
|
72
|
+
File.exists?(result_path('path/to/subdir/test2.rbs')).should be_true
|
73
|
+
FileUtils.identical?(template_path('simple_erb.rbt'), result_path('path/to/subdir/test2.rbs')).should be_true
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should trigger before and after callbacks" do
|
77
|
+
@options = { :before => :ape, :after => :elephant }
|
78
|
+
file = Templater::Actions::File.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('path/to/subdir/test2.rbs'), @options)
|
79
|
+
|
80
|
+
@generator.should_receive(:ape).with(file).ordered
|
81
|
+
@generator.should_receive(:elephant).with(file).ordered
|
82
|
+
|
83
|
+
file.invoke!
|
84
|
+
end
|
85
|
+
|
86
|
+
after do
|
87
|
+
FileUtils.rm_rf(result_path('path'))
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe '#revoke!' do
|
92
|
+
it "should remove the destination file" do
|
93
|
+
file = Templater::Actions::File.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('path/to/subdir/test2.rbs'))
|
94
|
+
|
95
|
+
file.invoke!
|
96
|
+
|
97
|
+
File.exists?(result_path('path/to/subdir/test2.rbs')).should be_true
|
98
|
+
FileUtils.identical?(template_path('simple_erb.rbt'), result_path('path/to/subdir/test2.rbs')).should be_true
|
99
|
+
|
100
|
+
file.revoke!
|
101
|
+
|
102
|
+
File.exists?(result_path('path/to/subdir/test2.rbs')).should be_false
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should do nothing when the destination file doesn't exist" do
|
106
|
+
file = Templater::Actions::File.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('path/to/subdir/test2.rbs'))
|
107
|
+
|
108
|
+
lambda { file.revoke! }.should_not raise_error
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
require File.dirname(__FILE__) / '..' / 'spec_helper'
|
2
|
+
|
3
|
+
describe Templater::Actions::Template do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@generator = mock('a generator')
|
7
|
+
@generator.stub!(:source_root).and_return('/tmp/source')
|
8
|
+
@generator.stub!(:destination_root).and_return('/tmp/destination')
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '.new' do
|
12
|
+
it "should set name, source and destination" do
|
13
|
+
template = Templater::Actions::Template.new(@generator, :monkey, '/path/to/source', '/path/to/destination')
|
14
|
+
template.name.should == :monkey
|
15
|
+
template.source.should == '/path/to/source'
|
16
|
+
template.destination.should == '/path/to/destination'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#relative_destination' do
|
21
|
+
it "should get the destination relative to the generator's destination root" do
|
22
|
+
@generator.stub!(:destination_root).and_return('/path/to')
|
23
|
+
template = Templater::Actions::Template.new(@generator, :monkey, '/path/to/source', '/path/to/destination/with/some/more/subdirs')
|
24
|
+
template.relative_destination.should == 'destination/with/some/more/subdirs'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#render' do
|
29
|
+
it "should render a simple template" do
|
30
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('simple.rbt'), '/path/to/destination')
|
31
|
+
template.render.should == "Hello World"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should render some basic erb" do
|
35
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('simple_erb.rbt'), '/path/to/destination')
|
36
|
+
template.render.should == "test2test"
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should render some erb and convert erb literals" do
|
40
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('literals_erb.rbt'), '/path/to/destination')
|
41
|
+
template.render.should == "test2test<%= 1+1 %>blah"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should render some erb fetching stuff from the context" do
|
45
|
+
@generator.should_receive(:funkydoodle).and_return('_doodle_')
|
46
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('erb.rbt'), '/path/to/destination')
|
47
|
+
template.render.should == "test_doodle_blah"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#exists?' do
|
52
|
+
it "should exist if the destination file exists" do
|
53
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('simple.rbt'), result_path('erb.rbs'))
|
54
|
+
template.should be_exists
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should not exist if the destination file does not exist" do
|
58
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('simple.rbt'), result_path('some_weird_file.rbs'))
|
59
|
+
template.should_not be_exists
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#identical' do
|
64
|
+
before do
|
65
|
+
@context = class << self; self end
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should not be identical if the destination file doesn't exist" do
|
69
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('some_weird_file.rbs'))
|
70
|
+
template.should_not be_identical
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should not be identical if the rendered content does not match the content of the file" do
|
74
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('random.rbs'))
|
75
|
+
template.should be_exists
|
76
|
+
template.should_not be_identical
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should be identical if the rendered content matches the content of the file" do
|
80
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('simple_erb.rbs'))
|
81
|
+
template.should be_exists
|
82
|
+
template.should be_identical
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe '#invoke!' do
|
87
|
+
it "should render the template and copy it to the destination" do
|
88
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('test.rbs'))
|
89
|
+
|
90
|
+
template.invoke!
|
91
|
+
|
92
|
+
File.exists?(result_path('test.rbs')).should be_true
|
93
|
+
File.read(result_path('test.rbs')).should == "test2test"
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should render the template and copy it to the destination, creating any required subdirectories" do
|
97
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('path/to/subdir/test.rbs'))
|
98
|
+
|
99
|
+
template.invoke!
|
100
|
+
|
101
|
+
File.exists?(result_path('path/to/subdir/test.rbs')).should be_true
|
102
|
+
File.read(result_path('path/to/subdir/test.rbs')).should == "test2test"
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should trigger before and after callbacks" do
|
106
|
+
@options = { :before => :ape, :after => :elephant }
|
107
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('path/to/subdir/test.rbs'), @options)
|
108
|
+
|
109
|
+
@generator.should_receive(:ape).with(template).ordered
|
110
|
+
@generator.should_receive(:elephant).with(template).ordered
|
111
|
+
|
112
|
+
template.invoke!
|
113
|
+
end
|
114
|
+
|
115
|
+
after do
|
116
|
+
FileUtils.rm_rf(result_path('path'))
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe '#revoke!' do
|
121
|
+
it "should remove the destination file" do
|
122
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('test.rbs'))
|
123
|
+
|
124
|
+
template.invoke!
|
125
|
+
|
126
|
+
File.exists?(result_path('test.rbs')).should be_true
|
127
|
+
File.read(result_path('test.rbs')).should == "test2test"
|
128
|
+
|
129
|
+
template.revoke!
|
130
|
+
|
131
|
+
File.exists?(result_path('test.rbs')).should be_false
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should do nothing when the destination file doesn't exist" do
|
135
|
+
template = Templater::Actions::Template.new(@generator, :monkey, template_path('simple_erb.rbt'), result_path('test.rbs'))
|
136
|
+
|
137
|
+
lambda { template.revoke! }.should_not raise_error
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
@@ -4,59 +4,108 @@ describe Templater::Generator, '#actions' do
|
|
4
4
|
|
5
5
|
before do
|
6
6
|
@generator_class = Class.new(Templater::Generator)
|
7
|
-
@generator_class.
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
@generator_class.stub!(:source_root).and_return('/tmp/source')
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should return all actions" do
|
11
|
+
@generator_class.template :one, 'template1.rb'
|
12
|
+
@generator_class.template :two, 'template2.rb'
|
13
|
+
@generator_class.file :three, 'file1.rb'
|
14
|
+
@generator_class.empty_directory :four, 'file2.rb'
|
15
|
+
|
16
|
+
instance = @generator_class.new('/tmp')
|
17
|
+
|
18
|
+
instance.actions.should have_names(:one, :two, :three, :four)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should return only a certain type of action" do
|
22
|
+
@generator_class.template :one, 'template1.rb'
|
23
|
+
@generator_class.template :two, 'template2.rb'
|
24
|
+
@generator_class.file :three, 'file1.rb'
|
25
|
+
@generator_class.empty_directory :four, 'file2.rb'
|
26
|
+
|
27
|
+
instance = @generator_class.new('/tmp')
|
28
|
+
|
29
|
+
instance.actions(:templates).should have_names(:one, :two)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe Templater::Generator, '#all_actions' do
|
34
|
+
|
35
|
+
before do
|
36
|
+
@generator_class = Class.new(Templater::Generator)
|
37
|
+
@generator_class.stub!(:source_root).and_return('/tmp/source')
|
38
|
+
|
39
|
+
@generator_class2 = Class.new(Templater::Generator)
|
40
|
+
@generator_class2.stub!(:source_root).and_return('/tmp/source')
|
12
41
|
|
13
|
-
@
|
14
|
-
@
|
15
|
-
@generator1.stub!(:new).and_return(@instance1)
|
16
|
-
@generator2 = mock('another generator')
|
17
|
-
@instance2 = mock('an instance of another generator')
|
18
|
-
@generator2.stub!(:new).and_return(@instance2)
|
42
|
+
@generator_class3 = Class.new(Templater::Generator)
|
43
|
+
@generator_class3.stub!(:source_root).and_return('/tmp/source')
|
19
44
|
|
20
|
-
@manifold =
|
21
|
-
@manifold.
|
22
|
-
@manifold.
|
23
|
-
@manifold.
|
45
|
+
@manifold = Object.new
|
46
|
+
@manifold.extend Templater::Manifold
|
47
|
+
@manifold.add(:one, @generator_class)
|
48
|
+
@manifold.add(:two, @generator_class2)
|
49
|
+
@manifold.add(:three, @generator_class3)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should return all actions" do
|
53
|
+
@generator_class.template :one, 'template1.rb'
|
54
|
+
@generator_class.template :two, 'template2.rb'
|
55
|
+
@generator_class.file :three, 'file1.rb'
|
56
|
+
@generator_class.empty_directory :four, 'file2.rb'
|
57
|
+
instance = @generator_class.new('/tmp')
|
24
58
|
|
25
|
-
|
59
|
+
instance.all_actions.should have_names(:one, :two, :three, :four)
|
26
60
|
end
|
61
|
+
|
62
|
+
it "should return only a certain type of action" do
|
63
|
+
@generator_class.template :one, 'template1.rb'
|
64
|
+
@generator_class.template :two, 'template2.rb'
|
65
|
+
@generator_class.file :three, 'file1.rb'
|
66
|
+
@generator_class.empty_directory :four, 'file2.rb'
|
67
|
+
|
68
|
+
instance = @generator_class.new('/tmp')
|
69
|
+
|
70
|
+
instance.all_actions(:templates).should have_names(:one, :two)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should return all actions recursively for all invocations" do
|
74
|
+
@generator_class.invoke :two
|
75
|
+
@generator_class2.invoke :three
|
76
|
+
|
77
|
+
@generator_class.template :one, 'template1.rb'
|
78
|
+
@generator_class.file :two, 'file1.rb'
|
79
|
+
@generator_class.empty_directory :three, 'file2.rb'
|
80
|
+
|
81
|
+
@generator_class2.file :four, 'file2.rb'
|
82
|
+
@generator_class2.template :five, 'file2.rb'
|
83
|
+
|
84
|
+
@generator_class3.template :six, 'fds.rb'
|
85
|
+
@generator_class3.empty_directory :seven, 'dfsd.rb'
|
27
86
|
|
28
|
-
it "should return all templates and files" do
|
29
87
|
instance = @generator_class.new('/tmp')
|
30
|
-
instance.should_receive(:templates).at_least(:once).and_return(['template1', 'template2'])
|
31
|
-
instance.should_receive(:files).at_least(:once).and_return(['file1', 'file2'])
|
32
88
|
|
33
|
-
instance.
|
34
|
-
instance.actions.should include('template2')
|
35
|
-
instance.actions.should include('file1')
|
36
|
-
instance.actions.should include('file2')
|
89
|
+
instance.all_actions.should have_names(:one, :two, :three, :four, :five, :six, :seven)
|
37
90
|
end
|
38
91
|
|
39
|
-
it "should return
|
92
|
+
it "should return only a certain type of actions recursively for all invocations" do
|
93
|
+
@generator_class.invoke :two
|
94
|
+
@generator_class2.invoke :three
|
95
|
+
|
96
|
+
@generator_class.template :one, 'template1.rb'
|
97
|
+
@generator_class.file :two, 'file1.rb'
|
98
|
+
@generator_class.empty_directory :three, 'file2.rb'
|
99
|
+
|
100
|
+
@generator_class2.file :four, 'file2.rb'
|
101
|
+
@generator_class2.template :five, 'file2.rb'
|
102
|
+
|
103
|
+
@generator_class3.template :six, 'fds.rb'
|
104
|
+
@generator_class3.empty_directory :seven, 'dfsd.rb'
|
105
|
+
|
40
106
|
instance = @generator_class.new('/tmp')
|
41
|
-
|
42
|
-
instance.
|
43
|
-
instance.should_receive(:empty_directories).at_least(:once).and_return(['public', 'bin'])
|
44
|
-
instance.should_receive(:invocations).at_least(:once).and_return([@instance1, @instance2])
|
45
|
-
|
46
|
-
@instance1.should_receive(:actions).at_least(:once).and_return(['subtemplate1', 'subfile1'])
|
47
|
-
@instance2.should_receive(:actions).at_least(:once).and_return(['subtemplate2', 'subfile2'])
|
48
|
-
|
49
|
-
instance.actions.should include('template1')
|
50
|
-
instance.actions.should include('template2')
|
51
|
-
instance.actions.should include('subtemplate1')
|
52
|
-
instance.actions.should include('subtemplate2')
|
53
|
-
instance.actions.should include('file1')
|
54
|
-
instance.actions.should include('file2')
|
55
|
-
instance.actions.should include('subfile1')
|
56
|
-
instance.actions.should include('subfile2')
|
57
|
-
|
58
|
-
instance.actions.should include('public')
|
59
|
-
instance.actions.should include('bin')
|
107
|
+
|
108
|
+
instance.all_actions(:templates).should have_names(:one, :five, :six)
|
60
109
|
end
|
61
110
|
|
62
111
|
end
|