blob: 4c9ca562170340598262888f09a98fd9811f4d99 [file] [log] [blame]
ENV["RAILS_ENV"] = "test"
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'test_help'
require 'feed_validator/assertions'
require 'ftools'
#--######################################################################
# Copyright (c) 2006 Logica
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#
# Onno van der Straaten:: initial implementation
#++######################################################################
# {Copyright (c) 2006 Logica}[link:files/COPYRIGHT.html]
module Test::Unit::Assertions
def assert_block(msg="")
_wrap_assertion do
if (! yield)
logger.debug("Failure: #{msg}")
raise Test::Unit::AssertionFailedError.new(msg.to_s)
end
end
end
end
class ActionController::Integration::Session
def logger
RAILS_DEFAULT_LOGGER
end
end
class Test::Unit::TestCase
# Turn off transactional fixtures if you're working with MyISAM tables in MySQL
self.use_transactional_fixtures = true
# Instantiated fixtures are slow, but give you @david where you otherwise would need people(:david)
self.use_instantiated_fixtures = false
# Add more helper methods to be used by all tests here...
def logger
RAILS_DEFAULT_LOGGER
end
def login(who)
logger.debug("Login: #{who.inspect}")
open_session do |sess|
logger.debug("Opening session")
sess.post "login/login", :user => {:email => who.email, :password => who.password }
assert_not_nil sess.assigns(:logged_in_user)
end
end
# Method #create_some_data creates some test records for a page (Comment, Checkout, Upload, New Page)
def create_some_data(p, u = @andy)
for i in 0..15
c= Comment.new(:text => "Text of comment #{i} by user tony", :user => u, :version => p.current_version, :page => p, :site => p.site)
assert c.save
co = Checkout.new(:user => u, :page => p, :site => p.site, :note => "Checkout #{i} by Andy")
assert co.save
co.checkin(u)
upl = Upload.new(:filename => 'filename.html', :upload_type => 'Image',
:content_type => 'Content type', :description => 'Description of upload',
:user_id => u.id, :rel_path => 'x/y/z.html')
assert upl.save
new_page2, new_co2 = WikiPage.new_using_template(:presentation_name => 'New Page Using Another Page as a Template', :source_version => p.current_version, :user => u, :site => p.site)
assert_no_errors(new_page2)
assert_no_errors(new_co2)
new_co2.checkin(u)
end
end
def assert_field(name)
assert_tag :tag => "input", :attributes => {:id => name}
end
def assert_no_field(name)
assert_no_tag :tag => "input", :attributes => {:id => name}
end
def assert_wiki_menu(wiki, page, html, action)
result_expected = []
result_expected << ["", '/' + wiki.rel_path + '/' + page.rel_path, "View"]
result_expected << ["", "/#{wiki.site_folder}/#{page.id}/discussion", "Discussion"]
result_expected << ["", "/#{wiki.site_folder}/#{page.id}/edit", "Edit"]
result_expected << ["", "/#{wiki.site_folder}/#{page.id}/new", "New"]
result_expected << ["", "/#{wiki.site_folder}/#{page.id}/info", "Info"]
result_expected << ["", "/", "Home"]
result_expected.each do |r|
r[0] = " class=\"current\"" if r[2] == action
end
result = html.scan(/<a href="(.*?)".*?<span>(.*?)<\/span>/)
assert result_expected, result
if action == 'edit'
# TODO implement functional test for confirm message
end
end
def assert_errors(object = nil)
if object
object.errors.full_messages.each do |message|
assert_tag :content => message
end
else
assert_tag error_message_field
end
end
def assert_no_errors(object = nil)
if object
object.errors.full_messages.each do |message|
assert_no_tag :content => message
end
else
assert_no_tag error_message_field
end
end
def assert_pattern(pat, html, result)
html =~ pat
assert_equal result, $&
end
def error_message_field
{:tag => 'div', :attributes => { :class => 'errorExplanation', :id => 'errorExplanation' }}
end
def assert_save(object)
if !object.save
assert_equal '', object.errors.full_messages.join(", ")
end
end
def assert_enhanced_file(path)
html = IO.readlines(path).join
assert [true, true, true], [html.include?("<!-- epfwiki head start -->"), html.include?("onload"), html.include?("<!-- epfwiki head end -->")]
end
def assert_version_file(path)
html = IO.readlines(path).join
logger.debug('html: ' + html)
assert_equal [path, false,true, true], [path, html.include?('<!-- epfwiki head start -->'), html.include?('<body>'), html.include?("<div id=\"treebrowser_tag_placeholder\">")]
end
def assert_tologin
#assert_equal ::MSG_LOGIN, flash['notice']
assert_equal @request.request_uri, session["return_to"]
assert_redirected_to :controller => 'login'
end
def assert_unot_admin_message
assert_equal LoginController::FLASH_UNOT_ADMIN, flash['error']
assert_redirected_to :controller => "other", :action => "error"
end
def assert_unot_cadmin_message
assert_equal LoginController::FLASH_UNOT_CADMIN, flash['error']
assert_redirected_to :controller => "other", :action => "error"
end
def assert_illegal_get
assert_redirected_to :controller => 'other', :action => 'error'
assert ::FLASH_USE_POST_NOT_GET, flash['error']
end
def upload_file(path, content_type="application/octet-stream")
file = Tempfile.new(File.basename(path))
FileUtils.copy_file(path, file.path)
(class << file; self; end;).class_eval do
alias local_path path
define_method(:original_filename) { File.basename(path)}
define_method(:content_type) { content_type }
end
return file
end
def copyright_files(path)
paths = Array.new
(Dir.entries(path) - [".", ".."]).each do |entry|
new_path = File.expand_path(entry, path)
if FileTest.directory?(new_path)
paths = paths + copyright_files(new_path)
else
if entry =~ /\.rb\z/i
paths << new_path
end
end
end
return paths
end
end