spec_helper.rb
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:4k
源码类别:

Ajax

开发平台:

Others

  1. # This file is copied to ~/spec when you run 'ruby script/generate rspec'
  2. # from the project root directory.
  3. ENV["RAILS_ENV"] ||= 'test'
  4. require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
  5. require 'spec/autorun'
  6. require 'spec/rails'
  7. Spec::Runner.configure do |config|
  8.   config.use_transactional_fixtures = true
  9.   config.use_instantiated_fixtures  = false
  10.   config.fixture_path = RAILS_ROOT + '/test/fixtures/'
  11.   config.global_fixtures =
  12.     %w{ blogs categories categorizations contents
  13.         feedback notifications page_caches profiles redirects resources sidebars
  14.         tags text_filters triggers users }
  15.   config.before(:each) do
  16.     Localization.lang = :default
  17.   end
  18. end
  19. def define_spec_public_cache_directory
  20.   ActionController::Base.page_cache_directory = File.join(Rails.root, 'spec', 'public')
  21.   unless File.exist? ActionController::Base.page_cache_directory
  22.     FileUtils.mkdir_p ActionController::Base.page_cache_directory
  23.   end
  24. end
  25. def path_for_file_in_spec_public_cache_directory(file)
  26.   define_spec_public_cache_directory
  27.   File.join(ActionController::Base.page_cache_directory, file)
  28. end
  29. def create_file_in_spec_public_cache_directory(file)
  30.   file_path = path_for_file_in_spec_public_cache_directory(file)
  31.   File.open(file_path, 'a').close
  32.   file_path
  33. end
  34. # TODO: Rewrite to be more RSpec-like instead of Test::Unit-like.
  35. def assert_template_has(key=nil, message=nil)
  36.   msg = build_message(message, "<?> is not a template object", key)
  37.   assert_block(msg) { @response.has_template_object?(key) }
  38. end
  39. def assert_xml(xml)
  40.   assert_nothing_raised do
  41.     assert REXML::Document.new(xml)
  42.   end
  43. end
  44. def this_blog
  45.   Blog.default || Blog.create!
  46. end
  47. # test standard view and all themes
  48. def with_each_theme
  49.   yield nil, ""
  50.   Dir.new(File.join(RAILS_ROOT, "themes")).each do |theme|
  51.     next if theme =~ /..?/
  52.     view_path = "#{RAILS_ROOT}/themes/#{theme}/views" 
  53.     if File.exists?("#{RAILS_ROOT}/themes/#{theme}/helpers/theme_helper.rb")
  54.       require "#{RAILS_ROOT}/themes/#{theme}/helpers/theme_helper.rb"
  55.     end
  56.     yield theme, view_path
  57.   end
  58. end
  59. # This test now has optional support for validating the generated RSS feeds.
  60. # Since Ruby doesn't have a RSS/Atom validator, I'm using the Python source
  61. # for http://feedvalidator.org and calling it via 'system'.
  62. #
  63. # To install the validator, download the source from
  64. # http://sourceforge.net/cvs/?group_id=99943
  65. # Then copy src/feedvalidator and src/rdflib into a Python lib directory.
  66. # Finally, copy src/demo.py into your path as 'feedvalidator', make it executable,
  67. # and change the first line to something like '#!/usr/bin/python'.
  68. if($validator_installed == nil)
  69.   $validator_installed = false
  70.   begin
  71.     IO.popen("feedvalidator 2> /dev/null","r") do |pipe|
  72.       if (pipe.read =~ %r{Validating http://www.intertwingly.net/blog/index.})
  73.         puts "Using locally installed Python feed validator"
  74.         $validator_installed = true
  75.       end
  76.     end
  77.   rescue
  78.     nil
  79.   end
  80. end
  81. def assert_feedvalidator(rss, todo=nil)
  82.   unless $validator_installed
  83.     puts 'Not validating feed because no validator (feedvalidator in python) is installed'
  84.     return
  85.   end
  86.   begin
  87.     file = Tempfile.new('typo-feed-test')
  88.     filename = file.path
  89.     file.write(rss)
  90.     file.close
  91.     messages = ''
  92.     IO.popen("feedvalidator file://#{filename}") do |pipe|
  93.       messages = pipe.read
  94.     end
  95.     okay, messages = parse_validator_messages(messages)
  96.     if todo && ! ENV['RUN_TODO_TESTS']
  97.       assert !okay, messages + "nTest unexpectedly passed!nFeed text:n"+rss
  98.     else
  99.       assert okay, messages + "nFeed text:n"+rss
  100.     end
  101.   end
  102. end
  103. def parse_validator_messages(message)
  104.   messages=message.split(/n/).reject do |m|
  105.     m =~ /Feeds should not be served with the "text/plain" media type/ ||
  106.       m =~ /Self reference doesn't match document location/
  107.   end
  108.   if(messages.size > 1)
  109.     [false, messages.join("n")]
  110.   else
  111.     [true, ""]
  112.   end
  113. end