shoulda_machinist_generator 0.3.4 → 0.4.0

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 (23) hide show
  1. data/Rakefile +1 -0
  2. data/VERSION +1 -1
  3. data/rails_generators/shoulda_machinist_admin_scaffold/shoulda_machinist_admin_scaffold_generator.rb +251 -0
  4. data/rails_generators/shoulda_machinist_admin_scaffold/templates/admin/controller.rb +85 -0
  5. data/rails_generators/shoulda_machinist_admin_scaffold/templates/admin/functional_test.rb +108 -0
  6. data/rails_generators/shoulda_machinist_admin_scaffold/templates/admin/helper.rb +2 -0
  7. data/rails_generators/shoulda_machinist_admin_scaffold/templates/admin/layout.html.erb +17 -0
  8. data/rails_generators/shoulda_machinist_admin_scaffold/templates/admin/view__form.html.erb +6 -0
  9. data/rails_generators/shoulda_machinist_admin_scaffold/templates/admin/view_edit.html.erb +14 -0
  10. data/rails_generators/shoulda_machinist_admin_scaffold/templates/admin/view_index.html.erb +29 -0
  11. data/rails_generators/shoulda_machinist_admin_scaffold/templates/admin/view_new.html.erb +13 -0
  12. data/rails_generators/shoulda_machinist_admin_scaffold/templates/admin/view_show.html.erb +13 -0
  13. data/rails_generators/shoulda_machinist_admin_scaffold/templates/controller.rb +24 -0
  14. data/rails_generators/shoulda_machinist_admin_scaffold/templates/functional_test.rb +31 -0
  15. data/rails_generators/shoulda_machinist_admin_scaffold/templates/helper.rb +2 -0
  16. data/rails_generators/shoulda_machinist_admin_scaffold/templates/init.rb +4 -0
  17. data/rails_generators/shoulda_machinist_admin_scaffold/templates/layout.html.erb +17 -0
  18. data/rails_generators/shoulda_machinist_admin_scaffold/templates/routes.rb +0 -0
  19. data/rails_generators/shoulda_machinist_admin_scaffold/templates/test_helper.rb +24 -0
  20. data/rails_generators/shoulda_machinist_admin_scaffold/templates/view_index.html.erb +19 -0
  21. data/rails_generators/shoulda_machinist_admin_scaffold/templates/view_show.html.erb +9 -0
  22. data/rails_generators/shoulda_machinist_model/templates/unit_test.rb +1 -0
  23. metadata +47 -16
data/Rakefile CHANGED
@@ -1,3 +1,4 @@
1
+ require 'rubygems'
1
2
  require 'rake'
2
3
  require 'rake/testtask'
3
4
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.4
1
+ 0.4.0
@@ -0,0 +1,251 @@
1
+ #--
2
+ # ShouldaMachinistScaffoldGeneratorConfig based on rubygems code.
3
+ # Thank you Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ #++
5
+ class ShouldaMachinistAdminScaffoldGeneratorConfig
6
+
7
+ DEFAULT_TEMPLATING = 'erb'
8
+ DEFAULT_FUNCTIONAL_TEST_STYLE = 'basic'
9
+
10
+ def initialize()
11
+ @config = load_file(config_file)
12
+
13
+ @templating = @config[:templating] || DEFAULT_TEMPLATING
14
+ @functional_test_style = @config[:functional_test_style] || DEFAULT_FUNCTIONAL_TEST_STYLE
15
+ end
16
+
17
+ attr_reader :templating, :functional_test_style
18
+
19
+ private
20
+
21
+ def load_file(filename)
22
+ begin
23
+ YAML.load(File.read(filename)) if filename and File.exist?(filename)
24
+ rescue ArgumentError
25
+ warn "Failed to load #{config_file_name}"
26
+ rescue Errno::EACCES
27
+ warn "Failed to load #{config_file_name} due to permissions problem."
28
+ end or {}
29
+ end
30
+
31
+ def config_file
32
+ File.join(find_home, '.shoulda_generator')
33
+ end
34
+
35
+ ##
36
+ # Finds the user's home directory.
37
+
38
+ def find_home
39
+ ['HOME', 'USERPROFILE'].each do |homekey|
40
+ return ENV[homekey] if ENV[homekey]
41
+ end
42
+
43
+ if ENV['HOMEDRIVE'] && ENV['HOMEPATH'] then
44
+ return "#{ENV['HOMEDRIVE']}:#{ENV['HOMEPATH']}"
45
+ end
46
+
47
+ begin
48
+ File.expand_path("~")
49
+ rescue
50
+ if File::ALT_SEPARATOR then
51
+ "C:/"
52
+ else
53
+ "/"
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+ class ShouldaMachinistAdminScaffoldGenerator < Rails::Generator::NamedBase
60
+ default_options :skip_timestamps => false, :skip_migration => false, :skip_layout => true
61
+
62
+ attr_reader :controller_name,
63
+ :controller_class_path,
64
+ :controller_file_path,
65
+ :controller_class_nesting,
66
+ :controller_class_nesting_depth,
67
+ :controller_class_name,
68
+ :controller_underscore_name,
69
+ :controller_singular_name,
70
+ :controller_plural_name
71
+ alias_method :controller_file_name, :controller_underscore_name
72
+ alias_method :controller_table_name, :controller_plural_name
73
+
74
+ def initialize(runtime_args, runtime_options = {})
75
+ super
76
+
77
+ @configuration = ShouldaMachinistAdminScaffoldGeneratorConfig.new
78
+
79
+ @controller_name = @name.pluralize
80
+
81
+ base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(@controller_name)
82
+ @controller_class_name_without_nesting, @controller_underscore_name, @controller_plural_name = inflect_names(base_name)
83
+ @controller_singular_name=base_name.singularize
84
+ if @controller_class_nesting.empty?
85
+ @controller_class_name = @controller_class_name_without_nesting
86
+ else
87
+ @controller_class_name = "#{@controller_class_nesting}::#{@controller_class_name_without_nesting}"
88
+ end
89
+ end
90
+
91
+ def manifest
92
+ record do |m|
93
+ # Check for class naming collisions.
94
+ m.class_collisions(controller_class_path, "#{controller_class_name}Controller", "#{controller_class_name}Helper")
95
+ m.class_collisions(class_path, "#{class_name}")
96
+
97
+ # Controller, helper, views, test and stylesheets directories.
98
+ #
99
+ # Common directories:
100
+ #
101
+ m.directory(File.join('app/models', class_path))
102
+ m.directory(File.join('test/unit', class_path))
103
+ #
104
+ # Admin directories:
105
+ #
106
+ m.directory(File.join('app/controllers/admin', controller_class_path))
107
+ m.directory(File.join('app/helpers/admin', controller_class_path))
108
+ m.directory(File.join('app/views/admin', controller_class_path, controller_file_name))
109
+ m.directory(File.join('app/views/layouts/admin', controller_class_path))
110
+ m.directory(File.join('test/functional/admin', controller_class_path))
111
+ #
112
+ # Public directories:
113
+ #
114
+ m.directory(File.join('app/controllers', controller_class_path))
115
+ m.directory(File.join('app/helpers', controller_class_path))
116
+ m.directory(File.join('app/views', controller_class_path, controller_file_name))
117
+ m.directory(File.join('app/views/layouts', controller_class_path))
118
+ m.directory(File.join('test/functional', controller_class_path))
119
+
120
+ for action in scaffold_views
121
+ m.template(
122
+ "view_#{action}.html.erb",
123
+ File.join('app/views', controller_class_path, controller_file_name, "#{action}.html.erb")
124
+ )
125
+ end
126
+
127
+ for action in scaffold_admin_views
128
+ m.template(
129
+ "admin/view_#{action}.html.erb",
130
+ File.join('app/views/admin', controller_class_path, controller_file_name, "#{action}.html.erb")
131
+ )
132
+ end
133
+
134
+ # Layout and stylesheet for public site.
135
+ m.template('layout.html.erb', File.join('app/views/layouts', controller_class_path, "#{controller_file_name}.html.erb"))
136
+
137
+
138
+ # Layout and stylesheet for admin site.
139
+ m.template('admin/layout.html.erb', File.join('app/views/layouts/admin', controller_class_path, "#{controller_file_name}.html.erb"))
140
+
141
+
142
+ # Controller for public site
143
+ m.template(
144
+ 'controller.rb', File.join('app/controllers', controller_class_path, "#{controller_file_name}_controller.rb")
145
+ )
146
+
147
+ # Controller for admin
148
+ m.template(
149
+ 'admin/controller.rb', File.join('app/controllers/admin',
150
+ controller_class_path, "#{controller_file_name}_controller.rb")
151
+ )
152
+
153
+ # Tests and helpers for public site
154
+ m.template('functional_test.rb', File.join('test/functional',
155
+ controller_class_path, "#{controller_file_name}_controller_test.rb"))
156
+
157
+ m.template('helper.rb', File.join('app/helpers',
158
+ controller_class_path, "#{controller_file_name}_helper.rb"))
159
+
160
+ # Tests and helpers for admin
161
+ m.template('admin/functional_test.rb',
162
+ File.join('test/functional/admin', controller_class_path,
163
+ "#{controller_file_name}_controller_test.rb"))
164
+
165
+ m.template('admin/helper.rb', File.join('app/helpers/admin',
166
+ controller_class_path, "#{controller_file_name}_helper.rb"))
167
+
168
+ m.route_resources controller_file_name
169
+ m.route_admin_resources controller_file_name
170
+
171
+ m.dependency 'shoulda_model', [name] + @args, :collision => :skip
172
+ end
173
+ end
174
+
175
+ protected
176
+ # Override with your own usage banner.
177
+ def banner
178
+ "Usage: #{$0} shoulda_machinist_admin_scaffold ModelName [field:type, field:type]"
179
+ end
180
+
181
+ def add_options!(opt)
182
+ opt.separator ''
183
+ opt.separator 'Options:'
184
+ opt.on("--skip-timestamps",
185
+ "Don't add timestamps to the migration file for this model") { |v| options[:skip_timestamps] = v }
186
+ opt.on("--skip-migration",
187
+ "Don't generate a migration file for this model") { |v| options[:skip_migration] = v }
188
+
189
+ end
190
+
191
+ def scaffold_admin_views
192
+ %w[ index show new edit _form ]
193
+ end
194
+
195
+ def scaffold_views
196
+ %w[ index show ]
197
+ end
198
+
199
+ def model_name
200
+ class_name.demodulize
201
+ end
202
+
203
+ # This inserts the routing declarations into the engine's routes file.
204
+ # Copied from Rails::Generator::Commands and modified to make it do what we want.
205
+ #
206
+ def route_admin_resources(*resources)
207
+ resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
208
+
209
+ # Add the map.namespace(:admin) macro into the routes file unless it's already there.
210
+ #
211
+ unless exists_in_file? 'config/routes.rb', /#{Regexp.escape("map.namespace(:admin) do |admin|")}/mi
212
+ sentinel = 'ActionController::Routing::Routes.draw do |map|'
213
+ logger.route "inserting map.namespace(:admin)"
214
+ unless options[:pretend]
215
+ gsub_file File.join('config/routes.rb'), /(#{Regexp.escape(sentinel)})/mi do |match|
216
+ "#{match}\n map.namespace(:admin) do |admin|\n end\n\n # Minuet routes go here\n"
217
+ end
218
+ end
219
+ end
220
+
221
+
222
+ # Add the map.namespace resources macro into the admin namespace
223
+ # in the routes file.
224
+ #
225
+ sentinel = 'map.namespace(:admin) do |admin|'
226
+ logger.route "map.namespace resources #{resource_list}"
227
+ unless options[:pretend]
228
+ gsub_file File.join('config/routes.rb'), /(#{Regexp.escape(sentinel)})/mi do |match|
229
+ "#{match}\n admin.resources #{resource_list}"
230
+ end
231
+ end
232
+
233
+ end
234
+
235
+ # It's quite crude to copy and paste this in here, but it's working for the moment. It actually comes
236
+ # from Rails::Generator::Commands. This should be fixed.
237
+ #
238
+ def gsub_file(relative_destination, regexp, *args, &block)
239
+ path = destination_path(relative_destination)
240
+ content = File.read(path).gsub(regexp, *args, &block)
241
+ File.open(path, File::RDWR|File::CREAT) { |file| file.write(content) }
242
+ end
243
+
244
+ def exists_in_file?(relative_destination, regexp)
245
+ path = destination_path(relative_destination)
246
+ content = File.read(path)
247
+ !regexp.match(content).nil?
248
+ end
249
+
250
+ end
251
+
@@ -0,0 +1,85 @@
1
+ class Admin::<%= controller_class_name %>Controller < ApplicationController
2
+ # GET /<%= table_name %>
3
+ # GET /<%= table_name %>.xml
4
+ def index
5
+ @<%= table_name %> = <%= class_name %>.find(:all)
6
+
7
+ respond_to do |format|
8
+ format.html # index.html.erb
9
+ format.xml { render :xml => @<%= table_name %> }
10
+ end
11
+ end
12
+
13
+ # GET /<%= table_name %>/1
14
+ # GET /<%= table_name %>/1.xml
15
+ def show
16
+ @<%= file_name %> = <%= class_name %>.find(params[:id])
17
+
18
+ respond_to do |format|
19
+ format.html # show.html.erb
20
+ format.xml { render :xml => @<%= file_name %> }
21
+ end
22
+ end
23
+
24
+ # GET /<%= table_name %>/new
25
+ # GET /<%= table_name %>/new.xml
26
+ def new
27
+ @<%= file_name %> = <%= class_name %>.new
28
+
29
+ respond_to do |format|
30
+ format.html # new.html.erb
31
+ format.xml { render :xml => @<%= file_name %> }
32
+ end
33
+ end
34
+
35
+ # GET /<%= table_name %>/1/edit
36
+ def edit
37
+ @<%= file_name %> = <%= class_name %>.find(params[:id])
38
+ end
39
+
40
+ # POST /<%= table_name %>
41
+ # POST /<%= table_name %>.xml
42
+ def create
43
+ @<%= file_name %> = <%= class_name %>.new(params[:<%= file_name %>])
44
+
45
+ respond_to do |format|
46
+ if @<%= file_name %>.save
47
+ flash[:notice] = '<%= class_name %> was successfully created.'
48
+ format.html { redirect_to(admin_<%= singular_name %>_url(@<%= singular_name %>)) }
49
+ format.xml { render :xml => @<%= file_name %>, :status => :created, :location => @<%= file_name %> }
50
+ else
51
+ format.html { render :action => "new" }
52
+ format.xml { render :xml => @<%= file_name %>.errors, :status => :unprocessable_entity }
53
+ end
54
+ end
55
+ end
56
+
57
+ # PUT /<%= table_name %>/1
58
+ # PUT /<%= table_name %>/1.xml
59
+ def update
60
+ @<%= file_name %> = <%= class_name %>.find(params[:id])
61
+
62
+ respond_to do |format|
63
+ if @<%= file_name %>.update_attributes(params[:<%= file_name %>])
64
+ flash[:notice] = '<%= class_name %> was successfully updated.'
65
+ format.html { redirect_to(admin_<%= singular_name %>_url(@<%= singular_name %>)) }
66
+ format.xml { head :ok }
67
+ else
68
+ format.html { render :action => "edit" }
69
+ format.xml { render :xml => @<%= file_name %>.errors, :status => :unprocessable_entity }
70
+ end
71
+ end
72
+ end
73
+
74
+ # DELETE /<%= table_name %>/1
75
+ # DELETE /<%= table_name %>/1.xml
76
+ def destroy
77
+ @<%= file_name %> = <%= class_name %>.find(params[:id])
78
+ @<%= file_name %>.destroy
79
+
80
+ respond_to do |format|
81
+ format.html { redirect_to(admin_<%= table_name %>_url) }
82
+ format.xml { head :ok }
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,108 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper'
2
+
3
+ class Admin::<%= controller_class_name %>ControllerTest < ActionController::TestCase
4
+
5
+ context "The Admin::<%= controller_class_name %>Controller" do
6
+
7
+ setup do
8
+ @<%= file_name %> = <%= class_name %>.make
9
+ end
10
+
11
+ context 'GET to index' do
12
+ setup do
13
+ get :index
14
+ end
15
+ should_respond_with :success
16
+ should_assign_to :<%= table_name %>
17
+ end
18
+
19
+ context 'GET to new' do
20
+ setup do
21
+ get :new
22
+ end
23
+
24
+ should_respond_with :success
25
+ should_render_template :new
26
+ should_assign_to :<%= file_name %>
27
+ end
28
+
29
+ context 'POST to create' do
30
+ context "with valid parameters" do
31
+ setup do
32
+ assert_difference('<%= class_name %>.count') do
33
+ post :create, :<%= file_name %> => { }
34
+ end
35
+ end
36
+
37
+ should_redirect_to("the show page") { admin_<%= file_name %>_path(assigns(:<%= file_name %>))}
38
+ should_assign_to :<%= file_name %>
39
+ end
40
+
41
+ # context "with invalid parameters" do
42
+ # setup do
43
+ # assert_no_difference('<%= class_name %>.count') do
44
+ # post :create, :<%= file_name %> => {}
45
+ # end
46
+ # end
47
+
48
+ # should_respond_with :success
49
+ # should_render_template :new
50
+ # should_assign_to :<%= file_name %>
51
+ # end
52
+ end
53
+
54
+ context 'GET to show' do
55
+ setup do
56
+ get :show, :id => @<%= file_name %>.to_param
57
+ end
58
+ should_respond_with :success
59
+ should_render_template :show
60
+ should_assign_to :<%= file_name %>
61
+ end
62
+
63
+ context 'GET to edit' do
64
+ setup do
65
+ get :edit, :id => @<%= file_name %>.to_param
66
+ end
67
+ should_respond_with :success
68
+ should_render_template :edit
69
+ should_assign_to :<%= file_name %>
70
+ end
71
+
72
+ context 'PUT to update' do
73
+ context "with valid parameters" do
74
+ setup do
75
+ assert_no_difference("<%= class_name %>.count") do
76
+ put :update, :id => @<%= file_name %>.to_param, :<%= file_name %> => {}
77
+ end
78
+ end
79
+
80
+ should_redirect_to("the show page") { admin_<%= file_name %>_path(assigns(:<%= file_name %>))}
81
+ should_assign_to :<%= file_name %>
82
+ end
83
+
84
+ # context "with invalid parameters" do
85
+ # setup do
86
+ # assert_no_difference("<%= class_name %>.count") do
87
+ # put :update, :id => @<%= file_name %>.to_param, :<%= file_name %> => { }
88
+ # end
89
+ # end
90
+
91
+ # should_respond_with :success
92
+ # should_render_template :edit
93
+ # should_assign_to :<%= file_name %>
94
+ # end
95
+ end
96
+
97
+ context 'DELETE to destroy' do
98
+ setup do
99
+ assert_difference('<%= class_name %>.count', -1) do
100
+ delete :destroy, :id => @<%= file_name %>.to_param
101
+ end
102
+ end
103
+
104
+ should_redirect_to ("the index page") { admin_<%= table_name %>_path }
105
+ end
106
+ end
107
+ end
108
+
@@ -0,0 +1,2 @@
1
+ module Admin::<%= controller_class_name %>Helper
2
+ end
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
7
+ <title><%= controller_class_name %>: <%%= controller.action_name %></title>
8
+ <%%= stylesheet_link_tag 'scaffold' %>
9
+ </head>
10
+ <body>
11
+
12
+ <p style="color: green"><%%= flash[:notice] %></p>
13
+
14
+ <%%= yield %>
15
+
16
+ </body>
17
+ </html>
@@ -0,0 +1,6 @@
1
+ <% for attribute in attributes -%>
2
+ <p>
3
+ <%%= f.label :<%= attribute.name %> %><br />
4
+ <%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
5
+ </p>
6
+ <% end -%>
@@ -0,0 +1,14 @@
1
+ <%% @page_title = "Edit <%= singular_name.humanize.downcase %>" %>
2
+ <h2>Edit <%= singular_name.humanize.downcase %> - <%%= link_to 'Show <%= singular_name.humanize.downcase %>', admin_<%= singular_name %>_path(@<%= singular_name %>) %></h2>
3
+
4
+ <%% form_for(:<%= singular_name %>, :url => admin_<%= singular_name %>_path(@<%= singular_name %>), :html => { :method => :put }) do |f| %>
5
+ <%%= f.error_messages %>
6
+
7
+ <p>Please complete all fields marked <span class="required">*</span></p>
8
+
9
+ <%%= render :partial => 'form', :locals => {:f => f} %>
10
+
11
+ <p>
12
+ <%%= f.submit "Update <%= singular_name.humanize.downcase %>", :class => "create" %>
13
+ </p>
14
+ <%% end %>
@@ -0,0 +1,29 @@
1
+ <%% @page_title = "Manage <%= plural_name.humanize %>" %>
2
+ <h2>Manage <%= plural_name.humanize %> - <%%= link_to 'Create <%= singular_name.humanize %>', new_admin_<%= singular_name %>_path %></h2>
3
+ <!-- <p class="create-button"><%%= link_to '<span class="left"></span><span class="middle">Create CV</span><span class="right"></span>', new_admin_<%= singular_name %>_path %></p> -->
4
+
5
+ <table class="grid" cellpadding="0" cellspacing="0">
6
+ <tr>
7
+ <% for attribute in attributes -%>
8
+ <th><%= attribute.column.human_name %></th>
9
+ <% end -%>
10
+ <th>Created on</th>
11
+ <th>Update on</th>
12
+ <th>&nbsp;</th>
13
+ <th>&nbsp;</th>
14
+ <th>&nbsp;</th>
15
+ </tr>
16
+
17
+ <%% for <%= singular_name %> in @<%= plural_name %> %>
18
+ <tr class="<%%= cycle("row", "alt-row") %>">
19
+ <% for attribute in attributes -%>
20
+ <td><%%=h <%= singular_name %>.<%= attribute.name %> %></td>
21
+ <% end -%>
22
+ <td><%%=h long_date_with_time(<%= singular_name %>.created_at) %></td>
23
+ <td><%%=h long_date_with_time(<%= singular_name %>.updated_at) %></td>
24
+ <td class="show"><%%= link_to 'View', admin_<%= singular_name %>_path(<%= singular_name %>), :title => "View <%= singular_name %>" %></td>
25
+ <td class="edit"><%%= link_to 'Edit', edit_admin_<%= singular_name %>_path(<%= singular_name %>), :title => "Edit <%= singular_name %>" %></td>
26
+ <td class="delete"><%%= link_to 'Delete', admin_<%= singular_name %>_path(<%= singular_name %>), :title => "Delete <%= singular_name %>", :confirm => 'Are you sure you want to delete this <%= singular_name %>?', :method => :delete %></td>
27
+ </tr>
28
+ <%% end %>
29
+ </table>
@@ -0,0 +1,13 @@
1
+ <%% @page_title = "Create <%= singular_name.humanize.downcase %>" %>
2
+ <h2>Create <%= singular_name.humanize.downcase %></h2>
3
+
4
+ <%% form_for(:<%= singular_name %>, :url => admin_<%= plural_name %>_path) do |f| %>
5
+ <%%= f.error_messages %>
6
+
7
+ <p>Please complete all fields marked <span class="required">*</span></p>
8
+
9
+ <%%= render :partial => 'form', :locals => {:f => f} %>
10
+ <p>
11
+ <%%= f.submit "Create <%= singular_name.humanize.downcase%>", :class => "create" %>
12
+ </p>
13
+ <%% end %>
@@ -0,0 +1,13 @@
1
+ <%% @page_title = "Show <%= singular_name.humanize.downcase %>" %>
2
+ <h2>Show <%= singular_name %> - <%%= link_to 'Edit <%= singular_name.humanize.downcase %>', edit_admin_<%= singular_name %>_path(@<%= singular_name %>) %></h2>
3
+
4
+ <% for attribute in attributes -%>
5
+ <p>
6
+ <strong><%= attribute.column.human_name %>:</strong>
7
+ <%%=h @<%= singular_name %>.<%= attribute.name %> %>
8
+ </p>
9
+ <% end -%>
10
+
11
+ <p>
12
+ <%%= link_to 'Back to <%= plural_name %>', admin_<%= plural_name %>_url %>
13
+ </p>
@@ -0,0 +1,24 @@
1
+ class <%= controller_class_name %>Controller < ApplicationController
2
+ # GET /<%= table_name %>
3
+ # GET /<%= table_name %>.xml
4
+ def index
5
+ @<%= table_name %> = <%= class_name %>.find(:all)
6
+
7
+ respond_to do |format|
8
+ format.html # index.html.erb
9
+ format.xml { render :xml => @<%= table_name %> }
10
+ end
11
+ end
12
+
13
+ # GET /<%= table_name %>/1
14
+ # GET /<%= table_name %>/1.xml
15
+ def show
16
+ @<%= file_name %> = <%= class_name %>.find(params[:id])
17
+
18
+ respond_to do |format|
19
+ format.html # show.html.erb
20
+ format.xml { render :xml => @<%= file_name %> }
21
+ end
22
+ end
23
+
24
+ end
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+
3
+ class <%= controller_class_name %>ControllerTest < ActionController::TestCase
4
+
5
+ context "The <%= controller_class_name %>Controller" do
6
+
7
+ setup do
8
+ @<%= file_name %> = <%= class_name %>.make
9
+ end
10
+
11
+ context 'GET to index' do
12
+ setup do
13
+ get :index
14
+ end
15
+ should_respond_with :success
16
+ should_assign_to :<%= table_name %>
17
+ end
18
+
19
+
20
+ context 'GET to show' do
21
+ setup do
22
+ get :show, :id => @<%= file_name %>.to_param
23
+ end
24
+ should_respond_with :success
25
+ should_render_template :show
26
+ should_assign_to :<%= file_name %>
27
+ end
28
+
29
+ end
30
+ end
31
+
@@ -0,0 +1,2 @@
1
+ module <%= controller_class_name %>Helper
2
+ end
@@ -0,0 +1,4 @@
1
+ require File.join(RAILS_ROOT, "vendor/plugins/minuet_core/lib/minuet_core")
2
+
3
+ # Add the permissions for this Minuet Engine into MinuetCore's permissions arrays
4
+ #MinuetCore.all_minuet_permissions << <%= controller_class_name %>.permissions if defined? MinuetCore
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
7
+ <title><%= controller_class_name %>: <%%= controller.action_name %></title>
8
+ <%%= stylesheet_link_tag 'scaffold' %>
9
+ </head>
10
+ <body>
11
+
12
+ <p style="color: green"><%%= flash[:notice] %></p>
13
+
14
+ <%%= yield %>
15
+
16
+ </body>
17
+ </html>
@@ -0,0 +1,24 @@
1
+ # Load the normal Rails helper. This ensures the environment is loaded.
2
+ require File.expand_path(File.dirname(__FILE__) + '/../../../../test/test_helper')
3
+
4
+ # Load the schema - if migrations have been performed, this will be up to date.
5
+ #load(File.dirname(__FILE__) + "/../db/schema.rb")
6
+ #Rake::Task['db:test:prepare']
7
+
8
+ # Set up the fixtures location manually, we don't want to move them to a
9
+ # temporary path using Engines::Testing.set_fixture_path.
10
+ Test::Unit::TestCase.fixture_path = File.dirname(__FILE__) + "/fixtures/"
11
+ $LOAD_PATH.unshift(Test::Unit::TestCase.fixture_path)
12
+
13
+ # The only drawback to using transactional fixtures is when you actually
14
+ # need to test transactions. Since your test is bracketed by a transaction,
15
+ # any transactions started in your code will be automatically rolled back.
16
+ Test::Unit::TestCase.use_transactional_fixtures = false
17
+
18
+ # Instantiated fixtures are slow, but give you @david where otherwise you
19
+ # would need people(:david). If you don't want to migrate your existing
20
+ # test cases which use the @david style and don't mind the speed hit (each
21
+ # instantiated fixtures translates to a database query per test method),
22
+ # then set this back to true.
23
+ Test::Unit::TestCase.use_instantiated_fixtures = false
24
+
@@ -0,0 +1,19 @@
1
+ <h1>Listing <%= plural_name.humanize.downcase %></h1>
2
+
3
+ <table>
4
+ <tr>
5
+ <% for attribute in attributes -%>
6
+ <th><%= attribute.column.human_name %></th>
7
+ <% end -%>
8
+ <th>&nbsp;</th>
9
+ </tr>
10
+
11
+ <%% for <%= singular_name %> in @<%= plural_name %> %>
12
+ <tr>
13
+ <% for attribute in attributes -%>
14
+ <td><%%=h <%= singular_name %>.<%= attribute.name %> %></td>
15
+ <% end -%>
16
+ <td><%%= link_to 'Show <%= singular_name.humanize.downcase %>', <%= singular_name %>_url(<%= singular_name %>) %></td>
17
+ </tr>
18
+ <%% end %>
19
+ </table>
@@ -0,0 +1,9 @@
1
+ <h1>Show <%= singular_name.humanize.downcase %></h1>
2
+ <% for attribute in attributes -%>
3
+ <p>
4
+ <strong><%= attribute.column.human_name %>:</strong>
5
+ <%%=h @<%= singular_name %>.<%= attribute.name %> %>
6
+ </p>
7
+ <% end -%>
8
+
9
+ <p><%%= link_to 'Back to <%= plural_name.humanize.downcase %>', <%= plural_name %>_url %></p>
@@ -5,3 +5,4 @@ class <%= class_name %>Test < ActiveSupport::TestCase
5
5
  should_have_db_column :<%= attribute.name %>
6
6
  <% end -%>
7
7
  end
8
+
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoulda_machinist_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ hash: 15
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
5
11
  platform: ruby
6
12
  authors:
7
13
  - Dave Hrycyszyn
@@ -10,7 +16,7 @@ autorequire:
10
16
  bindir: bin
11
17
  cert_chain: []
12
18
 
13
- date: 2010-01-07 00:00:00 +00:00
19
+ date: 2011-02-24 00:00:00 +00:00
14
20
  default_executable:
15
21
  dependencies: []
16
22
 
@@ -28,6 +34,25 @@ files:
28
34
  - README.rdoc
29
35
  - Rakefile
30
36
  - VERSION
37
+ - rails_generators/shoulda_machinist_admin_scaffold/shoulda_machinist_admin_scaffold_generator.rb
38
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/admin/controller.rb
39
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/admin/functional_test.rb
40
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/admin/helper.rb
41
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/admin/layout.html.erb
42
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/admin/view__form.html.erb
43
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/admin/view_edit.html.erb
44
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/admin/view_index.html.erb
45
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/admin/view_new.html.erb
46
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/admin/view_show.html.erb
47
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/controller.rb
48
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/functional_test.rb
49
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/helper.rb
50
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/init.rb
51
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/layout.html.erb
52
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/routes.rb
53
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/test_helper.rb
54
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/view_index.html.erb
55
+ - rails_generators/shoulda_machinist_admin_scaffold/templates/view_show.html.erb
31
56
  - rails_generators/shoulda_machinist_model/USAGE
32
57
  - rails_generators/shoulda_machinist_model/shoulda_machinist_model_generator.rb
33
58
  - rails_generators/shoulda_machinist_model/templates/blueprints.rb
@@ -75,46 +100,52 @@ homepage: http://github.com/futurechimp/shoulda_machinist_generator
75
100
  licenses: []
76
101
 
77
102
  post_install_message:
78
- rdoc_options:
79
- - --charset=UTF-8
103
+ rdoc_options: []
104
+
80
105
  require_paths:
81
106
  - lib
82
107
  required_ruby_version: !ruby/object:Gem::Requirement
108
+ none: false
83
109
  requirements:
84
110
  - - ">="
85
111
  - !ruby/object:Gem::Version
112
+ hash: 3
113
+ segments:
114
+ - 0
86
115
  version: "0"
87
- version:
88
116
  required_rubygems_version: !ruby/object:Gem::Requirement
117
+ none: false
89
118
  requirements:
90
119
  - - ">="
91
120
  - !ruby/object:Gem::Version
121
+ hash: 3
122
+ segments:
123
+ - 0
92
124
  version: "0"
93
- version:
94
125
  requirements: []
95
126
 
96
127
  rubyforge_project:
97
- rubygems_version: 1.3.5
128
+ rubygems_version: 1.3.7
98
129
  signing_key:
99
130
  specification_version: 3
100
131
  summary: Generators which create tests using shoulda and machinist
101
132
  test_files:
102
- - test/test_helper.rb
103
- - test/fixtures/environment_with_constant.rb
104
- - test/fixtures/about_yml_plugins/plugin_without_about_yml/init.rb
105
133
  - test/fixtures/about_yml_plugins/bad_about_yml/init.rb
134
+ - test/fixtures/about_yml_plugins/plugin_without_about_yml/init.rb
135
+ - test/fixtures/eager/zoo.rb
136
+ - test/fixtures/eager/zoo/reptile_house.rb
137
+ - test/fixtures/environment_with_constant.rb
106
138
  - test/fixtures/lib/generators/missing_class/missing_class_generator.rb
107
139
  - test/fixtures/lib/generators/working/working_generator.rb
108
- - test/fixtures/plugins/default/stubby/init.rb
109
- - test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb
110
- - test/fixtures/plugins/default/stubby/generators/stubby_generator/stubby_generator.rb
140
+ - test/fixtures/plugins/alternate/a/generators/a_generator/a_generator.rb
111
141
  - test/fixtures/plugins/default/gemlike/init.rb
112
142
  - test/fixtures/plugins/default/gemlike/lib/gemlike.rb
113
143
  - test/fixtures/plugins/default/gemlike/rails/init.rb
114
144
  - test/fixtures/plugins/default/plugin_with_no_lib_dir/init.rb
115
- - test/fixtures/plugins/alternate/a/generators/a_generator/a_generator.rb
116
- - test/fixtures/eager/zoo/reptile_house.rb
117
- - test/fixtures/eager/zoo.rb
145
+ - test/fixtures/plugins/default/stubby/generators/stubby_generator/stubby_generator.rb
146
+ - test/fixtures/plugins/default/stubby/init.rb
147
+ - test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb
118
148
  - test/rails_generators/shoulda_model_generator_test.rb
119
149
  - test/shoulda_macros/generator_macros.rb
120
150
  - test/stolen_from_railties.rb
151
+ - test/test_helper.rb