dchelimsky-rspec 1.1.10
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/History.txt +1192 -0
- data/License.txt +22 -0
- data/Manifest.txt +403 -0
- data/README.txt +39 -0
- data/Rakefile +90 -0
- data/TODO.txt +10 -0
- data/bin/autospec +4 -0
- data/bin/spec +4 -0
- data/examples/pure/autogenerated_docstrings_example.rb +19 -0
- data/examples/pure/before_and_after_example.rb +40 -0
- data/examples/pure/behave_as_example.rb +45 -0
- data/examples/pure/custom_expectation_matchers.rb +54 -0
- data/examples/pure/custom_formatter.rb +12 -0
- data/examples/pure/dynamic_spec.rb +9 -0
- data/examples/pure/file_accessor.rb +19 -0
- data/examples/pure/file_accessor_spec.rb +38 -0
- data/examples/pure/greeter_spec.rb +31 -0
- data/examples/pure/helper_method_example.rb +14 -0
- data/examples/pure/io_processor.rb +8 -0
- data/examples/pure/io_processor_spec.rb +21 -0
- data/examples/pure/legacy_spec.rb +11 -0
- data/examples/pure/mocking_example.rb +27 -0
- data/examples/pure/multi_threaded_behaviour_runner.rb +28 -0
- data/examples/pure/nested_classes_example.rb +36 -0
- data/examples/pure/partial_mock_example.rb +29 -0
- data/examples/pure/pending_example.rb +20 -0
- data/examples/pure/predicate_example.rb +27 -0
- data/examples/pure/priority.txt +1 -0
- data/examples/pure/shared_example_group_example.rb +81 -0
- data/examples/pure/shared_stack_examples.rb +38 -0
- data/examples/pure/spec_helper.rb +3 -0
- data/examples/pure/stack.rb +36 -0
- data/examples/pure/stack_spec.rb +63 -0
- data/examples/pure/stack_spec_with_nested_example_groups.rb +67 -0
- data/examples/pure/stubbing_example.rb +69 -0
- data/examples/pure/yielding_example.rb +33 -0
- data/examples/stories/adder.rb +13 -0
- data/examples/stories/addition +34 -0
- data/examples/stories/addition.rb +9 -0
- data/examples/stories/calculator.rb +65 -0
- data/examples/stories/game-of-life/.loadpath +5 -0
- data/examples/stories/game-of-life/README.txt +21 -0
- data/examples/stories/game-of-life/behaviour/everything.rb +6 -0
- data/examples/stories/game-of-life/behaviour/examples/examples.rb +3 -0
- data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
- data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
- data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
- data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
- data/examples/stories/game-of-life/behaviour/stories/helper.rb +6 -0
- data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +26 -0
- data/examples/stories/game-of-life/behaviour/stories/steps.rb +5 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.rb +3 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.txt +22 -0
- data/examples/stories/game-of-life/life/game.rb +23 -0
- data/examples/stories/game-of-life/life/grid.rb +43 -0
- data/examples/stories/game-of-life/life.rb +3 -0
- data/examples/stories/helper.rb +9 -0
- data/examples/stories/steps/addition_steps.rb +18 -0
- data/failing_examples/README.txt +7 -0
- data/failing_examples/diffing_spec.rb +36 -0
- data/failing_examples/failing_autogenerated_docstrings_example.rb +19 -0
- data/failing_examples/failure_in_setup.rb +10 -0
- data/failing_examples/failure_in_teardown.rb +10 -0
- data/failing_examples/mocking_example.rb +40 -0
- data/failing_examples/mocking_with_flexmock.rb +26 -0
- data/failing_examples/mocking_with_mocha.rb +25 -0
- data/failing_examples/mocking_with_rr.rb +27 -0
- data/failing_examples/partial_mock_example.rb +20 -0
- data/failing_examples/predicate_example.rb +29 -0
- data/failing_examples/raising_example.rb +47 -0
- data/failing_examples/spec_helper.rb +3 -0
- data/failing_examples/syntax_error_example.rb +7 -0
- data/failing_examples/team_spec.rb +44 -0
- data/failing_examples/timeout_behaviour.rb +7 -0
- data/init.rb +9 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/rspec.rb +46 -0
- data/lib/spec/adapters/ruby_engine/mri.rb +8 -0
- data/lib/spec/adapters/ruby_engine/rubinius.rb +8 -0
- data/lib/spec/adapters/ruby_engine.rb +26 -0
- data/lib/spec/adapters.rb +1 -0
- data/lib/spec/example/before_and_after_hooks.rb +93 -0
- data/lib/spec/example/configuration.rb +167 -0
- data/lib/spec/example/errors.rb +30 -0
- data/lib/spec/example/example_group.rb +25 -0
- data/lib/spec/example/example_group_factory.rb +81 -0
- data/lib/spec/example/example_group_methods.rb +368 -0
- data/lib/spec/example/example_matcher.rb +44 -0
- data/lib/spec/example/example_methods.rb +105 -0
- data/lib/spec/example/module_reopening_fix.rb +21 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/shared_example_group.rb +52 -0
- data/lib/spec/example.rb +12 -0
- data/lib/spec/expectations/differs/default.rb +66 -0
- data/lib/spec/expectations/errors.rb +12 -0
- data/lib/spec/expectations/extensions/object.rb +63 -0
- data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/lib/spec/expectations/extensions.rb +2 -0
- data/lib/spec/expectations/handler.rb +52 -0
- data/lib/spec/expectations.rb +56 -0
- data/lib/spec/extensions/class.rb +24 -0
- data/lib/spec/extensions/main.rb +87 -0
- data/lib/spec/extensions/metaclass.rb +7 -0
- data/lib/spec/extensions/object.rb +6 -0
- data/lib/spec/extensions.rb +4 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +71 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
- data/lib/spec/interop/test.rb +12 -0
- data/lib/spec/matchers/be.rb +221 -0
- data/lib/spec/matchers/be_close.rb +37 -0
- data/lib/spec/matchers/change.rb +148 -0
- data/lib/spec/matchers/eql.rb +43 -0
- data/lib/spec/matchers/equal.rb +43 -0
- data/lib/spec/matchers/exist.rb +22 -0
- data/lib/spec/matchers/has.rb +34 -0
- data/lib/spec/matchers/have.rb +150 -0
- data/lib/spec/matchers/include.rb +77 -0
- data/lib/spec/matchers/match.rb +41 -0
- data/lib/spec/matchers/operator_matcher.rb +79 -0
- data/lib/spec/matchers/raise_error.rb +132 -0
- data/lib/spec/matchers/respond_to.rb +46 -0
- data/lib/spec/matchers/satisfy.rb +47 -0
- data/lib/spec/matchers/simple_matcher.rb +132 -0
- data/lib/spec/matchers/throw_symbol.rb +74 -0
- data/lib/spec/matchers.rb +162 -0
- data/lib/spec/mocks/argument_constraints.rb +165 -0
- data/lib/spec/mocks/argument_expectation.rb +49 -0
- data/lib/spec/mocks/error_generator.rb +84 -0
- data/lib/spec/mocks/errors.rb +10 -0
- data/lib/spec/mocks/extensions/object.rb +3 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +331 -0
- data/lib/spec/mocks/methods.rb +51 -0
- data/lib/spec/mocks/mock.rb +56 -0
- data/lib/spec/mocks/order_group.rb +29 -0
- data/lib/spec/mocks/proxy.rb +224 -0
- data/lib/spec/mocks/space.rb +28 -0
- data/lib/spec/mocks/spec_methods.rb +46 -0
- data/lib/spec/mocks.rb +200 -0
- data/lib/spec/rake/spectask.rb +227 -0
- data/lib/spec/rake/verify_rcov.rb +52 -0
- data/lib/spec/runner/backtrace_tweaker.rb +56 -0
- data/lib/spec/runner/class_and_arguments_parser.rb +16 -0
- data/lib/spec/runner/command_line.rb +17 -0
- data/lib/spec/runner/drb_command_line.rb +20 -0
- data/lib/spec/runner/example_group_runner.rb +59 -0
- data/lib/spec/runner/formatter/base_formatter.rb +79 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +126 -0
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +27 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
- data/lib/spec/runner/formatter/html_formatter.rb +337 -0
- data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +51 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +34 -0
- data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +39 -0
- data/lib/spec/runner/formatter/story/html_formatter.rb +174 -0
- data/lib/spec/runner/formatter/story/plain_text_formatter.rb +194 -0
- data/lib/spec/runner/formatter/story/progress_bar_formatter.rb +42 -0
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +72 -0
- data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
- data/lib/spec/runner/option_parser.rb +205 -0
- data/lib/spec/runner/options.rb +320 -0
- data/lib/spec/runner/reporter.rb +167 -0
- data/lib/spec/runner/spec_parser.rb +71 -0
- data/lib/spec/runner.rb +213 -0
- data/lib/spec/story/extensions/main.rb +86 -0
- data/lib/spec/story/extensions/regexp.rb +9 -0
- data/lib/spec/story/extensions/string.rb +9 -0
- data/lib/spec/story/extensions.rb +3 -0
- data/lib/spec/story/given_scenario.rb +14 -0
- data/lib/spec/story/runner/plain_text_story_runner.rb +48 -0
- data/lib/spec/story/runner/scenario_collector.rb +18 -0
- data/lib/spec/story/runner/scenario_runner.rb +54 -0
- data/lib/spec/story/runner/story_mediator.rb +137 -0
- data/lib/spec/story/runner/story_parser.rb +247 -0
- data/lib/spec/story/runner/story_runner.rb +70 -0
- data/lib/spec/story/runner.rb +59 -0
- data/lib/spec/story/scenario.rb +14 -0
- data/lib/spec/story/step.rb +70 -0
- data/lib/spec/story/step_group.rb +89 -0
- data/lib/spec/story/step_mother.rb +38 -0
- data/lib/spec/story/story.rb +39 -0
- data/lib/spec/story/world.rb +128 -0
- data/lib/spec/story.rb +10 -0
- data/lib/spec/version.rb +13 -0
- data/lib/spec.rb +32 -0
- data/plugins/mock_frameworks/flexmock.rb +23 -0
- data/plugins/mock_frameworks/mocha.rb +19 -0
- data/plugins/mock_frameworks/rr.rb +21 -0
- data/plugins/mock_frameworks/rspec.rb +20 -0
- data/rake_tasks/examples.rake +7 -0
- data/rake_tasks/examples_with_rcov.rake +9 -0
- data/rake_tasks/failing_examples_with_html.rake +9 -0
- data/rake_tasks/verify_rcov.rake +7 -0
- data/rspec.gemspec +42 -0
- data/spec/README.jruby +15 -0
- data/spec/autotest/autotest_helper.rb +6 -0
- data/spec/autotest/autotest_matchers.rb +47 -0
- data/spec/autotest/discover_spec.rb +19 -0
- data/spec/autotest/rspec_spec.rb +150 -0
- data/spec/rspec_suite.rb +6 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/adapters/ruby_engine_spec.rb +16 -0
- data/spec/spec/example/configuration_spec.rb +296 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +48 -0
- data/spec/spec/example/example_group_factory_spec.rb +165 -0
- data/spec/spec/example/example_group_methods_spec.rb +584 -0
- data/spec/spec/example/example_group_spec.rb +683 -0
- data/spec/spec/example/example_matcher_spec.rb +96 -0
- data/spec/spec/example/example_methods_spec.rb +169 -0
- data/spec/spec/example/example_runner_spec.rb +194 -0
- data/spec/spec/example/nested_example_group_spec.rb +71 -0
- data/spec/spec/example/pending_module_spec.rb +145 -0
- data/spec/spec/example/predicate_matcher_spec.rb +21 -0
- data/spec/spec/example/shared_example_group_spec.rb +281 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/expectations/differs/default_spec.rb +127 -0
- data/spec/spec/expectations/extensions/object_spec.rb +95 -0
- data/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/spec/spec/extensions/main_spec.rb +71 -0
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
- data/spec/spec/interop/test/unit/spec_spec.rb +52 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +14 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +49 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/matchers/be_close_spec.rb +39 -0
- data/spec/spec/matchers/be_spec.rb +248 -0
- data/spec/spec/matchers/change_spec.rb +329 -0
- data/spec/spec/matchers/description_generation_spec.rb +153 -0
- data/spec/spec/matchers/eql_spec.rb +28 -0
- data/spec/spec/matchers/equal_spec.rb +28 -0
- data/spec/spec/matchers/exist_spec.rb +57 -0
- data/spec/spec/matchers/handler_spec.rb +150 -0
- data/spec/spec/matchers/has_spec.rb +63 -0
- data/spec/spec/matchers/have_spec.rb +394 -0
- data/spec/spec/matchers/include_spec.rb +64 -0
- data/spec/spec/matchers/match_spec.rb +37 -0
- data/spec/spec/matchers/matcher_methods_spec.rb +78 -0
- data/spec/spec/matchers/mock_constraint_matchers_spec.rb +24 -0
- data/spec/spec/matchers/operator_matcher_spec.rb +191 -0
- data/spec/spec/matchers/raise_error_spec.rb +315 -0
- data/spec/spec/matchers/respond_to_spec.rb +54 -0
- data/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/spec/spec/matchers/simple_matcher_spec.rb +93 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +54 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
- data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
- data/spec/spec/mocks/at_least_spec.rb +97 -0
- data/spec/spec/mocks/at_most_spec.rb +93 -0
- data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/spec/mocks/bug_report_10263_spec.rb +24 -0
- data/spec/spec/mocks/bug_report_11545_spec.rb +33 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_496.rb +17 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +95 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +53 -0
- data/spec/spec/mocks/mock_ordering_spec.rb +84 -0
- data/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/spec/mocks/mock_spec.rb +555 -0
- data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
- data/spec/spec/mocks/once_counts_spec.rb +53 -0
- data/spec/spec/mocks/options_hash_spec.rb +35 -0
- data/spec/spec/mocks/partial_mock_spec.rb +149 -0
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +130 -0
- data/spec/spec/mocks/precise_counts_spec.rb +52 -0
- data/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/spec/spec/mocks/stub_spec.rb +188 -0
- data/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/spec/spec/package/bin_spec_spec.rb +22 -0
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +141 -0
- data/spec/spec/runner/drb_command_line_spec.rb +97 -0
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/examples.txt +2 -0
- data/spec/spec/runner/failed.txt +3 -0
- data/spec/spec/runner/formatter/base_formatter_spec.rb +112 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +370 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +61 -0
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +318 -0
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +155 -0
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +103 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
- data/spec/spec/runner/formatter/story/html_formatter_spec.rb +135 -0
- data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +600 -0
- data/spec/spec/runner/formatter/story/progress_bar_formatter_spec.rb +82 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +370 -0
- data/spec/spec/runner/heckle_runner_spec.rb +78 -0
- data/spec/spec/runner/heckler_spec.rb +13 -0
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/spec/spec/runner/option_parser_spec.rb +421 -0
- data/spec/spec/runner/options_spec.rb +450 -0
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
- data/spec/spec/runner/output_one_time_spec.rb +16 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +62 -0
- data/spec/spec/runner/reporter_spec.rb +238 -0
- data/spec/spec/runner/resources/a_bar.rb +0 -0
- data/spec/spec/runner/resources/a_foo.rb +0 -0
- data/spec/spec/runner/resources/a_spec.rb +1 -0
- data/spec/spec/runner/spec.opts +2 -0
- data/spec/spec/runner/spec_drb.opts +1 -0
- data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
- data/spec/spec/runner/spec_parser_spec.rb +85 -0
- data/spec/spec/runner/spec_spaced.opts +2 -0
- data/spec/spec/runner_spec.rb +11 -0
- data/spec/spec/spec_classes.rb +133 -0
- data/spec/spec/story/builders.rb +46 -0
- data/spec/spec/story/extensions/main_spec.rb +161 -0
- data/spec/spec/story/extensions_spec.rb +14 -0
- data/spec/spec/story/given_scenario_spec.rb +27 -0
- data/spec/spec/story/runner/plain_text_story_runner_spec.rb +90 -0
- data/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
- data/spec/spec/story/runner/scenario_runner_spec.rb +214 -0
- data/spec/spec/story/runner/story_mediator_spec.rb +143 -0
- data/spec/spec/story/runner/story_parser_spec.rb +401 -0
- data/spec/spec/story/runner/story_runner_spec.rb +294 -0
- data/spec/spec/story/runner_spec.rb +93 -0
- data/spec/spec/story/scenario_spec.rb +18 -0
- data/spec/spec/story/step_group_spec.rb +157 -0
- data/spec/spec/story/step_mother_spec.rb +84 -0
- data/spec/spec/story/step_spec.rb +272 -0
- data/spec/spec/story/story_helper.rb +2 -0
- data/spec/spec/story/story_spec.rb +84 -0
- data/spec/spec/story/world_spec.rb +423 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +77 -0
- data/stories/all.rb +5 -0
- data/stories/configuration/before_blocks.story +21 -0
- data/stories/configuration/stories.rb +7 -0
- data/stories/example_groups/autogenerated_docstrings +45 -0
- data/stories/example_groups/example_group_with_should_methods +17 -0
- data/stories/example_groups/nested_groups +17 -0
- data/stories/example_groups/output +25 -0
- data/stories/example_groups/stories.rb +7 -0
- data/stories/helper.rb +6 -0
- data/stories/interop/examples_and_tests_together +30 -0
- data/stories/interop/stories.rb +7 -0
- data/stories/interop/test_case_with_should_methods +17 -0
- data/stories/mock_framework_integration/stories.rb +7 -0
- data/stories/mock_framework_integration/use_flexmock.story +9 -0
- data/stories/pending_stories/README +3 -0
- data/stories/resources/helpers/cmdline.rb +9 -0
- data/stories/resources/helpers/story_helper.rb +16 -0
- data/stories/resources/matchers/smart_match.rb +37 -0
- data/stories/resources/spec/before_blocks_example.rb +32 -0
- data/stories/resources/spec/example_group_with_should_methods.rb +12 -0
- data/stories/resources/spec/simple_spec.rb +8 -0
- data/stories/resources/spec/spec_with_flexmock.rb +18 -0
- data/stories/resources/steps/running_rspec.rb +50 -0
- data/stories/resources/stories/failing_story.rb +15 -0
- data/stories/resources/test/spec_and_test_together.rb +57 -0
- data/stories/resources/test/test_case_with_should_methods.rb +30 -0
- data/stories/stories/multiline_steps.story +23 -0
- data/stories/stories/steps/multiline_steps.rb +13 -0
- data/stories/stories/stories.rb +6 -0
- data/story_server/prototype/javascripts/builder.js +136 -0
- data/story_server/prototype/javascripts/controls.js +972 -0
- data/story_server/prototype/javascripts/dragdrop.js +976 -0
- data/story_server/prototype/javascripts/effects.js +1117 -0
- data/story_server/prototype/javascripts/prototype.js +4140 -0
- data/story_server/prototype/javascripts/rspec.js +149 -0
- data/story_server/prototype/javascripts/scriptaculous.js +58 -0
- data/story_server/prototype/javascripts/slider.js +276 -0
- data/story_server/prototype/javascripts/sound.js +55 -0
- data/story_server/prototype/javascripts/unittest.js +568 -0
- data/story_server/prototype/lib/server.rb +24 -0
- data/story_server/prototype/stories.html +176 -0
- data/story_server/prototype/stylesheets/rspec.css +136 -0
- data/story_server/prototype/stylesheets/test.css +90 -0
- metadata +495 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
|
+
require 'spec/mocks'
|
3
|
+
|
4
|
+
module Spec
|
5
|
+
module Mocks
|
6
|
+
describe Space do
|
7
|
+
before :each do
|
8
|
+
@space = Space.new
|
9
|
+
klazz = Class.new do
|
10
|
+
def rspec_verify
|
11
|
+
@verified = true
|
12
|
+
end
|
13
|
+
def verified?
|
14
|
+
@verified
|
15
|
+
end
|
16
|
+
def rspec_reset
|
17
|
+
@reset = true
|
18
|
+
end
|
19
|
+
def reset?
|
20
|
+
@reset
|
21
|
+
end
|
22
|
+
end
|
23
|
+
@m1 = klazz.new
|
24
|
+
@m2 = klazz.new
|
25
|
+
end
|
26
|
+
it "should verify all mocks within" do
|
27
|
+
@space.add(@m1)
|
28
|
+
@space.add(@m2)
|
29
|
+
@space.verify_all
|
30
|
+
@m1.should be_verified
|
31
|
+
@m2.should be_verified
|
32
|
+
end
|
33
|
+
it "should reset all mocks within" do
|
34
|
+
@space.add(m1 = mock("mock1"))
|
35
|
+
@space.add(m2 = mock("mock2"))
|
36
|
+
m1.should_receive(:rspec_reset)
|
37
|
+
m2.should_receive(:rspec_reset)
|
38
|
+
@space.reset_all
|
39
|
+
end
|
40
|
+
it "should clear internal mocks on reset_all" do
|
41
|
+
@space.add(m = mock("mock"))
|
42
|
+
@space.reset_all
|
43
|
+
@space.instance_eval { mocks.empty? }.should be_true
|
44
|
+
end
|
45
|
+
it "should only add an instance once" do
|
46
|
+
@space.add(m1 = mock("mock1"))
|
47
|
+
@space.add(m1)
|
48
|
+
m1.should_receive(:rspec_verify)
|
49
|
+
@space.verify_all
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
@@ -0,0 +1,555 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Mocks
|
5
|
+
describe Mock do
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
@mock = mock("test mock")
|
9
|
+
end
|
10
|
+
|
11
|
+
after(:each) do
|
12
|
+
@mock.rspec_reset
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should report line number of expectation of unreceived message" do
|
16
|
+
expected_error_line = __LINE__; @mock.should_receive(:wont_happen).with("x", 3)
|
17
|
+
begin
|
18
|
+
@mock.rspec_verify
|
19
|
+
violated
|
20
|
+
rescue MockExpectationError => e
|
21
|
+
# NOTE - this regexp ended w/ $, but jruby adds extra info at the end of the line
|
22
|
+
e.backtrace[0].should match(/#{File.basename(__FILE__)}:#{expected_error_line}/)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should report line number of expectation of unreceived message after #should_receive after similar stub" do
|
27
|
+
@mock.stub!(:wont_happen)
|
28
|
+
expected_error_line = __LINE__; @mock.should_receive(:wont_happen).with("x", 3)
|
29
|
+
begin
|
30
|
+
@mock.rspec_verify
|
31
|
+
violated
|
32
|
+
rescue MockExpectationError => e
|
33
|
+
# NOTE - this regexp ended w/ $, but jruby adds extra info at the end of the line
|
34
|
+
e.backtrace[0].should match(/#{File.basename(__FILE__)}:#{expected_error_line}/)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should pass when not receiving message specified as not to be received" do
|
39
|
+
@mock.should_not_receive(:not_expected)
|
40
|
+
@mock.rspec_verify
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should pass when receiving message specified as not to be received with different args" do
|
44
|
+
@mock.should_not_receive(:message).with("unwanted text")
|
45
|
+
@mock.should_receive(:message).with("other text")
|
46
|
+
@mock.message "other text"
|
47
|
+
@mock.rspec_verify
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should fail when receiving message specified as not to be received" do
|
51
|
+
@mock.should_not_receive(:not_expected)
|
52
|
+
lambda {
|
53
|
+
@mock.not_expected
|
54
|
+
violated
|
55
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (no args) 0 times, but received it once")
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should fail when receiving message specified as not to be received with args" do
|
59
|
+
@mock.should_not_receive(:not_expected).with("unexpected text")
|
60
|
+
lambda {
|
61
|
+
@mock.not_expected("unexpected text")
|
62
|
+
violated
|
63
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (\"unexpected text\") 0 times, but received it once")
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should pass when receiving message specified as not to be received with wrong args" do
|
67
|
+
@mock.should_not_receive(:not_expected).with("unexpected text")
|
68
|
+
@mock.not_expected "really unexpected text"
|
69
|
+
@mock.rspec_verify
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should allow block to calculate return values" do
|
73
|
+
@mock.should_receive(:something).with("a","b","c").and_return { |a,b,c| c+b+a }
|
74
|
+
@mock.something("a","b","c").should == "cba"
|
75
|
+
@mock.rspec_verify
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should allow parameter as return value" do
|
79
|
+
@mock.should_receive(:something).with("a","b","c").and_return("booh")
|
80
|
+
@mock.something("a","b","c").should == "booh"
|
81
|
+
@mock.rspec_verify
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should return nil if no return value set" do
|
85
|
+
@mock.should_receive(:something).with("a","b","c")
|
86
|
+
@mock.something("a","b","c").should be_nil
|
87
|
+
@mock.rspec_verify
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should raise exception if args don't match when method called" do
|
91
|
+
@mock.should_receive(:something).with("a","b","c").and_return("booh")
|
92
|
+
lambda {
|
93
|
+
@mock.something("a","d","c")
|
94
|
+
violated
|
95
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (\"a\", \"b\", \"c\") but received it with (\"a\", \"d\", \"c\")")
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should raise exception if args don't match when method called even when the method is stubbed" do
|
99
|
+
@mock.stub!(:something)
|
100
|
+
@mock.should_receive(:something).with("a","b","c")
|
101
|
+
lambda {
|
102
|
+
@mock.something("a","d","c")
|
103
|
+
@mock.rspec_verify
|
104
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (\"a\", \"b\", \"c\") but received it with (\"a\", \"d\", \"c\")")
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should raise exception if args don't match when method called even when using null_object" do
|
108
|
+
@mock = mock("test mock", :null_object => true)
|
109
|
+
@mock.should_receive(:something).with("a","b","c")
|
110
|
+
lambda {
|
111
|
+
@mock.something("a","d","c")
|
112
|
+
@mock.rspec_verify
|
113
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (\"a\", \"b\", \"c\") but received it with (\"a\", \"d\", \"c\")")
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should fail if unexpected method called" do
|
117
|
+
lambda {
|
118
|
+
@mock.something("a","b","c")
|
119
|
+
violated
|
120
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' received unexpected message :something with (\"a\", \"b\", \"c\")")
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should use block for expectation if provided" do
|
124
|
+
@mock.should_receive(:something) do | a, b |
|
125
|
+
a.should == "a"
|
126
|
+
b.should == "b"
|
127
|
+
"booh"
|
128
|
+
end
|
129
|
+
@mock.something("a", "b").should == "booh"
|
130
|
+
@mock.rspec_verify
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should fail if expectation block fails" do
|
134
|
+
@mock.should_receive(:something) {| bool | bool.should be_true}
|
135
|
+
lambda {
|
136
|
+
@mock.something false
|
137
|
+
}.should raise_error(MockExpectationError, /Mock 'test mock' received :something but passed block failed with: expected true, got false/)
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should fail right away when method defined as never is received" do
|
141
|
+
@mock.should_receive(:not_expected).never
|
142
|
+
lambda {
|
143
|
+
@mock.not_expected
|
144
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (no args) 0 times, but received it once")
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should eventually fail when method defined as never is received" do
|
148
|
+
@mock.should_receive(:not_expected).never
|
149
|
+
lambda {
|
150
|
+
@mock.not_expected
|
151
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :not_expected with (no args) 0 times, but received it once")
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should raise when told to" do
|
155
|
+
@mock.should_receive(:something).and_raise(RuntimeError)
|
156
|
+
lambda do
|
157
|
+
@mock.something
|
158
|
+
end.should raise_error(RuntimeError)
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should raise passed an Exception instance" do
|
162
|
+
error = RuntimeError.new("error message")
|
163
|
+
@mock.should_receive(:something).and_raise(error)
|
164
|
+
lambda {
|
165
|
+
@mock.something
|
166
|
+
}.should raise_error(RuntimeError, "error message")
|
167
|
+
end
|
168
|
+
|
169
|
+
it "should raise RuntimeError with passed message" do
|
170
|
+
@mock.should_receive(:something).and_raise("error message")
|
171
|
+
lambda {
|
172
|
+
@mock.something
|
173
|
+
}.should raise_error(RuntimeError, "error message")
|
174
|
+
end
|
175
|
+
|
176
|
+
it "should not raise when told to if args dont match" do
|
177
|
+
@mock.should_receive(:something).with(2).and_raise(RuntimeError)
|
178
|
+
lambda {
|
179
|
+
@mock.something 1
|
180
|
+
}.should raise_error(MockExpectationError)
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should throw when told to" do
|
184
|
+
@mock.should_receive(:something).and_throw(:blech)
|
185
|
+
lambda {
|
186
|
+
@mock.something
|
187
|
+
}.should throw_symbol(:blech)
|
188
|
+
end
|
189
|
+
|
190
|
+
it "should raise when explicit return and block constrained" do
|
191
|
+
lambda {
|
192
|
+
@mock.should_receive(:fruit) do |colour|
|
193
|
+
:strawberry
|
194
|
+
end.and_return :apple
|
195
|
+
}.should raise_error(AmbiguousReturnError)
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should ignore args on any args" do
|
199
|
+
@mock.should_receive(:something).at_least(:once).with(any_args)
|
200
|
+
@mock.something
|
201
|
+
@mock.something 1
|
202
|
+
@mock.something "a", 2
|
203
|
+
@mock.something [], {}, "joe", 7
|
204
|
+
@mock.rspec_verify
|
205
|
+
end
|
206
|
+
|
207
|
+
it "should fail on no args if any args received" do
|
208
|
+
@mock.should_receive(:something).with(no_args())
|
209
|
+
lambda {
|
210
|
+
@mock.something 1
|
211
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (no args) but received it with (1)")
|
212
|
+
end
|
213
|
+
|
214
|
+
it "should fail when args are expected but none are received" do
|
215
|
+
@mock.should_receive(:something).with(1)
|
216
|
+
lambda {
|
217
|
+
@mock.something
|
218
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' expected :something with (1) but received it with (no args)")
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should return value from block by default" do
|
222
|
+
@mock.stub!(:method_that_yields).and_yield
|
223
|
+
@mock.method_that_yields { :returned_obj }.should == :returned_obj
|
224
|
+
@mock.rspec_verify
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should yield 0 args to blocks that take a variable number of arguments" do
|
228
|
+
@mock.should_receive(:yield_back).with(no_args()).once.and_yield
|
229
|
+
a = nil
|
230
|
+
@mock.yield_back {|*a|}
|
231
|
+
a.should == []
|
232
|
+
@mock.rspec_verify
|
233
|
+
end
|
234
|
+
|
235
|
+
it "should yield 0 args multiple times to blocks that take a variable number of arguments" do
|
236
|
+
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield.
|
237
|
+
and_yield
|
238
|
+
a = nil
|
239
|
+
b = []
|
240
|
+
@mock.yield_back {|*a| b << a}
|
241
|
+
b.should == [ [], [] ]
|
242
|
+
@mock.rspec_verify
|
243
|
+
end
|
244
|
+
|
245
|
+
it "should yield one arg to blocks that take a variable number of arguments" do
|
246
|
+
@mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
|
247
|
+
a = nil
|
248
|
+
@mock.yield_back {|*a|}
|
249
|
+
a.should == [99]
|
250
|
+
@mock.rspec_verify
|
251
|
+
end
|
252
|
+
|
253
|
+
it "should yield one arg 3 times consecutively to blocks that take a variable number of arguments" do
|
254
|
+
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
|
255
|
+
and_yield(43).
|
256
|
+
and_yield("something fruity")
|
257
|
+
a = nil
|
258
|
+
b = []
|
259
|
+
@mock.yield_back {|*a| b << a}
|
260
|
+
b.should == [[99], [43], ["something fruity"]]
|
261
|
+
@mock.rspec_verify
|
262
|
+
end
|
263
|
+
|
264
|
+
it "should yield many args to blocks that take a variable number of arguments" do
|
265
|
+
@mock.should_receive(:yield_back).with(no_args()).once.and_yield(99, 27, "go")
|
266
|
+
a = nil
|
267
|
+
@mock.yield_back {|*a|}
|
268
|
+
a.should == [99, 27, "go"]
|
269
|
+
@mock.rspec_verify
|
270
|
+
end
|
271
|
+
|
272
|
+
it "should yield many args 3 times consecutively to blocks that take a variable number of arguments" do
|
273
|
+
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99, :green, "go").
|
274
|
+
and_yield("wait", :amber).
|
275
|
+
and_yield("stop", 12, :red)
|
276
|
+
a = nil
|
277
|
+
b = []
|
278
|
+
@mock.yield_back {|*a| b << a}
|
279
|
+
b.should == [[99, :green, "go"], ["wait", :amber], ["stop", 12, :red]]
|
280
|
+
@mock.rspec_verify
|
281
|
+
end
|
282
|
+
|
283
|
+
it "should yield single value" do
|
284
|
+
@mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
|
285
|
+
a = nil
|
286
|
+
@mock.yield_back {|a|}
|
287
|
+
a.should == 99
|
288
|
+
@mock.rspec_verify
|
289
|
+
end
|
290
|
+
|
291
|
+
it "should yield single value 3 times consecutively" do
|
292
|
+
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
|
293
|
+
and_yield(43).
|
294
|
+
and_yield("something fruity")
|
295
|
+
a = nil
|
296
|
+
b = []
|
297
|
+
@mock.yield_back {|a| b << a}
|
298
|
+
b.should == [99, 43, "something fruity"]
|
299
|
+
@mock.rspec_verify
|
300
|
+
end
|
301
|
+
|
302
|
+
it "should yield two values" do
|
303
|
+
@mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
|
304
|
+
a, b = nil
|
305
|
+
@mock.yield_back {|a,b|}
|
306
|
+
a.should == 'wha'
|
307
|
+
b.should == 'zup'
|
308
|
+
@mock.rspec_verify
|
309
|
+
end
|
310
|
+
|
311
|
+
it "should yield two values 3 times consecutively" do
|
312
|
+
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
|
313
|
+
and_yield('not', 'down').
|
314
|
+
and_yield(14, 65)
|
315
|
+
a, b = nil
|
316
|
+
c = []
|
317
|
+
@mock.yield_back {|a,b| c << [a, b]}
|
318
|
+
c.should == [['wha', 'zup'], ['not', 'down'], [14, 65]]
|
319
|
+
@mock.rspec_verify
|
320
|
+
end
|
321
|
+
|
322
|
+
it "should fail when calling yielding method with wrong arity" do
|
323
|
+
@mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
|
324
|
+
lambda {
|
325
|
+
@mock.yield_back {|a|}
|
326
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' yielded |\"wha\", \"zup\"| to block with arity of 1")
|
327
|
+
end
|
328
|
+
|
329
|
+
it "should fail when calling yielding method consecutively with wrong arity" do
|
330
|
+
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
|
331
|
+
and_yield('down').
|
332
|
+
and_yield(14, 65)
|
333
|
+
lambda {
|
334
|
+
a, b = nil
|
335
|
+
c = []
|
336
|
+
@mock.yield_back {|a,b| c << [a, b]}
|
337
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' yielded |\"down\"| to block with arity of 2")
|
338
|
+
end
|
339
|
+
|
340
|
+
it "should fail when calling yielding method without block" do
|
341
|
+
@mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
|
342
|
+
lambda {
|
343
|
+
@mock.yield_back
|
344
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' asked to yield |[\"wha\", \"zup\"]| but no block was passed")
|
345
|
+
end
|
346
|
+
|
347
|
+
it "should be able to mock send" do
|
348
|
+
@mock.should_receive(:send).with(any_args)
|
349
|
+
@mock.send 'hi'
|
350
|
+
@mock.rspec_verify
|
351
|
+
end
|
352
|
+
|
353
|
+
it "should be able to raise from method calling yielding mock" do
|
354
|
+
@mock.should_receive(:yield_me).and_yield 44
|
355
|
+
|
356
|
+
lambda {
|
357
|
+
@mock.yield_me do |x|
|
358
|
+
raise "Bang"
|
359
|
+
end
|
360
|
+
}.should raise_error(StandardError, "Bang")
|
361
|
+
|
362
|
+
@mock.rspec_verify
|
363
|
+
end
|
364
|
+
|
365
|
+
it "should clear expectations after verify" do
|
366
|
+
@mock.should_receive(:foobar)
|
367
|
+
@mock.foobar
|
368
|
+
@mock.rspec_verify
|
369
|
+
lambda {
|
370
|
+
@mock.foobar
|
371
|
+
}.should raise_error(MockExpectationError, "Mock 'test mock' received unexpected message :foobar with (no args)")
|
372
|
+
end
|
373
|
+
|
374
|
+
it "should restore objects to their original state on rspec_reset" do
|
375
|
+
mock = mock("this is a mock")
|
376
|
+
mock.should_receive(:blah)
|
377
|
+
mock.rspec_reset
|
378
|
+
mock.rspec_verify #should throw if reset didn't work
|
379
|
+
end
|
380
|
+
|
381
|
+
it "should work even after method_missing starts raising NameErrors instead of NoMethodErrors" do
|
382
|
+
# Object#method_missing throws either NameErrors or NoMethodErrors.
|
383
|
+
#
|
384
|
+
# On a fresh ruby program Object#method_missing:
|
385
|
+
# * raises a NoMethodError when called directly
|
386
|
+
# * raises a NameError when called indirectly
|
387
|
+
#
|
388
|
+
# Once Object#method_missing has been called at least once (on any object)
|
389
|
+
# it starts behaving differently:
|
390
|
+
# * raises a NameError when called directly
|
391
|
+
# * raises a NameError when called indirectly
|
392
|
+
#
|
393
|
+
# There was a bug in Mock#method_missing that relied on the fact
|
394
|
+
# that calling Object#method_missing directly raises a NoMethodError.
|
395
|
+
# This example tests that the bug doesn't exist anymore.
|
396
|
+
|
397
|
+
|
398
|
+
# Ensures that method_missing always raises NameErrors.
|
399
|
+
a_method_that_doesnt_exist rescue
|
400
|
+
|
401
|
+
|
402
|
+
@mock.should_receive(:foobar)
|
403
|
+
@mock.foobar
|
404
|
+
@mock.rspec_verify
|
405
|
+
|
406
|
+
lambda { @mock.foobar }.should_not raise_error(NameError)
|
407
|
+
lambda { @mock.foobar }.should raise_error(MockExpectationError)
|
408
|
+
end
|
409
|
+
|
410
|
+
it "should temporarily replace a method stub on a mock" do
|
411
|
+
@mock.stub!(:msg).and_return(:stub_value)
|
412
|
+
@mock.should_receive(:msg).with(:arg).and_return(:mock_value)
|
413
|
+
@mock.msg(:arg).should equal(:mock_value)
|
414
|
+
@mock.msg.should equal(:stub_value)
|
415
|
+
@mock.msg.should equal(:stub_value)
|
416
|
+
@mock.rspec_verify
|
417
|
+
end
|
418
|
+
|
419
|
+
it "should not require a different signature to replace a method stub" do
|
420
|
+
@mock.stub!(:msg).and_return(:stub_value)
|
421
|
+
@mock.should_receive(:msg).and_return(:mock_value)
|
422
|
+
@mock.msg(:arg).should equal(:mock_value)
|
423
|
+
@mock.msg.should equal(:stub_value)
|
424
|
+
@mock.msg.should equal(:stub_value)
|
425
|
+
@mock.rspec_verify
|
426
|
+
end
|
427
|
+
|
428
|
+
it "should raise an error when a previously stubbed method has a negative expectation" do
|
429
|
+
@mock.stub!(:msg).and_return(:stub_value)
|
430
|
+
@mock.should_not_receive(:msg).and_return(:mock_value)
|
431
|
+
lambda {@mock.msg(:arg)}.should raise_error(MockExpectationError)
|
432
|
+
end
|
433
|
+
|
434
|
+
it "should temporarily replace a method stub on a non-mock" do
|
435
|
+
non_mock = Object.new
|
436
|
+
non_mock.stub!(:msg).and_return(:stub_value)
|
437
|
+
non_mock.should_receive(:msg).with(:arg).and_return(:mock_value)
|
438
|
+
non_mock.msg(:arg).should equal(:mock_value)
|
439
|
+
non_mock.msg.should equal(:stub_value)
|
440
|
+
non_mock.msg.should equal(:stub_value)
|
441
|
+
non_mock.rspec_verify
|
442
|
+
end
|
443
|
+
|
444
|
+
it "should return the stubbed value when no new value specified" do
|
445
|
+
@mock.stub!(:msg).and_return(:stub_value)
|
446
|
+
@mock.should_receive(:msg)
|
447
|
+
@mock.msg.should equal(:stub_value)
|
448
|
+
@mock.rspec_verify
|
449
|
+
end
|
450
|
+
|
451
|
+
it "should not mess with the stub's yielded values when also mocked" do
|
452
|
+
@mock.stub!(:yield_back).and_yield(:stub_value)
|
453
|
+
@mock.should_receive(:yield_back).and_yield(:mock_value)
|
454
|
+
@mock.yield_back{|v| v.should == :mock_value }
|
455
|
+
@mock.yield_back{|v| v.should == :stub_value }
|
456
|
+
@mock.rspec_verify
|
457
|
+
end
|
458
|
+
|
459
|
+
it "should yield multiple values after a similar stub" do
|
460
|
+
File.stub!(:open).and_yield(:stub_value)
|
461
|
+
File.should_receive(:open).and_yield(:first_call).and_yield(:second_call)
|
462
|
+
yielded_args = []
|
463
|
+
File.open {|v| yielded_args << v }
|
464
|
+
yielded_args.should == [:first_call, :second_call]
|
465
|
+
File.open {|v| v.should == :stub_value }
|
466
|
+
File.rspec_verify
|
467
|
+
end
|
468
|
+
|
469
|
+
it "should assign stub return values" do
|
470
|
+
mock = Mock.new('name', :message => :response)
|
471
|
+
mock.message.should == :response
|
472
|
+
end
|
473
|
+
|
474
|
+
end
|
475
|
+
|
476
|
+
describe "a mock message receiving a block" do
|
477
|
+
before(:each) do
|
478
|
+
@mock = mock("mock")
|
479
|
+
@calls = 0
|
480
|
+
end
|
481
|
+
|
482
|
+
def add_call
|
483
|
+
@calls = @calls + 1
|
484
|
+
end
|
485
|
+
|
486
|
+
it "should call the block after #should_receive" do
|
487
|
+
@mock.should_receive(:foo) { add_call }
|
488
|
+
|
489
|
+
@mock.foo
|
490
|
+
|
491
|
+
@calls.should == 1
|
492
|
+
end
|
493
|
+
|
494
|
+
it "should call the block after #should_receive after a similar stub" do
|
495
|
+
@mock.stub!(:foo).and_return(:bar)
|
496
|
+
@mock.should_receive(:foo) { add_call }
|
497
|
+
|
498
|
+
@mock.foo
|
499
|
+
|
500
|
+
@calls.should == 1
|
501
|
+
end
|
502
|
+
|
503
|
+
it "should call the block after #once" do
|
504
|
+
@mock.should_receive(:foo).once { add_call }
|
505
|
+
|
506
|
+
@mock.foo
|
507
|
+
|
508
|
+
@calls.should == 1
|
509
|
+
end
|
510
|
+
|
511
|
+
it "should call the block after #twice" do
|
512
|
+
@mock.should_receive(:foo).twice { add_call }
|
513
|
+
|
514
|
+
@mock.foo
|
515
|
+
@mock.foo
|
516
|
+
|
517
|
+
@calls.should == 2
|
518
|
+
end
|
519
|
+
|
520
|
+
it "should call the block after #times" do
|
521
|
+
@mock.should_receive(:foo).exactly(10).times { add_call }
|
522
|
+
|
523
|
+
(1..10).each { @mock.foo }
|
524
|
+
|
525
|
+
@calls.should == 10
|
526
|
+
end
|
527
|
+
|
528
|
+
it "should call the block after #any_number_of_times" do
|
529
|
+
@mock.should_receive(:foo).any_number_of_times { add_call }
|
530
|
+
|
531
|
+
(1..7).each { @mock.foo }
|
532
|
+
|
533
|
+
@calls.should == 7
|
534
|
+
end
|
535
|
+
|
536
|
+
it "should call the block after #ordered" do
|
537
|
+
@mock.should_receive(:foo).ordered { add_call }
|
538
|
+
@mock.should_receive(:bar).ordered { add_call }
|
539
|
+
|
540
|
+
@mock.foo
|
541
|
+
@mock.bar
|
542
|
+
|
543
|
+
@calls.should == 2
|
544
|
+
end
|
545
|
+
end
|
546
|
+
|
547
|
+
describe 'string representation generated by #to_s' do
|
548
|
+
it 'should not contain < because that might lead to invalid HTML in some situations' do
|
549
|
+
mock = mock("Dog")
|
550
|
+
valid_html_str = "#{mock}"
|
551
|
+
valid_html_str.should_not include('<')
|
552
|
+
end
|
553
|
+
end
|
554
|
+
end
|
555
|
+
end
|