flexmock 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,5 +1,12 @@
1
+ 2006-10-17 Jim Weirich <jim@weirichhouse.org>
2
+
1
3
  = Changes for FlexMock
2
4
 
5
+ == Pre-Version 0.4.2
6
+
7
+ * Fixed bug where multiple stubs of a class method were not
8
+ properly restored.
9
+
3
10
  == Version 0.4.1
4
11
 
5
12
  * Removed include of Test::Unit::Assertions from Expectations.
data/README CHANGED
@@ -3,7 +3,7 @@
3
3
  FlexMock is a simple, but flexible, mock object library for Ruby unit
4
4
  testing.
5
5
 
6
- Version :: 0.4.1
6
+ Version :: 0.4.2
7
7
 
8
8
  = Links
9
9
 
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ require 'rake/testtask'
9
9
  CLEAN.include('*.tmp')
10
10
  CLOBBER.include("html", 'pkg')
11
11
 
12
- PKG_VERSION = '0.4.1'
12
+ PKG_VERSION = '0.4.2'
13
13
 
14
14
  PKG_FILES = FileList[
15
15
  '[A-Z]*',
@@ -27,7 +27,9 @@ RDOC_FILES = FileList[
27
27
  ]
28
28
 
29
29
 
30
- task :default => [:test]
30
+ task :default => [:test_all]
31
+ task :test_all => [:test]
32
+ task :ta => [:test_all]
31
33
 
32
34
  # Test Targets -------------------------------------------------------
33
35
 
@@ -973,6 +973,7 @@ class FlexMock
973
973
  @mock = mock
974
974
  @methods_to_restore = []
975
975
  @method_definitions = {}
976
+ @methods_proxied = []
976
977
  end
977
978
 
978
979
  # Stub out the given method in the existing object and then let the
@@ -982,7 +983,10 @@ class FlexMock
982
983
  if @obj.methods.include?(method_name.to_s)
983
984
  @methods_to_restore << method_name
984
985
  end
985
- hide_existing_method(method_name)
986
+ unless @methods_proxied.include?(method_name)
987
+ hide_existing_method(method_name)
988
+ @methods_proxied << method_name
989
+ end
986
990
  @mock.should_receive(method_name)
987
991
  end
988
992
 
@@ -69,6 +69,17 @@ class TestStubbing < Test::Unit::TestCase
69
69
  stub_proxy.mock_teardown
70
70
  assert_raise(NoMethodError) { obj.hi }
71
71
  end
72
+
73
+ def test_multiple_stubs_on_single_method_can_be_restored_missing_method
74
+ obj = Object.new
75
+ stub_proxy = flexstub(obj)
76
+ stub_proxy.should_receive(:hi).with(1).once.and_return(:ok)
77
+ stub_proxy.should_receive(:hi).with(2).once.and_return(:ok)
78
+ assert_equal :ok, obj.hi(1)
79
+ assert_equal :ok, obj.hi(2)
80
+ stub_proxy.mock_teardown
81
+ assert_raise(NoMethodError) { obj.hi }
82
+ end
72
83
 
73
84
  def test_original_behavior_is_restored_when_multiple_methods_are_mocked
74
85
  dog = Dog.new
@@ -96,6 +107,18 @@ class TestStubbing < Test::Unit::TestCase
96
107
  assert_equal :hello, obj.hi
97
108
  end
98
109
 
110
+ def test_original_behavior_is_restored_on_singleton_methods_with_multiple_stubs
111
+ obj = Object.new
112
+ def obj.hi(n) "hello#{n}" end
113
+ flexstub(obj).should_receive(:hi).with(1).once.and_return(:hola)
114
+ flexstub(obj).should_receive(:hi).with(2).once.and_return(:hola)
115
+
116
+ assert_equal :hola, obj.hi(1)
117
+ assert_equal :hola, obj.hi(2)
118
+ flexstub(obj).mock_teardown
119
+ assert_equal "hello3", obj.hi(3)
120
+ end
121
+
99
122
  def test_original_behavior_is_restored_even_when_errors
100
123
  flexstub(Dog).should_receive(:create).once.and_return(:mock)
101
124
  flexmock_teardown rescue nil
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0.1
2
+ rubygems_version: 0.9.0.6
3
3
  specification_version: 1
4
4
  name: flexmock
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.1
7
- date: 2006-09-07 00:00:00 -04:00
6
+ version: 0.4.2
7
+ date: 2006-10-18 00:00:00 -04:00
8
8
  summary: Simple and Flexible Mock Objects for Testing
9
9
  require_paths:
10
10
  - lib