imajes / rails-template

based on the awesome rg by mrn

This URL has Read+Write access

rails-template / spec_helper.rb
100644 79 lines (65 sloc) 2.096 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# spec helper settings.
# For more information take a look at Spec::Example::Configuration and Spec::Runner
 
ENV["RAILS_ENV"] = "test"
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require File.expand_path(File.dirname(__FILE__) + "/blueprints")
require 'spec'
require 'spec/rails'
 
Spec::Runner.configure do |config|
  # Active Record: remove if not using AR
  config.use_transactional_fixtures = true
  config.use_instantiated_fixtures = false
 
  # reset our shams
  config.before(:each) { Sham.reset }
 
  # == Mock Framework
  config.mock_with :mocha
end
 
class ActiveRecord::Base
  def self.mock_saved(params = {})
    valid_columns = self.columns_hash.collect { |k,v| k }
    params = params.dup
    id = params.delete(:id)
    stubs = {}
    params.each do |attr_name, value|
      stubs[attr_name] = params.delete(attr_name) unless valid_columns.include?(attr_name)
    end
    instance = self.new(params)
    instance.stubs(:save).returns(true) unless stubs.has_key?(:save)
    instance.stubs(:new_record?).returns(stubs.delete(:new_record?) { |key| true })
    stubs.each do |meth, value|
      instance.stubs(meth).returns(value)
    end
    instance.stubs(:id).returns(id)
    instance.stubs(:to_param).returns(id.to_s)
    return instance
  end
end
 
class Class
  def publicize_methods
    saved_private_instance_methods = self.private_instance_methods
    saved_protected_instance_methods = self.protected_instance_methods
    self.class_eval do
      public *saved_private_instance_methods
      public *saved_protected_instance_methods
    end
    
    yield
    
    self.class_eval do
      private *saved_private_instance_methods
      protected *saved_protected_instance_methods
    end
  end
end
 
suppress LoadError do
  require 'ruby-debug'
end
 
 
# Taken from http://wincent.com/knowledge-base/Fixtures_considered_harmful%3F
class Hash
  # for excluding keys
  def except(*exclusions)
    self.reject { |key, value| exclusions.include? key.to_sym }
  end
 
  # for overriding keys
  def with(overrides = {})
    self.merge overrides
  end
end