From 899026d0d19154e4d075ca2004b7d34867ff6b12 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Tue, 21 Apr 2009 11:22:28 -0700 Subject: [PATCH] Added RSpec support --- spec/rcov.opts | 0 spec/sanity_spec.rb | 7 ++++ spec/spec.opts | 7 ++++ spec/spec_helper.rb | 84 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+) create mode 100644 spec/rcov.opts create mode 100644 spec/sanity_spec.rb create mode 100644 spec/spec.opts create mode 100644 spec/spec_helper.rb diff --git a/spec/rcov.opts b/spec/rcov.opts new file mode 100644 index 0000000..e69de29 diff --git a/spec/sanity_spec.rb b/spec/sanity_spec.rb new file mode 100644 index 0000000..6de6672 --- /dev/null +++ b/spec/sanity_spec.rb @@ -0,0 +1,7 @@ +require File.dirname(__FILE__) + '/spec_helper' + +describe Class do + it "should be a class of Class" do + Class.class.should eql(Class) + end +end diff --git a/spec/spec.opts b/spec/spec.opts new file mode 100644 index 0000000..2144705 --- /dev/null +++ b/spec/spec.opts @@ -0,0 +1,7 @@ +--colour +--format +progress +--loadby +mtime +--reverse +--backtrace \ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..413b1d0 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,84 @@ +# This file is copied to ~/spec when you run 'ruby script/generate rspec' +# from the project root directory. +ENV["RAILS_ENV"] = "test" + +# Allows loading of an environment config based on the environment +redmine_root = ENV["REDMINE_ROOT"] || File.dirname(__FILE__) + "/../../../.." +require File.expand_path(redmine_root + "/config/environment") +require 'spec' +require 'spec/rails' +require 'ruby-debug' + +Spec::Runner.configure do |config| + # If you're not using ActiveRecord you should remove these + # lines, delete config/database.yml and disable :active_record + # in your config/boot.rb + config.use_transactional_fixtures = true + config.use_instantiated_fixtures = false + config.fixture_path = RAILS_ROOT + '/spec/fixtures/' + + # == Fixtures + # + # You can declare fixtures for each example_group like this: + # describe "...." do + # fixtures :table_a, :table_b + # + # Alternatively, if you prefer to declare them only once, you can + # do so right here. Just uncomment the next line and replace the fixture + # names with your fixtures. + # + # config.global_fixtures = :table_a, :table_b + # + # If you declare global fixtures, be aware that they will be declared + # for all of your examples, even those that don't use them. + # + # == Mock Framework + # + # RSpec uses it's own mocking framework by default. If you prefer to + # use mocha, flexmock or RR, uncomment the appropriate line: + # + # config.mock_with :mocha + # config.mock_with :flexmock + # config.mock_with :rr +end + +# require the entire app if we're running under coverage testing, +# so we measure 0% covered files in the report +# +# http://www.pervasivecode.com/blog/2008/05/16/making-rcov-measure-your-whole-rails-app-even-if-tests-miss-entire-source-files/ +if defined?(Rcov) + all_app_files = Dir.glob('{app,lib}/**/*.rb') + all_app_files.each{|rb| require rb} +end + + +module AssociationMatcher + class Association + def initialize(field, association_type) + @field = field + @association_type = association_type + end + + def matches?(model) + @model=model + association = @model.reflect_on_association(@field) + return false if association.nil? + + return association.name == @field && association.macro == @association_type + end + + def failure_message + "expected <#{@model.name}> to have a #{@association_type} association for #{@field}" + end + + def negative_failure_message + "expected <#{@model.name}> to not have a #{@association_type} association for #{@field} but one was found" + end + end + + def have_association(field, association_type) + Association.new(field, association_type) + end +end + +include AssociationMatcher