File: stubbing_non_existent_any_instance_method_test.rb

package info (click to toggle)
libmocha-ruby 0.9.0-1
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 944 kB
  • ctags: 1,384
  • sloc: ruby: 7,265; makefile: 4
file content (130 lines) | stat: -rw-r--r-- 4,295 bytes parent folder | download
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
require 'mocha'

class StubbingNonExistentAnyInstanceMethodTest < Test::Unit::TestCase
  
  include AcceptanceTest
  
  def setup
    setup_acceptance_test
  end
  
  def teardown
    teardown_acceptance_test
  end
  
  def test_should_allow_stubbing_non_existent_any_instance_method
    Mocha::Configuration.allow(:stubbing_non_existent_method)
    klass = Class.new
    test_result = run_test do
      klass.any_instance.stubs(:non_existent_method)
    end
    assert !@logger.warnings.include?("stubbing non-existent method: #{klass.any_instance}.non_existent_method")
    assert_passed(test_result)
  end
  
  def test_should_warn_when_stubbing_non_existent_any_instance_method
    Mocha::Configuration.warn_when(:stubbing_non_existent_method)
    klass = Class.new
    test_result = run_test do
      klass.any_instance.stubs(:non_existent_method)
    end
    assert_passed(test_result)
    assert @logger.warnings.include?("stubbing non-existent method: #{klass.any_instance}.non_existent_method")
  end
  
  def test_should_prevent_stubbing_non_existent_any_instance_method
    Mocha::Configuration.prevent(:stubbing_non_existent_method)
    klass = Class.new
    test_result = run_test do
      klass.any_instance.stubs(:non_existent_method)
    end
    assert_failed(test_result)
    assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-existent method: #{klass.any_instance}.non_existent_method")
  end
  
  def test_should_default_to_allow_stubbing_non_existent_any_instance_method
    klass = Class.new
    test_result = run_test do
      klass.any_instance.stubs(:non_existent_method)
    end
    assert !@logger.warnings.include?("stubbing non-existent method: #{klass.any_instance}.non_existent_method")
    assert_passed(test_result)
  end
  
  def test_should_allow_stubbing_existing_public_any_instance_method
    Mocha::Configuration.prevent(:stubbing_non_existent_method)
    klass = Class.new do
      def existing_public_method; end
      public :existing_public_method
    end
    test_result = run_test do
      klass.any_instance.stubs(:existing_public_method)
    end
    assert_passed(test_result)
  end

  def test_should_allow_stubbing_existing_protected_any_instance_method
    Mocha::Configuration.prevent(:stubbing_non_existent_method)
    klass = Class.new do
      def existing_protected_method; end
      protected :existing_protected_method
    end
    test_result = run_test do
      klass.any_instance.stubs(:existing_protected_method)
    end
    assert_passed(test_result)
  end
  
  def test_should_allow_stubbing_existing_private_any_instance_method
    Mocha::Configuration.prevent(:stubbing_non_existent_method)
    klass = Class.new do
      def existing_private_method; end
      private :existing_private_method
    end
    test_result = run_test do
      klass.any_instance.stubs(:existing_private_method)
    end
    assert_passed(test_result)
  end
  
  def test_should_allow_stubbing_existing_public_any_instance_superclass_method
    Mocha::Configuration.prevent(:stubbing_non_existent_method)
    superklass = Class.new do
      def existing_public_method; end
      public :existing_public_method
    end
    klass = Class.new(superklass)
    test_result = run_test do
      klass.any_instance.stubs(:existing_public_method)
    end
    assert_passed(test_result)
  end
  
  def test_should_allow_stubbing_existing_protected_any_instance_superclass_method
    Mocha::Configuration.prevent(:stubbing_non_existent_method)
    superklass = Class.new do
      def existing_protected_method; end
      protected :existing_protected_method
    end
    klass = Class.new(superklass)
    test_result = run_test do
      klass.any_instance.stubs(:existing_protected_method)
    end
    assert_passed(test_result)
  end
  
  def test_should_allow_stubbing_existing_private_any_instance_superclass_method
    Mocha::Configuration.prevent(:stubbing_non_existent_method)
    superklass = Class.new do
      def existing_private_method; end
      private :existing_private_method
    end
    klass = Class.new(superklass)
    test_result = run_test do
      klass.any_instance.stubs(:existing_private_method)
    end
    assert_passed(test_result)
  end
  
end