flexmock 1.3.2 → 1.3.3

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.
Files changed (62) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile.lock +9 -9
  3. data/Rakefile +3 -1
  4. data/lib/flexmock.rb +1 -1
  5. data/lib/flexmock/argument_matchers.rb +1 -1
  6. data/lib/flexmock/argument_types.rb +1 -2
  7. data/lib/flexmock/base.rb +2 -1
  8. data/lib/flexmock/call_record.rb +30 -0
  9. data/lib/flexmock/call_validator.rb +68 -0
  10. data/lib/flexmock/composite_expectation.rb +56 -0
  11. data/lib/flexmock/core.rb +30 -64
  12. data/lib/flexmock/core_class_methods.rb +1 -1
  13. data/lib/flexmock/default_framework_adapter.rb +1 -1
  14. data/lib/flexmock/deprecated_methods.rb +8 -3
  15. data/lib/flexmock/errors.rb +1 -1
  16. data/lib/flexmock/expectation.rb +7 -84
  17. data/lib/flexmock/expectation_builder.rb +133 -0
  18. data/lib/flexmock/expectation_director.rb +6 -4
  19. data/lib/flexmock/expectation_recorder.rb +42 -0
  20. data/lib/flexmock/extensions/active_record_model.rb +109 -0
  21. data/lib/flexmock/mock_builder.rb +139 -0
  22. data/lib/flexmock/mock_container.rb +13 -214
  23. data/lib/flexmock/noop.rb +1 -1
  24. data/lib/flexmock/ordering.rb +1 -2
  25. data/lib/flexmock/partial_mock.rb +95 -57
  26. data/lib/flexmock/rails.rb +1 -1
  27. data/lib/flexmock/recorder.rb +4 -3
  28. data/lib/flexmock/rspec.rb +1 -1
  29. data/lib/flexmock/rspec_spy_matcher.rb +4 -0
  30. data/lib/flexmock/spy_describers.rb +22 -5
  31. data/lib/flexmock/test_unit.rb +2 -40
  32. data/lib/flexmock/test_unit_integration.rb +4 -4
  33. data/lib/flexmock/test_unit_testcase_extensions.rb +49 -0
  34. data/lib/flexmock/undefined.rb +1 -1
  35. data/lib/flexmock/validators.rb +18 -12
  36. data/lib/flexmock/version.rb +1 -1
  37. data/test/based_partials_test.rb +1 -1
  38. data/test/container_methods_test.rb +1 -1
  39. data/test/default_framework_adapter_test.rb +1 -1
  40. data/test/demeter_mocking_test.rb +52 -2
  41. data/test/deprecated_methods_test.rb +1 -1
  42. data/test/examples_from_readme_test.rb +1 -1
  43. data/test/expectation_description_test.rb +1 -1
  44. data/test/extended_should_receive_test.rb +1 -1
  45. data/test/mock_builder_test.rb +68 -0
  46. data/test/naming_test.rb +1 -1
  47. data/test/new_instances_test.rb +1 -1
  48. data/test/partial_mock_test.rb +23 -6
  49. data/test/record_mode_test.rb +1 -1
  50. data/test/rspec_integration/integration_spec.rb +1 -1
  51. data/test/samples_test.rb +1 -2
  52. data/test/should_ignore_missing_test.rb +1 -1
  53. data/test/should_receive_test.rb +1 -1
  54. data/test/test_setup.rb +17 -0
  55. data/test/test_unit_integration/auto_test_unit_test.rb +1 -1
  56. data/test/tu_integration_test.rb +1 -1
  57. data/test/undefined_test.rb +1 -1
  58. metadata +52 -52
  59. data/TAGS +0 -1056
  60. data/lib/flexmock/composite.rb +0 -10
  61. data/lib/flexmock/rails/view_mocking.rb +0 -144
  62. data/test/rails_view_stub_test.rb +0 -145
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Copyright 2003-2012 by Jim Weirich (jim.weirich@gmail.com).
4
- # All rights reserved.
5
-
6
- require 'flexmock/noop'
7
-
8
- class FlexMock
9
-
10
- end
@@ -1,144 +0,0 @@
1
- require 'flexmock'
2
-
3
- class FlexMock
4
- module MockContainer
5
-
6
- def rails_version
7
- Rails::VERSION::STRING
8
- end
9
-
10
- # Declare that the Rails controller under test should render the
11
- # named view. If a view template name is given, it will be an
12
- # error if the named view is not rendered during the execution of
13
- # the contoller action. If no template name is given, then the
14
- # any view may be rendered. If no view is actually rendered, then
15
- # an assertion failure will occur.
16
- #
17
- # def test_my_action_does_what_it_should
18
- # should_render_view 'show'
19
- #
20
- # get :show, :id => 1
21
- #
22
- # assert_response :success
23
- # end
24
- #
25
- def should_render_view(template_name=nil)
26
- if rails_version <= '1.2.4'
27
- should_render_view_prior_version_124(template_name)
28
- elsif rails_version <= '2.0.0'
29
- should_render_view_after_version_124(template_name)
30
- elsif rails_version < '2.2'
31
- should_render_view_after_version_202(template_name)
32
- elsif rails_version < '2.3'
33
- should_render_view_22x(template_name)
34
- else
35
- should_render_view_23x(template_name)
36
- end
37
- end
38
-
39
- private
40
-
41
- # This version of should_render_view will work for Rails 1.2.4
42
- # (and prehaps some number of prior versions).
43
- def should_render_view_prior_version_124(template_name) # :nodoc:
44
- view = flexmock("MockView")
45
- view.should_receive(
46
- :assigns => {},
47
- :render_file => true,
48
- :render_partial => true,
49
- :first_render => "dummy_template"
50
- )
51
- if template_name
52
- view.should_receive(:file_exists?).with(/#{template_name}$/).once.
53
- and_return(true)
54
- end
55
- view.should_receive(:file_exists?).with(any).and_return(true)
56
- view_class = flexmock("MockViewClasss")
57
- view_class.should_receive(:new).and_return(view)
58
- flexmock(@controller.class).should_receive(:view_class).once.
59
- and_return(view_class)
60
- end
61
-
62
- # This version of should_render_view will work with versions of
63
- # Rails after Version 1.2.4.
64
- def should_render_view_after_version_124(template_name)
65
- view = flexmock("MockView")
66
- view.should_receive(
67
- :assigns => {},
68
- :render_file => true,
69
- :render_partial => true,
70
- :template_format => :dummy_format,
71
- :view_paths => :dummy_view_paths,
72
- :pick_template_extension => :dummy_extension
73
- )
74
- if template_name
75
- view.should_receive(:file_exists?).with(/#{template_name}$/).once.
76
- and_return(true)
77
- end
78
- view.should_receive(:file_exists?).with(any).and_return(true)
79
-
80
- # The number of times this is called changes from version 1.2.6
81
- # to 2.0. The important thing is that it is checked at least once.
82
- flexmock(@response).should_receive(:template).and_return(view).
83
- at_least.once
84
- end
85
-
86
- # This version of should_render_view will work with versions of
87
- # Rails at Version 2.0.2 and after
88
- def should_render_view_after_version_202(template_name)
89
- viewmock = flexmock("ViewMock")
90
- viewmock.should_receive(
91
- :assigns => {},
92
- :pick_template_extension => ".html",
93
- :template_format =>nil,
94
- :view_paths => nil,
95
- :file_exists? => true,
96
- :first_render => "")
97
- if template_name
98
- viewmock.should_receive(:render_file).with(/\/#{template_name}$/, any, any).
99
- and_return(nil).once
100
- viewmock.should_receive(:render_file).and_return(nil)
101
- else
102
- viewmock.should_receive(:render_file).at_least.once.and_return(nil)
103
- end
104
- flexmock(ActionView::Base).should_receive(:new).and_return(viewmock)
105
- end
106
-
107
- # This version of should_render_view will work with versions of
108
- # Rails at Version 2.2.x.
109
- def should_render_view_22x(template_name)
110
- viewmock = flexmock("ViewMock")
111
- viewmock.should_receive(
112
- :helpers => viewmock,
113
- :include => nil,
114
- :template_format =>nil,
115
- :render => "RENDERED TEXT",
116
- :assigns => {})
117
- if template_name
118
- viewmock.should_receive(:_exempt_from_layout?).with(/\/#{template_name}$/).
119
- and_return(true).once
120
- viewmock.should_receive(:_exempt_from_layout?).and_return(true)
121
- else
122
- viewmock.should_receive(:_exempt_from_layout?).at_least.once.and_return(true)
123
- end
124
- flexmock(ActionView::Base).should_receive(:new).and_return(viewmock)
125
- end
126
-
127
- # This version of should_render_view will work with versions of
128
- # Rails at Version 2.3.x.
129
- def should_render_view_23x(template_name)
130
- viewmock = flexmock("ViewMock")
131
- viewmock.should_receive(
132
- :view_paths => viewmock,
133
- :render => "RENDERED TEXT")
134
- if template_name
135
- viewmock.should_receive(:find_template).
136
- with(/\/#{template_name}$/, any).
137
- and_return(FlexMock.undefined).
138
- at_least.once
139
- end
140
- viewmock.should_ignore_missing
141
- flexmock(ActionView::Base).should_receive(:new).and_return(viewmock)
142
- end
143
- end
144
- end
@@ -1,145 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'test/test_setup'
4
- require 'flexmock/rails/view_mocking'
5
-
6
- module ViewTests
7
- def test_view_mocks_as_stub
8
- should_render_view
9
- render "controller/new.rthml"
10
- end
11
-
12
- def test_fails_if_no_render
13
- should_render_view
14
- assert_raise(assertion_failed_error) do
15
- flexmock_verify
16
- end
17
- end
18
-
19
- def test_view_mocks_with_expectation
20
- should_render_view("new")
21
- render "controller/new"
22
- end
23
-
24
- def test_view_mocks_with_expectation_fails_with_different_template
25
- should_render_view("new")
26
- render "controller/edit"
27
- assert_raise(assertion_failed_error) do
28
- flexmock_verify
29
- end
30
- end
31
-
32
- def test_view_mocks_with_expectation_and_multiple_templates
33
- should_render_view("new")
34
- render "controller/edit", "controller/show", "controller/new"
35
- end
36
-
37
- private
38
-
39
- def pretend_to_be_rails_version(version)
40
- flexmock(self).should_receive(:rails_version).and_return(version)
41
- end
42
- end
43
-
44
- ######################################################################
45
- class TestRailsViewStubForVersionsUpTo_1_2_4 < Test::Unit::TestCase
46
- include FlexMock::TestCase
47
- include ViewTests
48
-
49
- def setup
50
- @controller_class = flexmock("controller class")
51
- @controller = flexmock("controller", :class => @controller_class)
52
- pretend_to_be_rails_version("1.2.4")
53
- end
54
-
55
- # Simulate Rails rendering in version 1.2.4
56
- def render(*names)
57
- vc = @controller.class.view_class
58
- v = vc.new
59
- v.assigns(:x => :y)
60
- v.render_file
61
- v.first_render
62
- names.each do |name|
63
- v.file_exists?(name)
64
- end
65
- end
66
-
67
- end
68
-
69
- ######################################################################
70
- class TestRailsViewStubForVersionsAfter_1_2_4 < Test::Unit::TestCase
71
- include FlexMock::TestCase
72
- include ViewTests
73
-
74
- def setup
75
- @controller_class = flexmock("controller class")
76
- @controller = flexmock("controller", :class => @controller_class)
77
- @response = flexmock("Response")
78
- pretend_to_be_rails_version("2.0")
79
- end
80
-
81
- # Simulate Rails rendering after Rails version 1.2.4
82
- def render(*names)
83
- v = @response.template
84
- v.assigns(:x => :y)
85
- v.render_file
86
- v.template_format
87
- v.view_paths
88
- v.pick_template_extension
89
- names.each do |name|
90
- v.file_exists?(name)
91
- end
92
- end
93
-
94
- end
95
-
96
- ######################################################################
97
- class TestRailsViewStubForVersionsAfter_2_0_2 < Test::Unit::TestCase
98
- include FlexMock::TestCase
99
- include ViewTests
100
-
101
- def setup
102
- @controller_class = flexmock("controller class")
103
- @controller = flexmock("controller", :class => @controller_class)
104
- @response = flexmock("Response")
105
- pretend_to_be_rails_version("2.0.2")
106
- end
107
-
108
- # Simulate Rails rendering after Rails version 2.0.2
109
- def render(*names)
110
- v = ActionView::Base.new
111
- v.assigns(:x => :y)
112
- v.template_format
113
- v.view_paths
114
- v.pick_template_extension
115
- names.each do |name|
116
- v.file_exists?(name)
117
- end
118
- v.render_file(names.last, nil, nil)
119
- end
120
-
121
- end
122
-
123
- class FlexMock
124
- module MockContainer
125
- module Rails
126
- module VERSION
127
- STRING = 1
128
- end
129
- end
130
- end
131
- end
132
-
133
- class TestRailsVersion < Test::Unit::TestCase
134
- include FlexMock::TestCase
135
- def test_rails_version_to_get_code_coverage
136
- rails_version
137
- end
138
- end
139
-
140
- # Test Helper Classes
141
-
142
- module ActionView
143
- class Base
144
- end
145
- end