zero_generators 0.0.1
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 +38 -0
- data/generators/default_values.rb +21 -0
- data/generators/factory_scaffold/USAGE +15 -0
- data/generators/factory_scaffold/factory_scaffold_generator.rb +27 -0
- data/generators/factory_scaffold/templates/controller_spec.rb.erb +135 -0
- data/generators/factory_scaffold/templates/helper_spec.rb.erb +5 -0
- data/generators/factory_scaffold/templates/model_spec.rb.erb +8 -0
- data/generators/ferret_scaffold/USAGE +12 -0
- data/generators/ferret_scaffold/ferret_scaffold_generator.rb +92 -0
- data/generators/ferret_scaffold/templates/controller.rb.erb +128 -0
- data/generators/ferret_scaffold/templates/controller_spec.rb.erb +155 -0
- data/generators/ferret_scaffold/templates/helper.rb.erb +2 -0
- data/generators/ferret_scaffold/templates/helper_spec.rb.erb +7 -0
- data/generators/ferret_scaffold/templates/migration.rb.erb +20 -0
- data/generators/ferret_scaffold/templates/model.rb.erb +8 -0
- data/generators/ferret_scaffold/templates/model_spec.rb.erb +28 -0
- data/generators/ferret_scaffold/templates/views/_dados_busca.html.erb +11 -0
- data/generators/ferret_scaffold/templates/views/_dados_model.html.erb +8 -0
- data/generators/ferret_scaffold/templates/views/edit.html.erb +13 -0
- data/generators/ferret_scaffold/templates/views/index.html.erb +11 -0
- data/generators/ferret_scaffold/templates/views/layout.html.erb +18 -0
- data/generators/ferret_scaffold/templates/views/new.html.erb +12 -0
- data/generators/ferret_scaffold/templates/views/show.html.erb +16 -0
- data/generators/layout/USAGE +10 -0
- data/generators/layout/layout_generator.rb +22 -0
- data/generators/layout/templates/README +7 -0
- data/generators/layout/templates/layout.html.erb +26 -0
- data/generators/layout/templates/pt_BR.yml +109 -0
- data/generators/layout/templates/stylesheet.css +60 -0
- data/generators/tdd_controller/USAGE +9 -0
- data/generators/tdd_controller/tdd_controller_generator.rb +15 -0
- data/generators/tdd_controller/templates/controller_spec.rb.erb +29 -0
- data/generators/tdd_model/USAGE +10 -0
- data/generators/tdd_model/tdd_model_generator.rb +17 -0
- data/generators/tdd_model/templates/model_spec.rb.erb +24 -0
- data/generators/tdd_scaffold/USAGE +11 -0
- data/generators/tdd_scaffold/tdd_scaffold_generator.rb +32 -0
- data/generators/tdd_scaffold/templates/controller_spec.rb.erb +125 -0
- data/generators/tdd_scaffold/templates/helper_spec.rb.erb +7 -0
- data/generators/tdd_scaffold/templates/model_spec.rb.erb +28 -0
- data/generators/tdd_scaffold_stub/USAGE +17 -0
- data/generators/tdd_scaffold_stub/tdd_scaffold_stub_generator.rb +40 -0
- data/generators/tdd_scaffold_stub/templates/controller_spec.rb.erb +157 -0
- data/generators/tdd_scaffold_stub/templates/edit.html.erb_spec.rb.erb +14 -0
- data/generators/tdd_scaffold_stub/templates/helper_spec.rb.erb +7 -0
- data/generators/tdd_scaffold_stub/templates/index.html.erb_spec.rb.erb +14 -0
- data/generators/tdd_scaffold_stub/templates/model_spec.rb.erb +24 -0
- data/generators/tdd_scaffold_stub/templates/new.html.erb_spec.rb.erb +12 -0
- data/generators/tdd_scaffold_stub/templates/show.html.erb_spec.rb.erb +14 -0
- metadata +112 -0
@@ -0,0 +1,60 @@
|
|
1
|
+
body { background-color: #fff; color: #333; }
|
2
|
+
|
3
|
+
body, p, ol, ul, td {
|
4
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
5
|
+
font-size: 13px;
|
6
|
+
line-height: 18px;
|
7
|
+
}
|
8
|
+
|
9
|
+
pre {
|
10
|
+
background-color: #eee;
|
11
|
+
padding: 10px;
|
12
|
+
font-size: 11px;
|
13
|
+
}
|
14
|
+
|
15
|
+
a { color: #000; }
|
16
|
+
a:visited { color: #666; }
|
17
|
+
a:hover { color: #fff; background-color:#000; }
|
18
|
+
|
19
|
+
.fieldWithErrors {
|
20
|
+
padding: 2px 2px 5px 2px;
|
21
|
+
background-color: red;
|
22
|
+
display: inline;
|
23
|
+
}
|
24
|
+
|
25
|
+
#errorExplanation {
|
26
|
+
width: 400px;
|
27
|
+
border: 2px solid red;
|
28
|
+
padding: 7px;
|
29
|
+
padding-bottom: 12px;
|
30
|
+
margin-bottom: 20px;
|
31
|
+
background-color: #f0f0f0;
|
32
|
+
}
|
33
|
+
|
34
|
+
#errorExplanation h2 {
|
35
|
+
text-align: left;
|
36
|
+
font-weight: bold;
|
37
|
+
padding: 5px 5px 5px 15px;
|
38
|
+
font-size: 12px;
|
39
|
+
margin: -7px;
|
40
|
+
background-color: #c00;
|
41
|
+
color: #fff;
|
42
|
+
}
|
43
|
+
|
44
|
+
#errorExplanation p {
|
45
|
+
color: #333;
|
46
|
+
margin-bottom: 0;
|
47
|
+
padding: 5px;
|
48
|
+
}
|
49
|
+
|
50
|
+
#errorExplanation ul li {
|
51
|
+
font-size: 12px;
|
52
|
+
list-style: square;
|
53
|
+
}
|
54
|
+
|
55
|
+
#dados_busca th {
|
56
|
+
padding-right: 50px;
|
57
|
+
padding-left: 10px;
|
58
|
+
text-align: left;
|
59
|
+
}
|
60
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../default_values'
|
2
|
+
|
3
|
+
class TddControllerGenerator < Rails::Generator::NamedBase
|
4
|
+
def manifest
|
5
|
+
record do |m|
|
6
|
+
# m.directory "lib"
|
7
|
+
# m.template 'README', "README"
|
8
|
+
m.class_collisions class_path, class_name
|
9
|
+
|
10
|
+
m.directory 'spec'
|
11
|
+
m.directory 'spec/controllers'
|
12
|
+
m.template 'controller_spec.rb.erb', File.join('spec/controllers', class_path, "#{file_name}_controller_spec.rb")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe <%= class_name %>Controller do
|
4
|
+
describe 'respondendo por GET' do
|
5
|
+
end
|
6
|
+
|
7
|
+
describe 'respondendo por POST ou PUT' do
|
8
|
+
describe 'quanto tiver atributos válidos' do
|
9
|
+
#Substitua o teste a seguir com seu teste
|
10
|
+
it 'deve fazer algo' do
|
11
|
+
true.should be_true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'quando tiver atributos inválidos' do
|
16
|
+
#Substitua o teste a seguir com seu teste
|
17
|
+
it 'deve fazer algo' do
|
18
|
+
true.should be_true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'respondendo por DELETE' do
|
24
|
+
#Substitua o teste a seguir com seu teste
|
25
|
+
it 'deve fazer algo' do
|
26
|
+
false.should_not be_true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../default_values'
|
2
|
+
|
3
|
+
class TddModelGenerator < Rails::Generator::NamedBase
|
4
|
+
def manifest
|
5
|
+
record do |m|
|
6
|
+
# m.directory "lib"
|
7
|
+
# m.template 'README', "README"
|
8
|
+
m.class_collisions class_path, class_name
|
9
|
+
|
10
|
+
m.directory 'spec'
|
11
|
+
m.directory 'spec/models'
|
12
|
+
m.template 'model_spec.rb.erb', File.join('spec/models', class_path, "#{file_name}_spec.rb")
|
13
|
+
m.directory File.join('spec/fixtures', class_path)
|
14
|
+
m.template 'model:fixtures.yml', File.join('spec/fixtures', "#{table_name}.yml")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe <%= class_name %> do
|
4
|
+
before(:each) do
|
5
|
+
@validos = {
|
6
|
+
<% attributes.each do |atributo| -%>
|
7
|
+
:<%= atributo.name %> => <%= atributo.default_value %>,
|
8
|
+
<% end -%>
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
it "deve ser criado se forem passados atributos válidos" do
|
13
|
+
<%= class_name %>.create!(@validos)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'deve validar a presença de determinados atributos' do
|
17
|
+
@<%= class_name.underscore %> = <%= class_name %>.create
|
18
|
+
|
19
|
+
#Coloque os atributos que devem ser checados no array a seguir
|
20
|
+
[].each do |atributo|
|
21
|
+
@<%= class_name.underscore %>.should have(1).error_on(atributo)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Descrição:
|
2
|
+
Gera um teste, em RSpec, para um scaffold.
|
3
|
+
|
4
|
+
Examplo:
|
5
|
+
./script/generate tdd_scaffold Aluno nome:string nascimento:date
|
6
|
+
|
7
|
+
Isto vai criar:
|
8
|
+
spec/models/aluno_spec.rb
|
9
|
+
spec/fixtures/alunos.yml
|
10
|
+
spec/controller/alunos_controller_spec.rb
|
11
|
+
spec/helpers/alunos_helper_spec.rb
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../default_values'
|
2
|
+
|
3
|
+
class TddScaffoldGenerator < Rails::Generator::NamedBase
|
4
|
+
attr_reader :file_plural, :class_plural
|
5
|
+
|
6
|
+
def manifest
|
7
|
+
record do |m|
|
8
|
+
# m.directory "lib"
|
9
|
+
# m.template 'README', "README"
|
10
|
+
m.class_collisions class_path, class_name
|
11
|
+
|
12
|
+
@file_plural = file_name.pluralize
|
13
|
+
@class_plural = class_name.pluralize
|
14
|
+
|
15
|
+
m.directory 'spec'
|
16
|
+
m.directory 'spec/controllers'
|
17
|
+
m.directory File.join('spec/controllers', class_path)
|
18
|
+
m.template 'controller_spec.rb.erb', File.join('spec/controllers', class_path, "#{@file_plural}_controller_spec.rb")
|
19
|
+
|
20
|
+
m.directory 'spec/models'
|
21
|
+
m.directory File.join('spec/models', class_path)
|
22
|
+
m.template 'model_spec.rb.erb', File.join('spec/models', class_path, "#{file_name}_spec.rb")
|
23
|
+
|
24
|
+
m.directory 'spec/helpers'
|
25
|
+
m.directory File.join('spec/helpers', class_path)
|
26
|
+
m.template 'helper_spec.rb.erb', File.join('spec/helpers', class_path, "#{@file_plural}_helper_spec.rb")
|
27
|
+
|
28
|
+
m.directory File.join('spec/fixtures', class_path)
|
29
|
+
m.template 'model:fixtures.yml', File.join('spec/fixtures', "#{table_name}.yml")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe <%= class_plural %>Controller do
|
4
|
+
fixtures :<%= file_plural %>
|
5
|
+
integrate_views
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
@<%= file_name %> = <%= class_name %>.first
|
9
|
+
end
|
10
|
+
|
11
|
+
describe 'respondendo por GET' do
|
12
|
+
it 'deve expor todos os registros na ação index, ou um XML no REST' do
|
13
|
+
get :index
|
14
|
+
response.should be_success
|
15
|
+
|
16
|
+
get :index, :format => 'xml'
|
17
|
+
response.body.should match(/xml version/i)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'deve expor o registro na tela edit' do
|
21
|
+
get :edit, :id => @<%= file_name %>.id
|
22
|
+
response.should be_success
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'deve expor o registro na tela show, ou um XML no REST' do
|
26
|
+
get :show, :id => @<%= file_name %>.id
|
27
|
+
response.should be_success
|
28
|
+
|
29
|
+
get :show, :id => @<%= file_name %>.id, :format => 'xml'
|
30
|
+
response.body.should match(/xml version/i)
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'deve expor o registro na tela new' do
|
34
|
+
get :new
|
35
|
+
response.should be_success
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe 'respondendo ao POST ou ao PUT' do
|
40
|
+
before do
|
41
|
+
<%= class_name %>.stub!(:find).and_return(@<%= file_name %>)
|
42
|
+
<%= class_name %>.stub!(:new).and_return(@<%= file_name %>)
|
43
|
+
@params = { :<%= file_name %> => @<%= file_name %>.attributes }
|
44
|
+
end
|
45
|
+
|
46
|
+
describe 'quando tiver atributos válidos' do
|
47
|
+
it 'deve criar um novo registro e redirecionar para ele após chamar o create' do
|
48
|
+
@<%= file_name %>.should_receive(:save).and_return(true)
|
49
|
+
post :create, @params
|
50
|
+
response.should redirect_to(<%= file_name %>_url(@<%= file_name %>))
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'deve criar um novo registro após chamar o create com REST' do
|
54
|
+
@<%= file_name %>.should_receive(:save).and_return(true)
|
55
|
+
post :create, @params.merge(:format => 'xml')
|
56
|
+
response.response_code.should == 201
|
57
|
+
response.body.should match(/xml version/i)
|
58
|
+
response.location.should == <%= file_name %>_url(@<%= file_name %>)
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'deve atualizar um registro e redirecionar para ele após chamar o update' do
|
62
|
+
@<%= file_name %>.should_receive(:update_attributes).and_return(true)
|
63
|
+
put :update, @params
|
64
|
+
response.should redirect_to(<%= file_name %>_url(@<%= file_name %>))
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'deve atualizar um registro após chamar o update com REST' do
|
68
|
+
@<%= file_name %>.should_receive(:update_attributes).and_return(true)
|
69
|
+
put :update, @params.merge(:format => 'xml')
|
70
|
+
response.should be_success
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe 'quando tiver atributos inválidos' do
|
75
|
+
before(:each) do
|
76
|
+
@<%= file_name %>.errors.add(:atributo, 'possui um erro')
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'deve renderizar novamente a ação new, após chamar o create' do
|
80
|
+
@<%= file_name %>.should_receive(:save).and_return(false)
|
81
|
+
post :create, @params
|
82
|
+
response.should be_success
|
83
|
+
response.should render_template('new')
|
84
|
+
response.body.should match(/atributo possui um erro/i)
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'deve renderizar um XML de erros após chamar o create com REST' do
|
88
|
+
@<%= file_name %>.should_receive(:save).and_return(false)
|
89
|
+
post :create, @params.merge(:format => 'xml')
|
90
|
+
response.response_code.should == 422
|
91
|
+
ActiveResource::Formats::XmlFormat.decode(response.body).should == { 'error' => 'Atributo possui um erro' }
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'deve renderizar novamente a ação edit após chamar o update' do
|
95
|
+
@<%= file_name %>.should_receive(:update_attributes).and_return(false)
|
96
|
+
put :update, @params
|
97
|
+
response.should be_success
|
98
|
+
response.should render_template('edit')
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'deve renderizar um XML de erros após chamar o update com REST' do
|
102
|
+
@<%= file_name %>.should_receive(:update_attributes).and_return(false)
|
103
|
+
put :update, @params.merge(:format => 'xml')
|
104
|
+
response.response_code.should == 422
|
105
|
+
ActiveResource::Formats::XmlFormat.decode(response.body).should == { 'error' => 'Atributo possui um erro' }
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe 'respondendo ao DELETE' do
|
111
|
+
it 'deve deletar um registro após chamar o destroy e redirecionar para a listagem de <%= file_plural %>' do
|
112
|
+
antes = <%= class_name %>.all.size
|
113
|
+
delete :destroy, :id => @<%= file_name %>.id
|
114
|
+
response.should redirect_to(<%= file_plural %>_url)
|
115
|
+
<%= class_name %>.all.size.should == antes - 1
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'deve deletar um registro após chamar o destroy com REST' do
|
119
|
+
antes = <%= class_name %>.all.size
|
120
|
+
delete :destroy, :id => @<%= file_name %>.id, :format => 'xml'
|
121
|
+
response.should be_success
|
122
|
+
<%= class_name %>.all.size.should == antes - 1
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe <%= class_name %> do
|
4
|
+
before(:each) do
|
5
|
+
@validos = {
|
6
|
+
<% attributes.each do |atributo|
|
7
|
+
if(atributo.type == :references) -%>
|
8
|
+
:<%= atributo.name %>_id => 1,
|
9
|
+
<% else -%>
|
10
|
+
:<%= atributo.name %> => <%= atributo.default_value %>,
|
11
|
+
<% end -%>
|
12
|
+
<% end -%>
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
it "deve ser criado se forem passados atributos válidos" do
|
17
|
+
<%= class_name %>.create!(@validos)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'deve validar a presença de determinados atributos' do
|
21
|
+
@<%= class_name.underscore %> = <%= class_name %>.create
|
22
|
+
|
23
|
+
#Coloque os atributos que devem ser checados no array a seguir
|
24
|
+
[].each do |atributo|
|
25
|
+
@<%= class_name.underscore %>.should have(1).error_on(atributo)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Descrição:
|
2
|
+
Gera um teste, em RSpec, para um scaffold. Usa STUBs e MOCKs para fazer os updates e os creates dos
|
3
|
+
controllers, e não integra views nem Models. Usar esse método quando o controller for razoavelmente
|
4
|
+
simples de ser testado, ou quando renderizar as actions dos controllers for um gargalo de performance.
|
5
|
+
|
6
|
+
Examplo:
|
7
|
+
./script/generate tdd_scaffold_stub Aluno nome:string nascimento:date
|
8
|
+
|
9
|
+
Isto vai criar:
|
10
|
+
spec/models/aluno_spec.rb
|
11
|
+
spec/fixtures/alunos.yml
|
12
|
+
spec/controller/alunos_controller_spec.rb
|
13
|
+
spec/helpers/alunos_helpers_spec.rb
|
14
|
+
spec/views/alunos/index.html.erb_spec.rb
|
15
|
+
spec/views/alunos/new.html.erb_spec.rb
|
16
|
+
spec/views/alunos/show.html.erb_spec.rb
|
17
|
+
spec/views/alunos/edit.html.erb_spec.rb
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../default_values'
|
2
|
+
|
3
|
+
class TddScaffoldStubGenerator < Rails::Generator::NamedBase
|
4
|
+
attr_reader :file_plural, :class_plural
|
5
|
+
|
6
|
+
def manifest
|
7
|
+
record do |m|
|
8
|
+
# m.directory "lib"
|
9
|
+
# m.template 'README', "README"
|
10
|
+
m.class_collisions class_path, class_name
|
11
|
+
|
12
|
+
@file_plural = file_name.pluralize
|
13
|
+
@class_plural = class_name.pluralize
|
14
|
+
|
15
|
+
m.directory 'spec'
|
16
|
+
m.directory 'spec/controllers'
|
17
|
+
m.directory File.join('spec/controllers', class_path)
|
18
|
+
m.template 'controller_spec.rb.erb', File.join('spec/controllers', class_path, "#{@file_plural}_controller_spec.rb")
|
19
|
+
m.directory 'spec/models'
|
20
|
+
m.directory File.join('spec/models', class_path)
|
21
|
+
m.template 'model_spec.rb.erb', File.join('spec/models', class_path, "#{file_name}_spec.rb")
|
22
|
+
m.directory 'spec/helpers'
|
23
|
+
m.directory File.join('spec/helpers', class_path)
|
24
|
+
m.template 'helper_spec.rb.erb', File.join('spec/helpers', class_path, "#{@file_plural}_helper_spec.rb")
|
25
|
+
|
26
|
+
m.directory File.join('spec/fixtures', class_path)
|
27
|
+
m.template 'model:fixtures.yml', File.join('spec/fixtures', "#{table_name}.yml")
|
28
|
+
|
29
|
+
|
30
|
+
views_dir = File.join('spec/views', @file_plural)
|
31
|
+
m.directory 'spec/views'
|
32
|
+
m.directory views_dir
|
33
|
+
m.directory File.join(views_dir, class_path)
|
34
|
+
m.template 'index.html.erb_spec.rb.erb', File.join(views_dir, class_path, 'index.html.erb_spec.rb')
|
35
|
+
m.template 'new.html.erb_spec.rb.erb', File.join(views_dir, class_path, 'new.html.erb_spec.rb')
|
36
|
+
m.template 'show.html.erb_spec.rb.erb', File.join(views_dir, class_path, 'show.html.erb_spec.rb')
|
37
|
+
m.template 'edit.html.erb_spec.rb.erb', File.join(views_dir, class_path, 'edit.html.erb_spec.rb')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|