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.
Files changed (50) hide show
  1. data/README +38 -0
  2. data/generators/default_values.rb +21 -0
  3. data/generators/factory_scaffold/USAGE +15 -0
  4. data/generators/factory_scaffold/factory_scaffold_generator.rb +27 -0
  5. data/generators/factory_scaffold/templates/controller_spec.rb.erb +135 -0
  6. data/generators/factory_scaffold/templates/helper_spec.rb.erb +5 -0
  7. data/generators/factory_scaffold/templates/model_spec.rb.erb +8 -0
  8. data/generators/ferret_scaffold/USAGE +12 -0
  9. data/generators/ferret_scaffold/ferret_scaffold_generator.rb +92 -0
  10. data/generators/ferret_scaffold/templates/controller.rb.erb +128 -0
  11. data/generators/ferret_scaffold/templates/controller_spec.rb.erb +155 -0
  12. data/generators/ferret_scaffold/templates/helper.rb.erb +2 -0
  13. data/generators/ferret_scaffold/templates/helper_spec.rb.erb +7 -0
  14. data/generators/ferret_scaffold/templates/migration.rb.erb +20 -0
  15. data/generators/ferret_scaffold/templates/model.rb.erb +8 -0
  16. data/generators/ferret_scaffold/templates/model_spec.rb.erb +28 -0
  17. data/generators/ferret_scaffold/templates/views/_dados_busca.html.erb +11 -0
  18. data/generators/ferret_scaffold/templates/views/_dados_model.html.erb +8 -0
  19. data/generators/ferret_scaffold/templates/views/edit.html.erb +13 -0
  20. data/generators/ferret_scaffold/templates/views/index.html.erb +11 -0
  21. data/generators/ferret_scaffold/templates/views/layout.html.erb +18 -0
  22. data/generators/ferret_scaffold/templates/views/new.html.erb +12 -0
  23. data/generators/ferret_scaffold/templates/views/show.html.erb +16 -0
  24. data/generators/layout/USAGE +10 -0
  25. data/generators/layout/layout_generator.rb +22 -0
  26. data/generators/layout/templates/README +7 -0
  27. data/generators/layout/templates/layout.html.erb +26 -0
  28. data/generators/layout/templates/pt_BR.yml +109 -0
  29. data/generators/layout/templates/stylesheet.css +60 -0
  30. data/generators/tdd_controller/USAGE +9 -0
  31. data/generators/tdd_controller/tdd_controller_generator.rb +15 -0
  32. data/generators/tdd_controller/templates/controller_spec.rb.erb +29 -0
  33. data/generators/tdd_model/USAGE +10 -0
  34. data/generators/tdd_model/tdd_model_generator.rb +17 -0
  35. data/generators/tdd_model/templates/model_spec.rb.erb +24 -0
  36. data/generators/tdd_scaffold/USAGE +11 -0
  37. data/generators/tdd_scaffold/tdd_scaffold_generator.rb +32 -0
  38. data/generators/tdd_scaffold/templates/controller_spec.rb.erb +125 -0
  39. data/generators/tdd_scaffold/templates/helper_spec.rb.erb +7 -0
  40. data/generators/tdd_scaffold/templates/model_spec.rb.erb +28 -0
  41. data/generators/tdd_scaffold_stub/USAGE +17 -0
  42. data/generators/tdd_scaffold_stub/tdd_scaffold_stub_generator.rb +40 -0
  43. data/generators/tdd_scaffold_stub/templates/controller_spec.rb.erb +157 -0
  44. data/generators/tdd_scaffold_stub/templates/edit.html.erb_spec.rb.erb +14 -0
  45. data/generators/tdd_scaffold_stub/templates/helper_spec.rb.erb +7 -0
  46. data/generators/tdd_scaffold_stub/templates/index.html.erb_spec.rb.erb +14 -0
  47. data/generators/tdd_scaffold_stub/templates/model_spec.rb.erb +24 -0
  48. data/generators/tdd_scaffold_stub/templates/new.html.erb_spec.rb.erb +12 -0
  49. data/generators/tdd_scaffold_stub/templates/show.html.erb_spec.rb.erb +14 -0
  50. 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,9 @@
1
+ Descrição:
2
+ Gera um teste, em RSpec, para um controlador Rails.
3
+
4
+ Examplo:
5
+ ./script/generate tdd_controller Alunos
6
+
7
+ Isto vai criar:
8
+ spec/controller/alunos_controller_spec.rb
9
+
@@ -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,10 @@
1
+ Descrição:
2
+ Gera um teste, em RSpec, para um modelo Rails.
3
+
4
+ Examplo:
5
+ ./script/generate tdd_model Aluno nome:string nascimento:date
6
+
7
+ Isto vai criar:
8
+ spec/models/aluno_spec.rb
9
+ spec/fixtures/alunos.yml
10
+
@@ -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,7 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe <%= class_plural %>Helper do
4
+ include <%= class_plural %>Helper
5
+
6
+ #Insira seus testes aqui
7
+ 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