mirror of
https://github.com/TracksApp/tracks.git
synced 2026-03-07 21:22:37 +01:00
Changes include: * Add assert_xml_select method for testing RSS and ATOM results (Thanks, Jamis! http://weblog.jamisbuck.org/2007/1/4/assert_xml_select) * Add resource_feeder plugin for generating RSS and ATOM feeds * Update the URL on the Feeds page to use /projects.rss or /projects.txt instead of FeedController link * Add created_at and updated_at timestamps to project table to support ATOM feeds * Added new filter to login_system "login_or_feed_token_required" to allow RSS, ATOM or text requests with token-based authentication Notes: * This will break previous project listing feed subscriptions. * RSS, ATOM & text feeds are available via session or HTTP_BASIC authentication, or by passing the user's token on the url; HTML and XML results are only available via session or HTTP_BASIC authentication git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@415 a4c988fc-2ded-0310-b66e-134b36920a42
64 lines
1.5 KiB
Ruby
64 lines
1.5 KiB
Ruby
RAILS_ENV = 'test'
|
|
require File.expand_path(File.join(File.dirname(__FILE__), '../../../../config/environment.rb'))
|
|
require 'action_controller/test_process'
|
|
require 'breakpoint'
|
|
require 'ostruct'
|
|
|
|
class Post
|
|
attr_reader :id, :created_at
|
|
def save; @id = 1; @created_at = Time.now.utc end
|
|
def new_record?; @id.nil? end
|
|
|
|
[:title, :name].each do |attr_name|
|
|
define_method attr_name do
|
|
"feed title (#{attr_name})"
|
|
end
|
|
end
|
|
|
|
[:description, :body].each do |attr_name|
|
|
define_method attr_name do
|
|
"<p>feed description (#{attr_name})</p>"
|
|
end
|
|
end
|
|
|
|
def full_html_body
|
|
"<strong>Here is some <i>full</i> content, with out any excerpts</strong>"
|
|
end
|
|
|
|
def create_date
|
|
@created_at - 5.minutes
|
|
end
|
|
end
|
|
|
|
class Test::Unit::TestCase
|
|
include ResourceFeeder::Rss, ResourceFeeder::Atom
|
|
|
|
def render_feed(xml)
|
|
@response = OpenStruct.new
|
|
@response.headers = {'Content-Type' => 'text/xml'}
|
|
@response.body = xml
|
|
end
|
|
|
|
def rss_feed_for_with_ostruct(resources, options = {})
|
|
render_feed rss_feed_for_without_ostruct(resources, options)
|
|
end
|
|
|
|
def atom_feed_for_with_ostruct(resources, options = {})
|
|
render_feed atom_feed_for_without_ostruct(resources, options)
|
|
end
|
|
|
|
alias_method_chain :rss_feed_for, :ostruct
|
|
alias_method_chain :atom_feed_for, :ostruct
|
|
|
|
def html_document
|
|
@html_document ||= HTML::Document.new(@response.body, false, true)
|
|
end
|
|
|
|
def posts_url
|
|
"http://example.com/posts"
|
|
end
|
|
|
|
def post_url(post)
|
|
"http://example.com/posts/#{post.id}"
|
|
end
|
|
end
|