zero_generators 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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