improve tests for preferences and fix a pending cucumber step

This commit is contained in:
Reinier Balt 2011-08-19 12:51:06 +02:00
parent 07b05d01f7
commit 84ad01a6f6
4 changed files with 74 additions and 35 deletions

View file

@ -291,6 +291,7 @@ module TodosHelper
def update_needs_to_hide_context def update_needs_to_hide_context
return (@remaining_in_context == 0 && (@todo_hidden_state_changed && @todo.hidden?)) || return (@remaining_in_context == 0 && (@todo_hidden_state_changed && @todo.hidden?)) ||
(@remaining_in_context == 0 && @todo_was_deferred_from_active_state) || (@remaining_in_context == 0 && @todo_was_deferred_from_active_state) ||
(@remaining_in_context == 0 && @tag_was_removed) ||
(@remaining_in_context == 0 && @todo.completed? && !(@original_item_was_deferred || @original_item_was_hidden)) if source_view_is(:tag) (@remaining_in_context == 0 && @todo.completed? && !(@original_item_was_deferred || @original_item_was_hidden)) if source_view_is(:tag)
return false if source_view_is_one_of(:project, :calendar) return false if source_view_is_one_of(:project, :calendar)

View file

@ -28,7 +28,7 @@ Feature: Tagging todos
@selenium @selenium
Scenario: I can add a new todo from tag view with a different tag and it will not be added to the page Scenario: I can add a new todo from tag view with a different tag and it will not be added to the page
When I go to the tag page for "tracks" When I go to the tag page for "tracks"
And I submit a new action with description "prepare release" with tags "release, next" in the context "@pc" And I submit a new action with description "prepare release" and the tags "release, next" in the context "@pc"
Then I should not see "prepare release" Then I should not see "prepare release"
@selenium @selenium

View file

@ -1,6 +1,5 @@
require File.expand_path(File.dirname(__FILE__) + '/../test_helper') require File.dirname(__FILE__) + '/../test_helper'
require 'preferences_controller' require 'preferences_controller'
require 'preference'
# Re-raise errors caught by the controller. # Re-raise errors caught by the controller.
class PreferencesController; def rescue_action(e) raise e end; end class PreferencesController; def rescue_action(e) raise e end; end
@ -11,34 +10,44 @@ class PreferencesControllerTest < ActionController::TestCase
def setup def setup
assert_equal "test", ENV['RAILS_ENV'] assert_equal "test", ENV['RAILS_ENV']
assert_equal "change-me", Tracks::Config.salt assert_equal "change-me", Tracks::Config.salt
@controller = PreferencesController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
end end
def test_preferences test "render_date_format requires login" do
get :render_date_format
assert_redirected_to :controller => 'login', :action => 'login'
end
test "calling render_date_format returns date" do
login_as :admin_user
get :render_date_format
assert_response :success
assert_equal I18n.l(Time.zone.now, :format => "%Y-%m-%d"), @response.body
get(:render_date_format, {:date_format => "%A %Y"})
assert_response :success
assert_equal I18n.l(Time.zone.now, :format => "%A %Y"), @response.body
end
test "index page requires login" do
get :index # should fail because no login get :index # should fail because no login
assert_redirected_to :controller => 'login', :action => 'login' assert_redirected_to :controller => 'login', :action => 'login'
end
test "index sets prefs and user" do
login_as :admin_user login_as :admin_user
get :index get :index
assert_response :success assert_response :success
assert_equal assigns['page_title'], "TRACKS::Preferences" assert_equal assigns['page_title'], "TRACKS::Preferences"
assert_not_nil assigns['prefs'] assert_not_nil assigns['prefs']
assert_not_nil assigns['user']
end end
def test_edit_preferences test "should update preferences" do
get :edit # should fail because no login
assert_redirected_to :controller => 'login', :action => 'login'
login_as :admin_user login_as :admin_user
get :edit post :update, {
assert_response :success :user => { :first_name => 'Jane', :last_name => 'Doe'},
assert_equal assigns['page_title'], "TRACKS::Edit Preferences" :prefs => { :date_format => "%m-%d-%Y", :week_starts => "0", :show_number_completed => "10", :show_completed_projects_in_sidebar => "false", :show_hidden_contexts_in_sidebar => "false", :staleness_starts => "14", :due_style => "1", :admin_email => "my.email@domain.com" }}
assert_template 'preferences/edit'
end
def test_update_preferences
login_as :admin_user
post :update, {:user => { :first_name => 'Jane', :last_name => 'Doe'}, :prefs => { :date_format => "%m-%d-%Y", :week_starts => "0", :show_number_completed => "10", :show_completed_projects_in_sidebar => "false", :show_hidden_contexts_in_sidebar => "false", :staleness_starts => "14", :due_style => "1", :admin_email => "my.email@domain.com" }}
updated_admin_user = users(:admin_user).reload updated_admin_user = users(:admin_user).reload
assert_not_nil updated_admin_user.preference assert_not_nil updated_admin_user.preference
assert_equal 'Jane', updated_admin_user.first_name assert_equal 'Jane', updated_admin_user.first_name
@ -46,4 +55,30 @@ class PreferencesControllerTest < ActionController::TestCase
assert_redirected_to :action => 'index' assert_redirected_to :action => 'index'
end end
test "should not update password if left empty" do
login_as :admin_user
old_password_hash = users(:admin_user).password
post :update, {
:user => { :first_name => 'Jane', :last_name => 'Doe', :password => "", :password_confirmation => ""},
:prefs => { :date_format => "%m-%d-%Y", :week_starts => "0", :show_number_completed => "10", :show_completed_projects_in_sidebar => "false", :show_hidden_contexts_in_sidebar => "false", :staleness_starts => "14", :due_style => "1", :admin_email => "my.email@domain.com" }}
updated_admin_user = users(:admin_user).reload
assert_equal old_password_hash, updated_admin_user.password
end
test "should be able to change authentication type" do
assert Tracks::Config.auth_schemes.include?("open_id"), "open_id should be a valid authentication scheme"
login_as :admin_user
post :update, {
:user => { :first_name => 'Jane', :last_name => 'Doe', :auth_type => "open_id", :open_id_url => "http://test"},
:prefs => { :date_format => "%m-%d-%Y", :week_starts => "0", :show_number_completed => "10", :show_completed_projects_in_sidebar => "false", :show_hidden_contexts_in_sidebar => "false", :staleness_starts => "14", :due_style => "1", :admin_email => "my.email@domain.com" }}
updated_admin_user = users(:admin_user).reload
assert_equal "open_id", updated_admin_user.auth_type
end
end end

View file

@ -11,6 +11,9 @@ module Tracks
def self.salt def self.salt
"change-me" "change-me"
end end
def self.auth_schemes
return ["database","open_id"]
end
end end
end end