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,27 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../story_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Story
|
5
|
+
module Runner
|
6
|
+
describe ScenarioCollector do
|
7
|
+
it 'should construct scenarios with the supplied story' do
|
8
|
+
# given
|
9
|
+
story = stub_everything('story')
|
10
|
+
scenario_collector = ScenarioCollector.new(story)
|
11
|
+
|
12
|
+
# when
|
13
|
+
scenario_collector.Scenario 'scenario1' do end
|
14
|
+
scenario_collector.Scenario 'scenario2' do end
|
15
|
+
scenarios = scenario_collector.scenarios
|
16
|
+
|
17
|
+
# then
|
18
|
+
scenario_collector.should have(2).scenarios
|
19
|
+
scenarios.first.name.should == 'scenario1'
|
20
|
+
scenarios.first.story.should equal(story)
|
21
|
+
scenarios.last.name.should == 'scenario2'
|
22
|
+
scenarios.last.story.should equal(story)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,214 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../story_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Story
|
5
|
+
module Runner
|
6
|
+
describe ScenarioRunner do
|
7
|
+
it 'should run a scenario in its story' do
|
8
|
+
# given
|
9
|
+
world = stub_everything
|
10
|
+
scenario_runner = ScenarioRunner.new
|
11
|
+
$answer = nil
|
12
|
+
story = Story.new 'story', 'narrative' do
|
13
|
+
@answer = 42 # this should be available to the scenario
|
14
|
+
end
|
15
|
+
scenario = Scenario.new story, 'scenario' do
|
16
|
+
$answer = @answer
|
17
|
+
end
|
18
|
+
|
19
|
+
# when
|
20
|
+
scenario_runner.run(scenario, world)
|
21
|
+
|
22
|
+
# then
|
23
|
+
$answer.should == 42
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should allow scenarios to share methods' do
|
27
|
+
# given
|
28
|
+
world = stub_everything
|
29
|
+
$shared_invoked = 0
|
30
|
+
story = Story.new 'story', 'narrative' do
|
31
|
+
def shared
|
32
|
+
$shared_invoked += 1
|
33
|
+
end
|
34
|
+
end
|
35
|
+
scenario1 = Scenario.new story, 'scenario1' do
|
36
|
+
shared()
|
37
|
+
end
|
38
|
+
scenario2 = Scenario.new story, 'scenario2' do
|
39
|
+
shared()
|
40
|
+
end
|
41
|
+
scenario_runner = ScenarioRunner.new
|
42
|
+
|
43
|
+
# when
|
44
|
+
scenario_runner.run(scenario1, world)
|
45
|
+
scenario_runner.run(scenario2, world)
|
46
|
+
|
47
|
+
# then
|
48
|
+
$shared_invoked.should == 2
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should notify listeners when a scenario starts' do
|
52
|
+
# given
|
53
|
+
world = stub_everything
|
54
|
+
story = Story.new 'story', 'narrative' do end
|
55
|
+
scenario = Scenario.new story, 'scenario1' do
|
56
|
+
# succeeds
|
57
|
+
end
|
58
|
+
scenario_runner = ScenarioRunner.new
|
59
|
+
mock_listener1 = stub_everything('listener1')
|
60
|
+
mock_listener2 = stub_everything('listener2')
|
61
|
+
scenario_runner.add_listener(mock_listener1)
|
62
|
+
scenario_runner.add_listener(mock_listener2)
|
63
|
+
|
64
|
+
# expect
|
65
|
+
mock_listener1.should_receive(:scenario_started).with('story', 'scenario1')
|
66
|
+
mock_listener2.should_receive(:scenario_started).with('story', 'scenario1')
|
67
|
+
|
68
|
+
# when
|
69
|
+
scenario_runner.run(scenario, world)
|
70
|
+
|
71
|
+
# then
|
72
|
+
end
|
73
|
+
describe "when a scenario succeeds" do
|
74
|
+
before(:each) do
|
75
|
+
# given
|
76
|
+
@world = stub_everything('world')
|
77
|
+
@story = Story.new 'story', 'narrative' do end
|
78
|
+
@scenario = Scenario.new @story, 'scenario1' do
|
79
|
+
# succeeds
|
80
|
+
end
|
81
|
+
@scenario_runner = ScenarioRunner.new
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'should notify listeners' do
|
85
|
+
#given
|
86
|
+
mock_listener1 = stub_everything('listener1')
|
87
|
+
mock_listener2 = stub_everything('listener2')
|
88
|
+
@scenario_runner.add_listener(mock_listener1)
|
89
|
+
@scenario_runner.add_listener(mock_listener2)
|
90
|
+
|
91
|
+
# expect
|
92
|
+
mock_listener1.should_receive(:scenario_succeeded).with('story', 'scenario1')
|
93
|
+
mock_listener2.should_receive(:scenario_succeeded).with('story', 'scenario1')
|
94
|
+
|
95
|
+
# when
|
96
|
+
@scenario_runner.run(@scenario, @world)
|
97
|
+
|
98
|
+
# then
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should return true" do
|
102
|
+
#when
|
103
|
+
success = @scenario_runner.run(@scenario, @world)
|
104
|
+
|
105
|
+
#then
|
106
|
+
success.should == true
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe "when a scenario raises an error (other than a pending error)" do
|
111
|
+
before(:each) do
|
112
|
+
# given
|
113
|
+
@error = RuntimeError.new('oops')
|
114
|
+
@story = Story.new 'title', 'narrative' do end
|
115
|
+
@scenario = Scenario.new @story, 'scenario1' do
|
116
|
+
end
|
117
|
+
@scenario_runner = ScenarioRunner.new
|
118
|
+
@world = stub_everything
|
119
|
+
|
120
|
+
# expect
|
121
|
+
@world.should_receive(:errors).twice.and_return([@error, @error])
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'should notify listeners ONCE' do
|
125
|
+
#given
|
126
|
+
mock_listener = stub_everything('listener')
|
127
|
+
@scenario_runner.add_listener(mock_listener)
|
128
|
+
|
129
|
+
#expect
|
130
|
+
mock_listener.should_receive(:scenario_failed).with('title', 'scenario1', @error).once
|
131
|
+
|
132
|
+
# when
|
133
|
+
@scenario_runner.run @scenario, @world
|
134
|
+
|
135
|
+
# then
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should return false" do
|
139
|
+
# when
|
140
|
+
success = @scenario_runner.run @scenario, @world
|
141
|
+
|
142
|
+
# then
|
143
|
+
success.should == false
|
144
|
+
end
|
145
|
+
|
146
|
+
|
147
|
+
end
|
148
|
+
|
149
|
+
describe "when a scenario is pending" do
|
150
|
+
before(:each) do
|
151
|
+
# given
|
152
|
+
@pending_error = Spec::Example::ExamplePendingError.new('todo')
|
153
|
+
@story = Story.new 'title', 'narrative' do end
|
154
|
+
@scenario = Scenario.new @story, 'scenario1' do
|
155
|
+
end
|
156
|
+
@scenario_runner = ScenarioRunner.new
|
157
|
+
@world = stub_everything
|
158
|
+
|
159
|
+
# expect
|
160
|
+
@world.should_receive(:errors).twice.and_return([@pending_error, @pending_error])
|
161
|
+
end
|
162
|
+
|
163
|
+
it 'should notify listeners' do
|
164
|
+
#given
|
165
|
+
mock_listener = mock('listener')
|
166
|
+
@scenario_runner.add_listener(mock_listener)
|
167
|
+
|
168
|
+
# expect
|
169
|
+
mock_listener.should_receive(:scenario_started).with('title', 'scenario1')
|
170
|
+
mock_listener.should_receive(:scenario_pending).with('title', 'scenario1', 'todo').once
|
171
|
+
|
172
|
+
# when
|
173
|
+
@scenario_runner.run @scenario, @world
|
174
|
+
|
175
|
+
# then
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should return true" do
|
179
|
+
# when
|
180
|
+
success = @scenario_runner.run @scenario, @world
|
181
|
+
|
182
|
+
# then
|
183
|
+
success.should == true
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
describe "when a scenario has an empty body" do
|
188
|
+
before(:each) do
|
189
|
+
@story = Story.new 'title', 'narrative' do end
|
190
|
+
@scenario = Scenario.new @story, 'scenario'
|
191
|
+
@scenario_runner = ScenarioRunner.new
|
192
|
+
@world = stub_everything
|
193
|
+
end
|
194
|
+
|
195
|
+
it "should mark the scenario as pending" do
|
196
|
+
mock_listener = stub('listener', :scenario_started => true)
|
197
|
+
@scenario_runner.add_listener mock_listener
|
198
|
+
|
199
|
+
mock_listener.should_receive(:scenario_pending).with('title', 'scenario', '')
|
200
|
+
@scenario_runner.run @scenario, @world
|
201
|
+
end
|
202
|
+
|
203
|
+
it "should return true" do
|
204
|
+
# when
|
205
|
+
success = @scenario_runner.run @scenario, @world
|
206
|
+
|
207
|
+
# then
|
208
|
+
success.should == true
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
@@ -0,0 +1,143 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../story_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Story
|
5
|
+
module Runner
|
6
|
+
|
7
|
+
describe StoryMediator do
|
8
|
+
before(:each) do
|
9
|
+
$story_mediator_spec_value = nil
|
10
|
+
@step_group = StepGroup.new
|
11
|
+
@step_group.create_matcher(:given, "given") { $story_mediator_spec_value = "given matched" }
|
12
|
+
@step_group.create_matcher(:when, "when") { $story_mediator_spec_value = "when matched" }
|
13
|
+
@step_group.create_matcher(:then, "then") { $story_mediator_spec_value = "then matched" }
|
14
|
+
|
15
|
+
@scenario_runner = ScenarioRunner.new
|
16
|
+
@runner = StoryRunner.new @scenario_runner
|
17
|
+
@mediator = StoryMediator.new @step_group, @runner
|
18
|
+
end
|
19
|
+
|
20
|
+
def run_stories
|
21
|
+
@mediator.run_stories
|
22
|
+
@runner.run_stories
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should have no stories" do
|
26
|
+
@mediator.stories.should be_empty
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should create two stories" do
|
30
|
+
@mediator.create_story "story title", "story narrative"
|
31
|
+
@mediator.create_story "story title 2", "story narrative 2"
|
32
|
+
run_stories
|
33
|
+
|
34
|
+
@runner.should have(2).stories
|
35
|
+
@runner.stories.first.title.should == "story title"
|
36
|
+
@runner.stories.first.narrative.should == "story narrative"
|
37
|
+
@runner.stories.last.title.should == "story title 2"
|
38
|
+
@runner.stories.last.narrative.should == "story narrative 2"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should create a scenario" do
|
42
|
+
@mediator.create_story "title", "narrative"
|
43
|
+
@mediator.create_scenario "scenario name"
|
44
|
+
run_stories
|
45
|
+
|
46
|
+
@runner.should have(1).scenarios
|
47
|
+
@runner.scenarios.first.name.should == "scenario name"
|
48
|
+
@runner.scenarios.first.story.should == @runner.stories.first
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should create a given scenario step if one matches" do
|
52
|
+
pending("need to untangle the dark mysteries of the story runner - something needs to get stubbed here") do
|
53
|
+
story = @mediator.create_story "title", "narrative"
|
54
|
+
@mediator.create_scenario "previous scenario"
|
55
|
+
@mediator.create_scenario "current scenario"
|
56
|
+
@mediator.create_given_scenario "previous scenario"
|
57
|
+
run_stories
|
58
|
+
|
59
|
+
$story_mediator_spec_value.should == "previous scenario matched"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should create a given step if one matches" do
|
64
|
+
@mediator.create_story "title", "narrative"
|
65
|
+
@mediator.create_scenario "scenario"
|
66
|
+
@mediator.create_given "given"
|
67
|
+
run_stories
|
68
|
+
|
69
|
+
$story_mediator_spec_value.should == "given matched"
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should create a pending step if no given step matches" do
|
73
|
+
@mediator.create_story "title", "narrative"
|
74
|
+
@mediator.create_scenario "scenario"
|
75
|
+
@mediator.create_given "no match"
|
76
|
+
mock_listener = stub_everything("listener")
|
77
|
+
mock_listener.should_receive(:scenario_pending).with("title", "scenario", "Unimplemented step: no match")
|
78
|
+
@scenario_runner.add_listener mock_listener
|
79
|
+
run_stories
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should create a when step if one matches" do
|
83
|
+
@mediator.create_story "title", "narrative"
|
84
|
+
@mediator.create_scenario "scenario"
|
85
|
+
@mediator.create_when "when"
|
86
|
+
run_stories
|
87
|
+
|
88
|
+
$story_mediator_spec_value.should == "when matched"
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should create a pending step if no when step matches" do
|
92
|
+
@mediator.create_story "title", "narrative"
|
93
|
+
@mediator.create_scenario "scenario"
|
94
|
+
@mediator.create_when "no match"
|
95
|
+
mock_listener = stub_everything("listener")
|
96
|
+
mock_listener.should_receive(:scenario_pending).with("title", "scenario", "Unimplemented step: no match")
|
97
|
+
@scenario_runner.add_listener mock_listener
|
98
|
+
run_stories
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should create a then step if one matches" do
|
102
|
+
@mediator.create_story "title", "narrative"
|
103
|
+
@mediator.create_scenario "scenario"
|
104
|
+
@mediator.create_then "then"
|
105
|
+
run_stories
|
106
|
+
|
107
|
+
$story_mediator_spec_value.should == "then matched"
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should create a pending step if no 'then' step matches" do
|
111
|
+
@mediator.create_story "title", "narrative"
|
112
|
+
@mediator.create_scenario "scenario"
|
113
|
+
@mediator.create_then "no match"
|
114
|
+
mock_listener = stub_everything("listener")
|
115
|
+
mock_listener.should_receive(:scenario_pending).with("title", "scenario", "Unimplemented step: no match")
|
116
|
+
@scenario_runner.add_listener mock_listener
|
117
|
+
run_stories
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should pass options to the stories it creates" do
|
121
|
+
@mediator = StoryMediator.new @step_group, @runner, :foo => :bar
|
122
|
+
@mediator.create_story "story title", "story narrative"
|
123
|
+
|
124
|
+
run_stories
|
125
|
+
|
126
|
+
@runner.stories.first[:foo].should == :bar
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should description" do
|
130
|
+
@mediator = StoryMediator.new @step_group, @runner, :foo => :bar
|
131
|
+
@mediator.create_story "title", "narrative"
|
132
|
+
@mediator.create_scenario "scenario"
|
133
|
+
@mediator.create_given "something"
|
134
|
+
given = @mediator.last_step
|
135
|
+
@mediator.add_to_last " else"
|
136
|
+
given.name.should == "something else"
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
@@ -0,0 +1,401 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../story_helper'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Story
|
5
|
+
module Runner
|
6
|
+
|
7
|
+
describe StoryParser do
|
8
|
+
before(:each) do
|
9
|
+
@story_mediator = mock("story_mediator")
|
10
|
+
@parser = StoryParser.new(@story_mediator)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should parse no lines" do
|
14
|
+
@parser.parse([])
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should ignore text before the first Story: begins" do
|
18
|
+
@story_mediator.should_not_receive(:create_scenario)
|
19
|
+
@story_mediator.should_not_receive(:create_given)
|
20
|
+
@story_mediator.should_not_receive(:create_when)
|
21
|
+
@story_mediator.should_not_receive(:create_then)
|
22
|
+
@story_mediator.should_receive(:create_story).with("simple addition", "")
|
23
|
+
@parser.parse(["Here is a bunch of text", "about a calculator and all the things", "that it will do", "Story: simple addition"])
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should create a story" do
|
27
|
+
@story_mediator.should_receive(:create_story).with("simple addition", "")
|
28
|
+
@parser.parse(["Story: simple addition"])
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should create a story when line has leading spaces" do
|
32
|
+
@story_mediator.should_receive(:create_story).with("simple addition", "")
|
33
|
+
@parser.parse([" Story: simple addition"])
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should add a one line narrative to the story" do
|
37
|
+
@story_mediator.should_receive(:create_story).with("simple addition","narrative")
|
38
|
+
@parser.parse(["Story: simple addition","narrative"])
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should add a multi line narrative to the story" do
|
42
|
+
@story_mediator.should_receive(:create_story).with("simple addition","narrative line 1\nline 2\nline 3")
|
43
|
+
@parser.parse(["Story: simple addition","narrative line 1", "line 2", "line 3"])
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should exclude blank lines from the narrative" do
|
47
|
+
@story_mediator.should_receive(:create_story).with("simple addition","narrative line 1\nline 2")
|
48
|
+
@parser.parse(["Story: simple addition","narrative line 1", "", "line 2"])
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should exclude Scenario from the narrative" do
|
52
|
+
@story_mediator.should_receive(:create_story).with("simple addition","narrative line 1\nline 2")
|
53
|
+
@story_mediator.should_receive(:create_scenario)
|
54
|
+
@parser.parse(["Story: simple addition","narrative line 1", "line 2", "Scenario: add one plus one"])
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
describe StoryParser, "in Story state" do
|
60
|
+
before(:each) do
|
61
|
+
@story_mediator = mock("story_mediator")
|
62
|
+
@parser = StoryParser.new(@story_mediator)
|
63
|
+
@story_mediator.stub!(:create_story)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should create a second Story for Story" do
|
67
|
+
@story_mediator.should_receive(:create_story).with("number two","")
|
68
|
+
@parser.parse(["Story: s", "Story: number two"])
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should include And in the narrative" do
|
72
|
+
@story_mediator.should_receive(:create_story).with("s","And foo")
|
73
|
+
@story_mediator.should_receive(:create_scenario).with("bar")
|
74
|
+
@parser.parse(["Story: s", "And foo", "Scenario: bar"])
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should create a Scenario for Scenario" do
|
78
|
+
@story_mediator.should_receive(:create_scenario).with("number two")
|
79
|
+
@parser.parse(["Story: s", "Scenario: number two"])
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should include Given in the narrative" do
|
83
|
+
@story_mediator.should_receive(:create_story).with("s","Given foo")
|
84
|
+
@story_mediator.should_receive(:create_scenario).with("bar")
|
85
|
+
@parser.parse(["Story: s", "Given foo", "Scenario: bar"])
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should include Given: in the narrative" do
|
89
|
+
@story_mediator.should_receive(:create_story).with("s","Given: foo")
|
90
|
+
@story_mediator.should_receive(:create_scenario).with("bar")
|
91
|
+
@parser.parse(["Story: s", "Given: foo", "Scenario: bar"])
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should include When in the narrative" do
|
95
|
+
@story_mediator.should_receive(:create_story).with("s","When foo")
|
96
|
+
@story_mediator.should_receive(:create_scenario).with("bar")
|
97
|
+
@parser.parse(["Story: s", "When foo", "Scenario: bar"])
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should include Then in the narrative" do
|
101
|
+
@story_mediator.should_receive(:create_story).with("s","Then foo")
|
102
|
+
@story_mediator.should_receive(:create_scenario).with("bar")
|
103
|
+
@parser.parse(["Story: s", "Then foo", "Scenario: bar"])
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should include other in the story" do
|
107
|
+
@story_mediator.should_receive(:create_story).with("s","narrative")
|
108
|
+
@parser.parse(["Story: s", "narrative"])
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe StoryParser, "in Scenario state" do
|
113
|
+
before(:each) do
|
114
|
+
@story_mediator = mock("story_mediator")
|
115
|
+
@parser = StoryParser.new(@story_mediator)
|
116
|
+
@story_mediator.stub!(:create_story)
|
117
|
+
@story_mediator.stub!(:create_scenario)
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should create a Story for Story" do
|
121
|
+
@story_mediator.should_receive(:create_story).with("number two","")
|
122
|
+
@parser.parse(["Story: s", "Scenario: s", "Story: number two"])
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should create a Scenario for Scenario" do
|
126
|
+
@story_mediator.should_receive(:create_scenario).with("number two")
|
127
|
+
@parser.parse(["Story: s", "Scenario: s", "Scenario: number two"])
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should raise for And" do
|
131
|
+
lambda {
|
132
|
+
@parser.parse(["Story: s", "Scenario: s", "And second"])
|
133
|
+
}.should raise_error(IllegalStepError, /^Illegal attempt to create a And after a Scenario/)
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should create a Given for Given" do
|
137
|
+
@story_mediator.should_receive(:create_given).with("gift")
|
138
|
+
@parser.parse(["Story: s", "Scenario: s", "Given gift"])
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should create a Given for Given:" do
|
142
|
+
@story_mediator.should_receive(:create_given).with("gift")
|
143
|
+
@parser.parse(["Story: s", "Scenario: s", "Given: gift"])
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should create a GivenScenario for GivenScenario" do
|
147
|
+
@story_mediator.should_receive(:create_given_scenario).with("previous")
|
148
|
+
@parser.parse(["Story: s", "Scenario: s", "GivenScenario previous"])
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should create a GivenScenario for GivenScenario:" do
|
152
|
+
@story_mediator.should_receive(:create_given_scenario).with("previous")
|
153
|
+
@parser.parse(["Story: s", "Scenario: s", "GivenScenario: previous"])
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should transition to Given state after GivenScenario" do
|
157
|
+
@story_mediator.stub!(:create_given_scenario)
|
158
|
+
@parser.parse(["Story: s", "Scenario: s", "GivenScenario previous"])
|
159
|
+
@parser.instance_eval{@state}.should be_an_instance_of(StoryParser::GivenState)
|
160
|
+
end
|
161
|
+
|
162
|
+
it "should transition to Given state after GivenScenario:" do
|
163
|
+
@story_mediator.stub!(:create_given_scenario)
|
164
|
+
@parser.parse(["Story: s", "Scenario: s", "GivenScenario: previous"])
|
165
|
+
@parser.instance_eval{@state}.should be_an_instance_of(StoryParser::GivenState)
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should create a When for When" do
|
169
|
+
@story_mediator.should_receive(:create_when).with("ever")
|
170
|
+
@parser.parse(["Story: s", "Scenario: s", "When ever"])
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should create a When for When:" do
|
174
|
+
@story_mediator.should_receive(:create_when).with("ever")
|
175
|
+
@parser.parse(["Story: s", "Scenario: s", "When: ever"])
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should create a Then for Then" do
|
179
|
+
@story_mediator.should_receive(:create_then).with("and there")
|
180
|
+
@parser.parse(["Story: s", "Scenario: s", "Then and there"])
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should create a Then for Then:" do
|
184
|
+
@story_mediator.should_receive(:create_then).with("and there")
|
185
|
+
@parser.parse(["Story: s", "Scenario: s", "Then: and there"])
|
186
|
+
end
|
187
|
+
|
188
|
+
it "should ignore other" do
|
189
|
+
@parser.parse(["Story: s", "Scenario: s", "this is ignored"])
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
describe StoryParser, "in Given state" do
|
194
|
+
before(:each) do
|
195
|
+
@story_mediator = mock("story_mediator")
|
196
|
+
@parser = StoryParser.new(@story_mediator)
|
197
|
+
@story_mediator.stub!(:create_story)
|
198
|
+
@story_mediator.stub!(:create_scenario)
|
199
|
+
@story_mediator.should_receive(:create_given).with("first")
|
200
|
+
end
|
201
|
+
|
202
|
+
it "should create a Story for Story" do
|
203
|
+
@story_mediator.should_receive(:create_story).with("number two","")
|
204
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "Story: number two"])
|
205
|
+
end
|
206
|
+
|
207
|
+
it "should create a Scenario for Scenario" do
|
208
|
+
@story_mediator.should_receive(:create_scenario).with("number two")
|
209
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "Scenario: number two"])
|
210
|
+
end
|
211
|
+
|
212
|
+
it "should create a second Given for Given" do
|
213
|
+
@story_mediator.should_receive(:create_given).with("second")
|
214
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "Given second"])
|
215
|
+
end
|
216
|
+
|
217
|
+
it "should create a second Given for And" do
|
218
|
+
@story_mediator.should_receive(:create_given).with("second")
|
219
|
+
@parser.parse(["Story: s", "Scenario: s", "Given: first", "And second"])
|
220
|
+
end
|
221
|
+
|
222
|
+
it "should create a second Given for And:" do
|
223
|
+
@story_mediator.should_receive(:create_given).with("second")
|
224
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "And: second"])
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should create a When for When" do
|
228
|
+
@story_mediator.should_receive(:create_when).with("ever")
|
229
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When ever"])
|
230
|
+
end
|
231
|
+
|
232
|
+
it "should create a When for When:" do
|
233
|
+
@story_mediator.should_receive(:create_when).with("ever")
|
234
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When: ever"])
|
235
|
+
end
|
236
|
+
|
237
|
+
it "should create a Then for Then" do
|
238
|
+
@story_mediator.should_receive(:create_then).with("and there")
|
239
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "Then and there"])
|
240
|
+
end
|
241
|
+
|
242
|
+
it "should create a Then for Then:" do
|
243
|
+
@story_mediator.should_receive(:create_then).with("and there")
|
244
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "Then: and there"])
|
245
|
+
end
|
246
|
+
|
247
|
+
it "should ignore lines beginning with '#'" do
|
248
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "#this is ignored"])
|
249
|
+
end
|
250
|
+
|
251
|
+
it "should not ignore lines beginning with non-keywords" do
|
252
|
+
@story_mediator.should_receive(:add_to_last).with("\nthis is not ignored")
|
253
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "this is not ignored"])
|
254
|
+
end
|
255
|
+
|
256
|
+
end
|
257
|
+
|
258
|
+
describe StoryParser, "in When state" do
|
259
|
+
before(:each) do
|
260
|
+
@story_mediator = mock("story_mediator")
|
261
|
+
@parser = StoryParser.new(@story_mediator)
|
262
|
+
@story_mediator.stub!(:create_story)
|
263
|
+
@story_mediator.stub!(:create_scenario)
|
264
|
+
@story_mediator.should_receive(:create_given).with("first")
|
265
|
+
@story_mediator.should_receive(:create_when).with("else")
|
266
|
+
end
|
267
|
+
|
268
|
+
it "should create a Story for Story" do
|
269
|
+
@story_mediator.should_receive(:create_story).with("number two","")
|
270
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When: else", "Story: number two"])
|
271
|
+
end
|
272
|
+
|
273
|
+
it "should create a Scenario for Scenario" do
|
274
|
+
@story_mediator.should_receive(:create_scenario).with("number two")
|
275
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Scenario: number two"])
|
276
|
+
end
|
277
|
+
|
278
|
+
it "should create Given for Given" do
|
279
|
+
@story_mediator.should_receive(:create_given).with("second")
|
280
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Given second"])
|
281
|
+
end
|
282
|
+
|
283
|
+
it "should create Given for Given:" do
|
284
|
+
@story_mediator.should_receive(:create_given).with("second")
|
285
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Given: second"])
|
286
|
+
end
|
287
|
+
|
288
|
+
it "should create a second When for When" do
|
289
|
+
@story_mediator.should_receive(:create_when).with("ever")
|
290
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "When ever"])
|
291
|
+
end
|
292
|
+
|
293
|
+
it "should create a second When for When:" do
|
294
|
+
@story_mediator.should_receive(:create_when).with("ever")
|
295
|
+
@parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "When: ever"])
|
296
|
+
end
|
297
|
+
|
298
|
+
it "should create a second When for And" do
|
299
|
+
@story_mediator.should_receive(:create_when).with("ever")
|
300
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "And ever"])
|
301
|
+
end
|
302
|
+
|
303
|
+
it "should create a second When for And:" do
|
304
|
+
@story_mediator.should_receive(:create_when).with("ever")
|
305
|
+
@parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "And: ever"])
|
306
|
+
end
|
307
|
+
|
308
|
+
it "should create a Then for Then" do
|
309
|
+
@story_mediator.should_receive(:create_then).with("and there")
|
310
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then and there"])
|
311
|
+
end
|
312
|
+
|
313
|
+
it "should create a Then for Then:" do
|
314
|
+
@story_mediator.should_receive(:create_then).with("and there")
|
315
|
+
@parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "Then: and there"])
|
316
|
+
end
|
317
|
+
|
318
|
+
it "should ignore lines beginning with '#'" do
|
319
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "#this is ignored"])
|
320
|
+
end
|
321
|
+
|
322
|
+
it "should not ignore lines beginning with non-keywords" do
|
323
|
+
@story_mediator.should_receive(:add_to_last).with("\nthis is not ignored")
|
324
|
+
@parser.parse(["Story: s", "Scenario: s", "Given: first", "When else", "this is not ignored"])
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
describe StoryParser, "in Then state" do
|
329
|
+
before(:each) do
|
330
|
+
@story_mediator = mock("story_mediator")
|
331
|
+
@parser = StoryParser.new(@story_mediator)
|
332
|
+
@story_mediator.stub!(:create_story)
|
333
|
+
@story_mediator.stub!(:create_scenario)
|
334
|
+
@story_mediator.should_receive(:create_given).with("first")
|
335
|
+
@story_mediator.should_receive(:create_when).with("else")
|
336
|
+
@story_mediator.should_receive(:create_then).with("what")
|
337
|
+
end
|
338
|
+
|
339
|
+
it "should create a Story for Story" do
|
340
|
+
@story_mediator.should_receive(:create_story).with("number two","")
|
341
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "Story: number two"])
|
342
|
+
end
|
343
|
+
|
344
|
+
it "should create a Scenario for Scenario" do
|
345
|
+
@story_mediator.should_receive(:create_scenario).with("number two")
|
346
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "Scenario: number two"])
|
347
|
+
end
|
348
|
+
|
349
|
+
it "should create Given for Given" do
|
350
|
+
@story_mediator.should_receive(:create_given).with("second")
|
351
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "Given second"])
|
352
|
+
end
|
353
|
+
|
354
|
+
it "should create Given for Given:" do
|
355
|
+
@story_mediator.should_receive(:create_given).with("second")
|
356
|
+
@parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "Then: what", "Given: second"])
|
357
|
+
end
|
358
|
+
|
359
|
+
it "should create When for When" do
|
360
|
+
@story_mediator.should_receive(:create_when).with("ever")
|
361
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "When ever"])
|
362
|
+
end
|
363
|
+
|
364
|
+
it "should create When for When:" do
|
365
|
+
@story_mediator.should_receive(:create_when).with("ever")
|
366
|
+
@parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "Then: what", "When: ever"])
|
367
|
+
end
|
368
|
+
|
369
|
+
it "should create a Then for Then" do
|
370
|
+
@story_mediator.should_receive(:create_then).with("and there")
|
371
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "Then and there"])
|
372
|
+
end
|
373
|
+
|
374
|
+
it "should create a Then for Then:" do
|
375
|
+
@story_mediator.should_receive(:create_then).with("and there")
|
376
|
+
@parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "Then: what", "Then: and there"])
|
377
|
+
end
|
378
|
+
|
379
|
+
it "should create a second Then for And" do
|
380
|
+
@story_mediator.should_receive(:create_then).with("ever")
|
381
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "And ever"])
|
382
|
+
end
|
383
|
+
|
384
|
+
it "should create a second Then for And:" do
|
385
|
+
@story_mediator.should_receive(:create_then).with("ever")
|
386
|
+
@parser.parse(["Story: s", "Scenario: s", "Given: first", "When: else", "Then: what", "And: ever"])
|
387
|
+
end
|
388
|
+
|
389
|
+
|
390
|
+
it "should ignore lines beginning with '#'" do
|
391
|
+
@parser.parse(["Story: s", "Scenario: s", "Given first", "When else", "Then what", "#this is ignored"])
|
392
|
+
end
|
393
|
+
|
394
|
+
it "should not ignore lines beginning with non-keywords" do
|
395
|
+
@story_mediator.should_receive(:add_to_last).with("\nthis is not ignored")
|
396
|
+
@parser.parse(["Story: s", "Scenario: s", "Given: first", "When else", "Then what", "this is not ignored"])
|
397
|
+
end
|
398
|
+
end
|
399
|
+
end
|
400
|
+
end
|
401
|
+
end
|