From 3b5f1437b5735790f5bd87def4c0b41e5ece79d2 Mon Sep 17 00:00:00 2001 From: "Carlos A. da Silva" Date: Thu, 8 Oct 2009 09:32:48 -0300 Subject: [PATCH] Creating helpers module and link helpers. --- app/helpers/devise_helper.rb | 14 ++++ app/views/confirmations/new.html.erb | 2 +- app/views/passwords/edit.html.erb | 2 + app/views/passwords/new.html.erb | 2 +- app/views/sessions/new.html.erb | 3 +- init.rb | 7 ++ lib/devise.rb | 5 +- test/helpers/devise_helper_test.rb | 16 ++++ test/model_builder.rb | 108 --------------------------- test/test_helper.rb | 5 +- 10 files changed, 46 insertions(+), 118 deletions(-) create mode 100644 app/helpers/devise_helper.rb create mode 100644 test/helpers/devise_helper_test.rb delete mode 100644 test/model_builder.rb diff --git a/app/helpers/devise_helper.rb b/app/helpers/devise_helper.rb new file mode 100644 index 00000000..aecac18f --- /dev/null +++ b/app/helpers/devise_helper.rb @@ -0,0 +1,14 @@ +module DeviseHelper + + def link_to_sign_in + link_to 'Sign in', new_session_path + end + + def link_to_new_password + link_to 'Forgot password?', new_password_path + end + + def link_to_new_confirmation + link_to 'Didn\'t receive confirmation instructions?', new_confirmation_path + end +end diff --git a/app/views/confirmations/new.html.erb b/app/views/confirmations/new.html.erb index f164a60a..9d994254 100644 --- a/app/views/confirmations/new.html.erb +++ b/app/views/confirmations/new.html.erb @@ -8,4 +8,4 @@

<%= f.submit "Resend confirmation instructions" %>

<% end %> -<%= link_to 'Sign in', new_session_path %> +<%= link_to_sign_in %> | <%= link_to_new_password %> diff --git a/app/views/passwords/edit.html.erb b/app/views/passwords/edit.html.erb index c15256df..8a55439d 100644 --- a/app/views/passwords/edit.html.erb +++ b/app/views/passwords/edit.html.erb @@ -10,3 +10,5 @@

<%= f.password_field :password_confirmation %>

<%= f.submit "Change my password" %>

<% end %> + +<%= link_to_sign_in %> | <%= link_to_new_confirmation %> diff --git a/app/views/passwords/new.html.erb b/app/views/passwords/new.html.erb index b39cb569..a465b8c7 100644 --- a/app/views/passwords/new.html.erb +++ b/app/views/passwords/new.html.erb @@ -8,4 +8,4 @@

<%= f.submit "Send me reset password instructions" %>

<% end %> -<%= link_to 'Sign in', new_session_path %> +<%= link_to_sign_in %> | <%= link_to_new_confirmation %> diff --git a/app/views/sessions/new.html.erb b/app/views/sessions/new.html.erb index af93703a..d8f464a6 100644 --- a/app/views/sessions/new.html.erb +++ b/app/views/sessions/new.html.erb @@ -10,5 +10,4 @@

<%= f.submit 'Sign In' %>

<% end -%> -<%= link_to "Forgot password?", new_password_path %> -<%= link_to "Didn't receive confirmation instructions?", new_confirmation_path %> +<%= link_to_new_password %> | <%= link_to_new_confirmation %> diff --git a/init.rb b/init.rb index dcdc597a..529f915f 100644 --- a/init.rb +++ b/init.rb @@ -1,2 +1,9 @@ require 'devise' +# Configures a preparation callback to include devise authenticable module and +# view helpers (engines don't load helpers by default) +#config.to_prepare do +# ActionController::Base.send :include, Devise::Controllers::Authenticable +# ActionView::Base.send :include, DeviseHelper +## ApplicationController.helper(DeviseHelper) +#end diff --git a/lib/devise.rb b/lib/devise.rb index a4751f5e..1f5d2621 100644 --- a/lib/devise.rb +++ b/lib/devise.rb @@ -19,6 +19,5 @@ require 'devise/models/confirmable' require 'devise/models/recoverable' require 'devise/models/validatable' -class ActionController::Base - include Devise::Controllers::Authenticable -end +ActionController::Base.send :include, Devise::Controllers::Authenticable +ActionView::Base.send :include, DeviseHelper diff --git a/test/helpers/devise_helper_test.rb b/test/helpers/devise_helper_test.rb new file mode 100644 index 00000000..04b9a1c7 --- /dev/null +++ b/test/helpers/devise_helper_test.rb @@ -0,0 +1,16 @@ +require 'test_helper' + +class DeviseHelperTest < ActionView::TestCase + + test 'should generate a link to sign in' do + assert_equal %[Sign in], link_to_sign_in + end + + test 'should generate a link to forgot password' do + assert_equal %[Forgot password?], link_to_new_password + end + + test 'should generate a link to confirmation instructions' do + assert_equal %[Didn't receive confirmation instructions?], link_to_new_confirmation + end +end diff --git a/test/model_builder.rb b/test/model_builder.rb deleted file mode 100644 index 904a821b..00000000 --- a/test/model_builder.rb +++ /dev/null @@ -1,108 +0,0 @@ -# Shoulda model builder -# -class ActiveSupport::TestCase - def create_table(table_name, &block) - connection = ActiveRecord::Base.connection - - begin - connection.execute("DROP TABLE IF EXISTS #{table_name}") - connection.create_table(table_name, &block) - @created_tables ||= [] - @created_tables << table_name - connection - rescue Exception => e - connection.execute("DROP TABLE IF EXISTS #{table_name}") - raise e - end - end - - def define_constant(class_name, base, &block) - class_name = class_name.to_s.camelize - - klass = Class.new(base) - Object.const_set(class_name, klass) - - klass.class_eval(&block) if block_given? - - @defined_constants ||= [] - @defined_constants << class_name - - klass - end - - def define_model_class(class_name, &block) - define_constant(class_name, ActiveRecord::Base, &block) - end - - def define_model(name, columns = {}, &block) - class_name = name.to_s.pluralize.classify - table_name = class_name.tableize - - create_table(table_name) do |table| - columns.each do |name, type| - table.column name, type - end - end - - define_model_class(class_name, &block) - end - - def define_controller(class_name, &block) - class_name = class_name.to_s - class_name << 'Controller' unless class_name =~ /Controller$/ - define_constant(class_name, ActionController::Base, &block) - end - - def define_routes(&block) - @replaced_routes = ActionController::Routing::Routes - new_routes = ActionController::Routing::RouteSet.new - silence_warnings do - ActionController::Routing.const_set('Routes', new_routes) - end - new_routes.draw(&block) - end - - def build_response(&block) - klass = define_controller('Examples') - block ||= lambda { render :nothing => true } - klass.class_eval { define_method(:example, &block) } - define_routes do |map| - map.connect 'examples', :controller => 'examples', :action => 'example' - end - - @controller = klass.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - get :example - - @controller - end - - def teardown_with_models - if @defined_constants - @defined_constants.each do |class_name| - Object.send(:remove_const, class_name) - end - end - - if @created_tables - @created_tables.each do |table_name| - ActiveRecord::Base. - connection. - execute("DROP TABLE IF EXISTS #{table_name}") - end - end - - if @replaced_routes - ActionController::Routing::Routes.clear! - silence_warnings do - ActionController::Routing.const_set('Routes', @replaced_routes) - end - @replaced_routes.reload! - end - - teardown_without_models - end - alias_method :teardown_without_models, :teardown - alias_method :teardown, :teardown_with_models -end diff --git a/test/test_helper.rb b/test/test_helper.rb index 3b650e93..78b78ce2 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -8,10 +8,9 @@ require 'webrat' require 'assertions_helper' require 'models_helper' require 'integration_tests_helper' -require 'model_builder' -ActiveSupport::Dependencies.load_paths << File.expand_path(File.dirname(__FILE__) + '/../lib') -require_dependency 'devise' +#ActiveSupport::Dependencies.load_paths << File.expand_path(File.dirname(__FILE__) + '/..') +#require_dependency 'devise' ActionMailer::Base.delivery_method = :test ActionMailer::Base.perform_deliveries = true