xenda-nifty-generators 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. data/CHANGELOG +105 -0
  2. data/LICENSE +20 -0
  3. data/Manifest +104 -0
  4. data/README.rdoc +14 -0
  5. data/Rakefile +15 -0
  6. data/TODO +7 -0
  7. data/lib/nifty_generators.rb +3 -0
  8. data/nifty-generators.gemspec +31 -0
  9. data/rails_generators/nifty_authentication/USAGE +50 -0
  10. data/rails_generators/nifty_authentication/lib/insert_commands.rb +74 -0
  11. data/rails_generators/nifty_authentication/nifty_authentication_generator.rb +128 -0
  12. data/rails_generators/nifty_authentication/templates/authentication.rb +61 -0
  13. data/rails_generators/nifty_authentication/templates/authlogic_session.rb +2 -0
  14. data/rails_generators/nifty_authentication/templates/fixtures.yml +24 -0
  15. data/rails_generators/nifty_authentication/templates/migration.rb +20 -0
  16. data/rails_generators/nifty_authentication/templates/sessions_controller.rb +45 -0
  17. data/rails_generators/nifty_authentication/templates/sessions_helper.rb +2 -0
  18. data/rails_generators/nifty_authentication/templates/tests/rspec/sessions_controller.rb +39 -0
  19. data/rails_generators/nifty_authentication/templates/tests/rspec/user.rb +83 -0
  20. data/rails_generators/nifty_authentication/templates/tests/rspec/users_controller.rb +26 -0
  21. data/rails_generators/nifty_authentication/templates/tests/shoulda/sessions_controller.rb +40 -0
  22. data/rails_generators/nifty_authentication/templates/tests/shoulda/user.rb +85 -0
  23. data/rails_generators/nifty_authentication/templates/tests/shoulda/users_controller.rb +27 -0
  24. data/rails_generators/nifty_authentication/templates/tests/testunit/sessions_controller.rb +36 -0
  25. data/rails_generators/nifty_authentication/templates/tests/testunit/user.rb +88 -0
  26. data/rails_generators/nifty_authentication/templates/tests/testunit/users_controller.rb +23 -0
  27. data/rails_generators/nifty_authentication/templates/user.rb +42 -0
  28. data/rails_generators/nifty_authentication/templates/users_controller.rb +18 -0
  29. data/rails_generators/nifty_authentication/templates/users_helper.rb +2 -0
  30. data/rails_generators/nifty_authentication/templates/views/erb/login.html.erb +30 -0
  31. data/rails_generators/nifty_authentication/templates/views/erb/signup.html.erb +24 -0
  32. data/rails_generators/nifty_authentication/templates/views/haml/login.html.haml +30 -0
  33. data/rails_generators/nifty_authentication/templates/views/haml/signup.html.haml +24 -0
  34. data/rails_generators/nifty_config/USAGE +23 -0
  35. data/rails_generators/nifty_config/nifty_config_generator.rb +32 -0
  36. data/rails_generators/nifty_config/templates/config.yml +8 -0
  37. data/rails_generators/nifty_config/templates/load_config.rb +2 -0
  38. data/rails_generators/nifty_layout/USAGE +25 -0
  39. data/rails_generators/nifty_layout/nifty_layout_generator.rb +44 -0
  40. data/rails_generators/nifty_layout/templates/helper.rb +22 -0
  41. data/rails_generators/nifty_layout/templates/layout.html.erb +22 -0
  42. data/rails_generators/nifty_layout/templates/layout.html.haml +19 -0
  43. data/rails_generators/nifty_layout/templates/stylesheet.css +81 -0
  44. data/rails_generators/nifty_layout/templates/stylesheet.sass +67 -0
  45. data/rails_generators/nifty_scaffold/USAGE +51 -0
  46. data/rails_generators/nifty_scaffold/nifty_scaffold_generator.rb +243 -0
  47. data/rails_generators/nifty_scaffold/templates/actions/create.rb +9 -0
  48. data/rails_generators/nifty_scaffold/templates/actions/destroy.rb +6 -0
  49. data/rails_generators/nifty_scaffold/templates/actions/edit.rb +3 -0
  50. data/rails_generators/nifty_scaffold/templates/actions/index.rb +7 -0
  51. data/rails_generators/nifty_scaffold/templates/actions/new.rb +3 -0
  52. data/rails_generators/nifty_scaffold/templates/actions/show.rb +3 -0
  53. data/rails_generators/nifty_scaffold/templates/actions/update.rb +9 -0
  54. data/rails_generators/nifty_scaffold/templates/controller.rb +3 -0
  55. data/rails_generators/nifty_scaffold/templates/fixtures.yml +9 -0
  56. data/rails_generators/nifty_scaffold/templates/helper.rb +2 -0
  57. data/rails_generators/nifty_scaffold/templates/inherited_resources_controller.rb +10 -0
  58. data/rails_generators/nifty_scaffold/templates/migration.rb +16 -0
  59. data/rails_generators/nifty_scaffold/templates/model.rb +3 -0
  60. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/create.rb +11 -0
  61. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/destroy.rb +6 -0
  62. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/edit.rb +4 -0
  63. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/index.rb +4 -0
  64. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/new.rb +4 -0
  65. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/show.rb +4 -0
  66. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/update.rb +11 -0
  67. data/rails_generators/nifty_scaffold/templates/tests/rspec/controller.rb +8 -0
  68. data/rails_generators/nifty_scaffold/templates/tests/rspec/model.rb +7 -0
  69. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/create.rb +13 -0
  70. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/destroy.rb +8 -0
  71. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/edit.rb +6 -0
  72. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/index.rb +6 -0
  73. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/new.rb +6 -0
  74. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/show.rb +6 -0
  75. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/update.rb +13 -0
  76. data/rails_generators/nifty_scaffold/templates/tests/shoulda/controller.rb +5 -0
  77. data/rails_generators/nifty_scaffold/templates/tests/shoulda/model.rb +7 -0
  78. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/create.rb +11 -0
  79. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/destroy.rb +6 -0
  80. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/edit.rb +4 -0
  81. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/index.rb +4 -0
  82. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/new.rb +4 -0
  83. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/show.rb +4 -0
  84. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/update.rb +11 -0
  85. data/rails_generators/nifty_scaffold/templates/tests/testunit/controller.rb +5 -0
  86. data/rails_generators/nifty_scaffold/templates/tests/testunit/model.rb +7 -0
  87. data/rails_generators/nifty_scaffold/templates/views/erb/_fields.html.erb +10 -0
  88. data/rails_generators/nifty_scaffold/templates/views/erb/_form.html.erb +10 -0
  89. data/rails_generators/nifty_scaffold/templates/views/erb/edit.html.erb +14 -0
  90. data/rails_generators/nifty_scaffold/templates/views/erb/index.html.erb +31 -0
  91. data/rails_generators/nifty_scaffold/templates/views/erb/new.html.erb +7 -0
  92. data/rails_generators/nifty_scaffold/templates/views/erb/show.html.erb +20 -0
  93. data/rails_generators/nifty_scaffold/templates/views/haml/_fields.html.haml +7 -0
  94. data/rails_generators/nifty_scaffold/templates/views/haml/_form.html.haml +8 -0
  95. data/rails_generators/nifty_scaffold/templates/views/haml/edit.html.haml +14 -0
  96. data/rails_generators/nifty_scaffold/templates/views/haml/index.html.haml +28 -0
  97. data/rails_generators/nifty_scaffold/templates/views/haml/new.html.haml +7 -0
  98. data/rails_generators/nifty_scaffold/templates/views/haml/show.html.haml +20 -0
  99. data/tasks/deployment.rake +2 -0
  100. data/test/test_helper.rb +117 -0
  101. data/test/test_nifty_authentication_generator.rb +236 -0
  102. data/test/test_nifty_config_generator.rb +37 -0
  103. data/test/test_nifty_layout_generator.rb +42 -0
  104. data/test/test_nifty_scaffold_generator.rb +534 -0
  105. data/xenda-nifty-generators.gemspec +31 -0
  106. metadata +173 -0
@@ -0,0 +1,7 @@
1
+ - semantic_form_for @<%= singular_name %> do |form|
2
+ - form.inputs do
3
+ <%- for attribute in attributes -%>
4
+ = form.input :<%= attribute.name %>, :label => '<%= attribute.name.humanize %>'
5
+ <%- end -%>
6
+ - form.buttons do
7
+ = form.commit_button 'Submit'
@@ -0,0 +1,8 @@
1
+ - semantic_form_for @<%= singular_name %> do |form|
2
+ = form.error_messages
3
+ - form.inputs do
4
+ <%- for attribute in attributes -%>
5
+ = form.input :<%= attribute.name %>
6
+ <%- end -%>
7
+ - form.buttons do
8
+ = form.commit_button "Submit"
@@ -0,0 +1,14 @@
1
+ - title "Edit <%= singular_name.titleize %>"
2
+
3
+ <%= render_form %>
4
+
5
+ <%- if actions? :show, :index -%>
6
+ %p
7
+ <%- if action? :show -%>
8
+ = link_to "Show", <%= singular_name %>_path(@<%= singular_name %>)
9
+ |
10
+ <%- end -%>
11
+ <%- if action? :index -%>
12
+ = link_to "View All", <%= plural_name %>_path
13
+ <%- end -%>
14
+ <%- end -%>
@@ -0,0 +1,28 @@
1
+ - title "<%= plural_name.titleize %>"
2
+
3
+ %table
4
+ %tr
5
+ <%- for attribute in attributes -%>
6
+ %th <%= attribute.column.human_name %>
7
+ <%- end -%>
8
+ - for <%= singular_name %> in @<%= plural_name %>
9
+ %tr
10
+ <%- for attribute in attributes -%>
11
+ %td= h <%= singular_name %>.<%= attribute.name %>
12
+ <%- end -%>
13
+ <%- if action? :show -%>
14
+ %td= link_to 'Show', <%= singular_name %>
15
+ <%- end -%>
16
+ <%- if action? :edit -%>
17
+ %td= link_to 'Edit', edit_<%= singular_name %>_path(<%= singular_name %>)
18
+ <%- end -%>
19
+ <%- if action? :destroy -%>
20
+ %td= link_to 'Destroy', <%= singular_name %>, :confirm => 'Are you sure?', :method => :delete
21
+ <%- end -%>
22
+
23
+ <%- if options[:will_paginate] -%>
24
+ %p= will_paginate(@<%= plural_name %>)
25
+ <%- end -%>
26
+ <%- if actions? :new -%>
27
+ %p= link_to "New <%= singular_name.titleize %>", new_<%= singular_name %>_path
28
+ <%- end -%>
@@ -0,0 +1,7 @@
1
+ - title "New <%= singular_name.titleize %>"
2
+
3
+ <%= render_form %>
4
+
5
+ <%- if action? :index -%>
6
+ %p= link_to "Back to List", <%= plural_name %>_path
7
+ <%- end -%>
@@ -0,0 +1,20 @@
1
+ - title "<%= singular_name.titleize %>"
2
+
3
+ <%- for attribute in attributes -%>
4
+ %p
5
+ %strong <%= attribute.column.human_name.titleize %>:
6
+ =h @<%= singular_name %>.<%= attribute.name %>
7
+ <%- end -%>
8
+
9
+ %p
10
+ <%- if action? :edit -%>
11
+ = link_to "Edit", edit_<%= singular_name %>_path(@<%= singular_name %>)
12
+ |
13
+ <%- end -%>
14
+ <%- if action? :destroy -%>
15
+ = link_to "Destroy", @<%= singular_name %>, :confirm => 'Are you sure?', :method => :delete
16
+ |
17
+ <%- end -%>
18
+ <%- if action? :index -%>
19
+ = link_to "View All", <%= plural_name %>_path
20
+ <%- end -%>
@@ -0,0 +1,2 @@
1
+ desc "Build the manifest and gemspec files."
2
+ task :build => [:build_manifest, :build_gemspec]
@@ -0,0 +1,117 @@
1
+ require 'test/unit'
2
+
3
+ # Must set before requiring generator libs.
4
+ TMP_ROOT = File.dirname(__FILE__) + "/tmp" unless defined?(TMP_ROOT)
5
+ PROJECT_NAME = "myproject" unless defined?(PROJECT_NAME)
6
+ app_root = File.join(TMP_ROOT, PROJECT_NAME)
7
+ if defined?(APP_ROOT)
8
+ APP_ROOT.replace(app_root)
9
+ else
10
+ APP_ROOT = app_root
11
+ end
12
+ if defined?(RAILS_ROOT)
13
+ RAILS_ROOT.replace(app_root)
14
+ else
15
+ RAILS_ROOT = app_root
16
+ end
17
+
18
+ require 'rubygems'
19
+ gem 'rails', '2.0.2' # getting a Rails.configuration error with 2.1
20
+ require 'rubigen' # gem install rubigen
21
+ require 'rubigen/helpers/generator_test_helper'
22
+ require 'rails_generator'
23
+ require 'shoulda' # gem install Shoulda
24
+ require 'mocha'
25
+
26
+ module NiftyGenerators
27
+ module TestHelper
28
+ include RubiGen::GeneratorTestHelper
29
+
30
+ def setup
31
+ bare_setup
32
+ end
33
+
34
+ def teardown
35
+ bare_teardown
36
+ end
37
+
38
+ protected
39
+
40
+ def run_rails_generator(generator, *args)
41
+ options = args.pop if args.last.kind_of? Hash
42
+ options ||= {}
43
+ run_generator(generator.to_s, args, generator_sources, options.reverse_merge(:quiet => true))
44
+ end
45
+
46
+ def generator_sources
47
+ [RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__), "..", "rails_generators"))]
48
+ end
49
+ end
50
+
51
+ module ShouldaAdditions
52
+ def rails_generator(*args)
53
+ setup do
54
+ run_rails_generator(*args)
55
+ end
56
+ end
57
+
58
+ def should_generate_file(file, &block)
59
+ should "generate file #{file}" do
60
+ yield("foo") if block_given?
61
+ assert_generated_file(file)
62
+ end
63
+ end
64
+
65
+ def should_not_generate_file(file)
66
+ should "not generate file #{file}" do
67
+ assert !File.exists?("#{APP_ROOT}/#{file}"),"The file '#{file}' should not exist"
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ class Thoughtbot::Shoulda::Context
74
+ include NiftyGenerators::ShouldaAdditions
75
+ end
76
+
77
+ # Mock out what we need from AR::Base.
78
+ module ActiveRecord
79
+ class Base
80
+ class << self
81
+ attr_accessor :pluralize_table_names, :columns
82
+
83
+ def add_column(name, type = :string)
84
+ returning ActiveRecord::ConnectionAdapters::Column.new(name, nil) do |column|
85
+ column.type = type
86
+ @columns ||= []
87
+ @columns << column
88
+ end
89
+ end
90
+ end
91
+ self.pluralize_table_names = true
92
+ end
93
+
94
+ module ConnectionAdapters
95
+ class Column
96
+ attr_accessor :name, :default, :type, :limit, :null, :sql_type, :precision, :scale
97
+
98
+ def initialize(name, default, sql_type = nil)
99
+ @name = name
100
+ @default = default
101
+ @type = @sql_type = sql_type
102
+ end
103
+
104
+ def human_name
105
+ @name.humanize
106
+ end
107
+ end
108
+ end
109
+ end
110
+
111
+ # And what we need from ActionView
112
+ module ActionView
113
+ module Helpers
114
+ module ActiveRecordHelper; end
115
+ class InstanceTag; end
116
+ end
117
+ end
@@ -0,0 +1,236 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper.rb")
2
+
3
+ class TestNiftyAuthenticationGenerator < Test::Unit::TestCase
4
+ include NiftyGenerators::TestHelper
5
+
6
+ # Some generator-related assertions:
7
+ # assert_generated_file(name, &block) # block passed the file contents
8
+ # assert_directory_exists(name)
9
+ # assert_generated_class(name, &block)
10
+ # assert_generated_module(name, &block)
11
+ # assert_generated_test_for(name, &block)
12
+ # The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
13
+ # assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
14
+ #
15
+ # Other helper methods are:
16
+ # app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
17
+ # bare_setup - place this in setup method to create the APP_ROOT folder for each test
18
+ # bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
19
+ context "" do # empty context so we can use setup block
20
+ setup do
21
+ Rails.stubs(:version).returns("2.0.2")
22
+ Dir.mkdir("#{RAILS_ROOT}/config") unless File.exists?("#{RAILS_ROOT}/config")
23
+ File.open("#{RAILS_ROOT}/config/routes.rb", 'w') do |f|
24
+ f.puts "ActionController::Routing::Routes.draw do |map|\n\nend"
25
+ end
26
+ Dir.mkdir("#{RAILS_ROOT}/app") unless File.exists?("#{RAILS_ROOT}/app")
27
+ Dir.mkdir("#{RAILS_ROOT}/app/controllers") unless File.exists?("#{RAILS_ROOT}/app/controllers")
28
+ File.open("#{RAILS_ROOT}/app/controllers/application.rb", 'w') do |f|
29
+ f.puts "class Application < ActionController::Base\n\nend"
30
+ end
31
+ end
32
+
33
+ teardown do
34
+ FileUtils.rm_rf "#{RAILS_ROOT}/config"
35
+ FileUtils.rm_rf "#{RAILS_ROOT}/app"
36
+ end
37
+
38
+ context "generator without arguments" do
39
+ rails_generator :nifty_authentication
40
+ should_generate_file 'app/models/user.rb'
41
+ should_generate_file 'app/controllers/users_controller.rb'
42
+ should_generate_file 'app/helpers/users_helper.rb'
43
+ should_generate_file 'app/views/users/new.html.erb'
44
+ should_generate_file 'app/controllers/sessions_controller.rb'
45
+ should_generate_file 'app/helpers/sessions_helper.rb'
46
+ should_generate_file 'app/views/sessions/new.html.erb'
47
+ should_generate_file 'lib/authentication.rb'
48
+ should_generate_file 'test/fixtures/users.yml'
49
+ should_generate_file 'test/unit/user_test.rb'
50
+ should_generate_file 'test/functional/users_controller_test.rb'
51
+ should_generate_file 'test/functional/sessions_controller_test.rb'
52
+
53
+ should "generate migration file" do
54
+ assert !Dir.glob("#{RAILS_ROOT}/db/migrate/*.rb").empty?
55
+ end
56
+
57
+ should "generate routes" do
58
+ assert_generated_file "config/routes.rb" do |body|
59
+ assert_match "map.resources :sessions", body
60
+ assert_match "map.resources :users", body
61
+ assert_match "map.login 'login', :controller => 'sessions', :action => 'new'", body
62
+ assert_match "map.logout 'logout', :controller => 'sessions', :action => 'destroy'", body
63
+ assert_match "map.signup 'signup', :controller => 'users', :action => 'new'", body
64
+ end
65
+ end
66
+
67
+ should "include Authentication" do
68
+ application_controller_name = Rails.version >= '2.3.0' ? 'application_controller' : 'application'
69
+ assert_generated_file "app/controllers/#{application_controller_name}.rb" do |body|
70
+ assert_match "include Authentication", body
71
+ end
72
+ end
73
+ end
74
+
75
+ context "generator with user and session names" do
76
+ rails_generator :nifty_authentication, "Account", "CurrentSession"
77
+ should_generate_file 'app/models/account.rb'
78
+ should_generate_file 'app/controllers/accounts_controller.rb'
79
+ should_generate_file 'app/helpers/accounts_helper.rb'
80
+ should_generate_file 'app/views/accounts/new.html.erb'
81
+ should_generate_file 'app/controllers/current_sessions_controller.rb'
82
+ should_generate_file 'app/helpers/current_sessions_helper.rb'
83
+ should_generate_file 'app/views/current_sessions/new.html.erb'
84
+ should_generate_file 'test/fixtures/accounts.yml'
85
+ should_generate_file 'test/unit/account_test.rb'
86
+ should_generate_file 'test/functional/accounts_controller_test.rb'
87
+ should_generate_file 'test/functional/current_sessions_controller_test.rb'
88
+
89
+ should "generate routes" do
90
+ assert_generated_file "config/routes.rb" do |body|
91
+ assert_match "map.resources :current_sessions", body
92
+ assert_match "map.resources :accounts", body
93
+ assert_match "map.login 'login', :controller => 'current_sessions', :action => 'new'", body
94
+ assert_match "map.logout 'logout', :controller => 'current_sessions', :action => 'destroy'", body
95
+ assert_match "map.signup 'signup', :controller => 'accounts', :action => 'new'", body
96
+ end
97
+ end
98
+ end
99
+
100
+ context "generator with shoulda option" do
101
+ rails_generator :nifty_authentication, :test_framework => :shoulda
102
+
103
+ should "have controller and model tests using shoulda syntax" do
104
+ assert_generated_file "test/functional/users_controller_test.rb" do |body|
105
+ assert_match " should ", body
106
+ end
107
+ assert_generated_file "test/functional/sessions_controller_test.rb" do |body|
108
+ assert_match " should ", body
109
+ end
110
+
111
+ assert_generated_file "test/unit/user_test.rb" do |body|
112
+ assert_match " should ", body
113
+ end
114
+ end
115
+ end
116
+
117
+ context "generator with rspec option" do
118
+ rails_generator :nifty_authentication, :test_framework => :rspec
119
+ should_generate_file 'spec/fixtures/users.yml'
120
+ end
121
+
122
+ context "with spec dir" do
123
+ setup do
124
+ Dir.mkdir("#{RAILS_ROOT}/spec") unless File.exists?("#{RAILS_ROOT}/spec")
125
+ end
126
+
127
+ teardown do
128
+ FileUtils.rm_rf "#{RAILS_ROOT}/spec"
129
+ end
130
+
131
+ context "generator without arguments" do
132
+ rails_generator :nifty_authentication
133
+ should_generate_file 'spec/fixtures/users.yml'
134
+ should_generate_file 'spec/models/user_spec.rb'
135
+ should_generate_file 'spec/controllers/users_controller_spec.rb'
136
+ should_generate_file 'spec/controllers/sessions_controller_spec.rb'
137
+ end
138
+
139
+ context "generator with user and session names" do
140
+ rails_generator :nifty_authentication, "Account", "CurrentSessions"
141
+ should_generate_file 'spec/fixtures/accounts.yml'
142
+ should_generate_file 'spec/models/account_spec.rb'
143
+ should_generate_file 'spec/controllers/accounts_controller_spec.rb'
144
+ should_generate_file 'spec/controllers/current_sessions_controller_spec.rb'
145
+ end
146
+
147
+ context "generator with testunit option" do
148
+ rails_generator :nifty_authentication, :test_framework => :testunit
149
+ should_generate_file 'test/fixtures/users.yml'
150
+ end
151
+ end
152
+
153
+ context "generator with haml option" do
154
+ rails_generator :nifty_authentication, :haml => true
155
+
156
+ should_generate_file "app/views/users/new.html.haml"
157
+ should_generate_file "app/views/sessions/new.html.haml"
158
+ end
159
+
160
+ context "generator with authlogic option and custom names" do
161
+ rails_generator :nifty_authentication, "Account", :authlogic => true
162
+ should_generate_file 'app/models/account.rb'
163
+ should_generate_file 'app/controllers/accounts_controller.rb'
164
+ should_generate_file 'app/helpers/accounts_helper.rb'
165
+ should_generate_file 'app/views/accounts/new.html.erb'
166
+ should_generate_file 'app/controllers/account_sessions_controller.rb'
167
+ should_generate_file 'app/helpers/account_sessions_helper.rb'
168
+ should_generate_file 'app/views/account_sessions/new.html.erb'
169
+ should_generate_file 'test/fixtures/accounts.yml'
170
+ should_generate_file 'test/unit/account_test.rb'
171
+ should_generate_file 'test/functional/accounts_controller_test.rb'
172
+ should_generate_file 'test/functional/account_sessions_controller_test.rb'
173
+ should_generate_file 'lib/authentication.rb'
174
+
175
+ should "only include acts_as_authentic in account model" do
176
+ assert_generated_file "app/models/account.rb" do |body|
177
+ assert_match "acts_as_authentic", body
178
+ assert_no_match(/validates/, body)
179
+ assert_no_match(/def/, body)
180
+ end
181
+ end
182
+
183
+ should "should generate authentication module with current_account_session method" do
184
+ assert_generated_file "lib/authentication.rb" do |body|
185
+ assert_match "def current_account_session", body
186
+ end
187
+ end
188
+
189
+ should "should generate AccountSession model" do
190
+ assert_generated_file "app/models/account_session.rb" do |body|
191
+ assert_match "class AccountSession < Authlogic::Session::Base", body
192
+ end
193
+ end
194
+
195
+ should "should generate restful style actions in sessions controller" do
196
+ assert_generated_file "app/controllers/account_sessions_controller.rb" do |body|
197
+ assert_match "AccountSession.new", body
198
+ end
199
+ end
200
+
201
+ should "should generate form for account session" do
202
+ assert_generated_file "app/views/account_sessions/new.html.erb" do |body|
203
+ assert_match "form_for @account_session", body
204
+ end
205
+ end
206
+
207
+ should "should not include tests in account since authlogic is already tested" do
208
+ assert_generated_file "test/unit/account_test.rb" do |body|
209
+ assert_no_match(/def test/, body)
210
+ end
211
+ end
212
+
213
+ should "should handle session controller tests differently" do
214
+ assert_generated_file "test/functional/account_sessions_controller_test.rb" do |body|
215
+ assert_match "AccountSession.find", body
216
+ end
217
+ end
218
+
219
+ should "generate migration with authlogic columns" do
220
+ file = Dir.glob("#{RAILS_ROOT}/db/migrate/*.rb").first
221
+ assert file, "migration file doesn't exist"
222
+ assert_match(/[0-9]+_create_accounts.rb$/, file)
223
+ assert_generated_file "db/migrate/#{File.basename(file)}" do |body|
224
+ assert_match "class CreateAccounts", body
225
+ assert_match "t.string :username", body
226
+ assert_match "t.string :email", body
227
+ assert_match "t.string :crypted_password", body
228
+ assert_match "t.string :password_salt", body
229
+ assert_match "t.string :persistence_token", body
230
+ assert_match "t.timestamps", body
231
+ assert_no_match(/password_hash/, body)
232
+ end
233
+ end
234
+ end
235
+ end
236
+ end