mirror of
https://github.com/TracksApp/tracks.git
synced 2026-01-06 17:28:50 +01:00
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.
83 lines
2.9 KiB
Ruby
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
|