Module: TestFriendly

Defined in:
lib/global.rb,
lib/test_friendly.rb

Defined Under Namespace

Classes: Global, ModelCallback

Constant Summary collapse

VALIDATION =
1
CALLBACK =
2

Instance Method Summary collapse

Instance Method Details

#__define_runner(symbol) ⇒ Object



11
12
13
14
# File 'lib/test_friendly.rb', line 11

def __define_runner(symbol)
  @runner_symbols << symbol unless @runner_symbols.include?(symbol)
  super(symbol)
end

#acts_as_test_friendlyObject



16
17
18
19
20
21
# File 'lib/test_friendly.rb', line 16

def acts_as_test_friendly
  @test_friendly = true
  @model_callbacks = []
  @runner_symbols = []
  Global.add_model(self)
end

#drop_callbacks(tag = :defaults, type = CALLBACK) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/test_friendly.rb', line 67

def drop_callbacks(tag = :defaults, type = CALLBACK)
  acts_as_test_friendly if !test_friendly?
  helper = TestFriendlyHelper.get_helper_for(tag, type)    
  used_runners = []
  @runner_symbols.each do |runner_symbol|
    self.send("_#{runner_symbol}_callbacks").reject! { |callback|
      model_callback = @model_callbacks.find{|mc| mc.hash == callback.hash}
      value = ((tag == :all && model_callback && model_callback.type == type) || 
               helper.tagged_callbacks.include?(callback.hash))
      if value && !used_runners.include?(runner_symbol)
        used_runners << runner_symbol
      end
      value
    }
  end
  used_runners.each do |runner_symbol|
    self.__define_runner(runner_symbol)
  end    
end

#drop_validations(tag = :defaults) ⇒ Object



91
92
93
# File 'lib/test_friendly.rb', line 91

def drop_validations(tag = :defaults)
  drop_callbacks(tag, VALIDATION)
end

#force_callbacks(tag = :defaults, type = CALLBACK) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/test_friendly.rb', line 45

def force_callbacks(tag = :defaults, type = CALLBACK)
  acts_as_test_friendly if !test_friendly?
  callbacks_added = execute_callback_blocks(tag, type)
  helper = TestFriendlyHelper.get_helper_for(tag, type)
  if tag == :all || (!callbacks_added && !helper.tagged_callbacks.empty?)
    hashes = callbacks_hashes
    used_runners = []
    @model_callbacks.each do |model_callback|
      if !hashes.include?(model_callback.hash) && 
          ((tag == :all && model_callback.type == type) || helper.tagged_callbacks.include?(model_callback.hash))
        if !used_runners.include?(model_callback.runner_symbol)
          used_runners << model_callback.runner_symbol 
        end
        self.send("_#{model_callback.runner_symbol}_callbacks").push(model_callback.callback)
      end
    end
    used_runners.each do |runner_symbol|
      self.__define_runner(runner_symbol)
    end
  end
end

#force_validations(tag = :defaults) ⇒ Object



87
88
89
# File 'lib/test_friendly.rb', line 87

def force_validations(tag = :defaults)
  force_callbacks(tag, VALIDATION)
end

#test_friendly?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/test_friendly.rb', line 23

def test_friendly?
  !!@test_friendly
end

#test_friendly_callbacks(tag = :defaults, &block) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/test_friendly.rb', line 36

def test_friendly_callbacks(tag = :defaults, &block)
  acts_as_test_friendly if !test_friendly?
  helper = TestFriendlyHelper.get_helper_for(tag, CALLBACK)
  helper.unprocessed_procs << block
  if Global.callbacks_on?
    execute_callback_blocks(tag, CALLBACK)
  end
end

#test_friendly_validations(tag = :defaults, &block) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/test_friendly.rb', line 27

def test_friendly_validations(tag = :defaults, &block)
  acts_as_test_friendly if !test_friendly?
  helper = TestFriendlyHelper.get_helper_for(tag, VALIDATION)
  helper.unprocessed_procs << block
  if Global.callbacks_on?
    execute_callback_blocks(tag, VALIDATION)
  end
end