tracks/test/views/todos_helper_test.rb
Luke Melia 901a58f8a3 Upgraded to Rails 2.1. This can have wide ranging consequences, so please help track down any issues introduced by the upgrade. Requires environment.rb modifications.
Changes you will need to make:

 * In your environment.rb, you will need to update references to a few files per environment.rb.tmpl
 * In your environment.rb, you will need to specify the local time zone of the computer that is running your Tracks install.

Other notes on my changes:

 * Modified our code to take advantage of Rails 2.1's slick time zone support.
 * Upgraded will_paginate for compatibility
 * Hacked the Selenium on Rails plugin, which has not been updated in some time and does not support Rails 2.1
 * Verified that all tests pass on my machine, including Selenium tests -- I'd like confirmation from others, too.
2008-06-17 01:13:25 -04:00

83 lines
2.9 KiB
Ruby

require File.dirname(__FILE__) + '/../test_helper'
class TodosHelperTest < Test::Rails::HelperTestCase
def setup
super
end
include ActionView::Helpers::DateHelper
include ApplicationHelper
include TodosHelper
def format_date(date)
if date
date_format = "%d/%m/%Y"
date.strftime("#{date_format}")
else
''
end
end
def test_show_date_in_past
date = 3.days.ago.to_date
html = show_date(date)
formatted_date = format_date(date)
assert_equal %Q{<a title="#{formatted_date}"><span class="red">Scheduled to show 3 days ago</span></a> }, html
end
def test_show_date_today
date = Time.zone.now.to_date
html = show_date(date)
formatted_date = format_date(date)
assert_equal %Q{<a title="#{formatted_date}"><span class="amber">Show Today</span></a> }, html
end
def test_show_date_tomorrow
date = 1.day.from_now.to_date
html = show_date(date)
formatted_date = format_date(date)
assert_equal %Q{<a title="#{formatted_date}"><span class="amber">Show Tomorrow</span></a> }, html
end
def test_show_date_future
date = 10.days.from_now.to_date
html = show_date(date)
formatted_date = format_date(date)
assert_equal %Q{<a title="#{formatted_date}"><span class="green">Show in 10 days</span></a> }, html
end
def test_remote_star_icon_unstarred
@todo = flexmock(:id => 1, :to_param => 1, :description => 'Get gas', :starred? => false)
assert_remote_star_icon_helper_matches %r{<a href="/todos/1/toggle_star" class="icon star_item" title="star the action 'Get gas'"><img alt="Blank" class="unstarred_todo" src="/images/blank.png[?0-9]*" title="Star action" /></a>}
assert_behavior_registered
end
def test_remote_star_icon_starred
@todo = flexmock(:id => 1, :to_param => 1, :description => 'Get gas', :starred? => true)
assert_remote_star_icon_helper_matches %r{<a href="/todos/1/toggle_star" class="icon star_item" title="star the action 'Get gas'"><img alt="Blank" class="starred_todo" src="/images/blank.png[?0-9]*" title="Star action" /></a>}
assert_behavior_registered
end
def assert_remote_star_icon_helper_matches(regex)
@controller.send :initialise_js_behaviours #simulate before filter
output = remote_star_icon
#puts output
assert output =~ regex
@controller.send :store_js_behaviours #simulate after filter
end
def assert_behavior_registered
behaviors = @controller.session[:js_behaviours]
assert behaviors[:options][:reapply_after_ajax]
assert_equal 1, behaviors[:rules].length
rule = behaviors[:rules][0]
assert_equal ".item-container a.star_item:click", rule[0]
assert_equal "new Ajax.Request(this.href, {asynchronous:true, evalScripts:true, method:'put', parameters:{ _source_view : '' }})\n; return false;",
rule[1]
end
def protect_against_forgery?
false
end
end