deckshuffler 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.DS_Store +0 -0
- data/MIT-LICENSE +21 -0
- data/Rakefile +55 -0
- data/app/controllers/account_controller.rb +41 -0
- data/app/controllers/application.rb +27 -0
- data/app/controllers/board_controller.rb +15 -0
- data/app/controllers/capacities_controller.rb +52 -0
- data/app/controllers/card_sizes_controller.rb +47 -0
- data/app/controllers/card_types_controller.rb +47 -0
- data/app/controllers/cards_controller.rb +233 -0
- data/app/controllers/functional_sets_controller.rb +55 -0
- data/app/controllers/iteration_controller.rb +93 -0
- data/app/controllers/milestones_controller.rb +51 -0
- data/app/controllers/priorities_controller.rb +52 -0
- data/app/controllers/project_infos_controller.rb +40 -0
- data/app/helpers/account_helper.rb +2 -0
- data/app/helpers/application_helper.rb +39 -0
- data/app/helpers/board_helper.rb +2 -0
- data/app/helpers/capacities_helper.rb +2 -0
- data/app/helpers/card_sizes_helper.rb +2 -0
- data/app/helpers/card_types_helper.rb +2 -0
- data/app/helpers/cards_helper.rb +2 -0
- data/app/helpers/functional_sets_helper.rb +2 -0
- data/app/helpers/milestones_helper.rb +2 -0
- data/app/helpers/priorities_helper.rb +2 -0
- data/app/helpers/project_infos_helper.rb +5 -0
- data/app/models/capacity.rb +4 -0
- data/app/models/card.rb +64 -0
- data/app/models/card_size.rb +13 -0
- data/app/models/card_type.rb +13 -0
- data/app/models/functional_set.rb +5 -0
- data/app/models/milestone.rb +15 -0
- data/app/models/previous_card_owner.rb +6 -0
- data/app/models/priority.rb +14 -0
- data/app/models/project_info.rb +3 -0
- data/app/views/account/index.rhtml +56 -0
- data/app/views/account/login.rhtml +12 -0
- data/app/views/account/signup.rhtml +24 -0
- data/app/views/board/_card_summary.rhtml +24 -0
- data/app/views/board/_cards_column.rhtml +11 -0
- data/app/views/board/index.rhtml +30 -0
- data/app/views/capacities/edit.rhtml +11 -0
- data/app/views/capacities/list.rhtml +34 -0
- data/app/views/capacities/new.rhtml +10 -0
- data/app/views/capacities/show.rhtml +8 -0
- data/app/views/card_sizes/_form.rhtml +10 -0
- data/app/views/card_sizes/edit.rhtml +7 -0
- data/app/views/card_sizes/list.rhtml +27 -0
- data/app/views/card_sizes/new.rhtml +6 -0
- data/app/views/card_sizes/show.rhtml +8 -0
- data/app/views/card_types/_form.rhtml +7 -0
- data/app/views/card_types/edit.rhtml +7 -0
- data/app/views/card_types/list.rhtml +27 -0
- data/app/views/card_types/new.rhtml +6 -0
- data/app/views/card_types/show.rhtml +8 -0
- data/app/views/cards/_form.rhtml +104 -0
- data/app/views/cards/edit.rhtml +4 -0
- data/app/views/cards/import.rhtml +4 -0
- data/app/views/cards/list_per_functional_set.rhtml +37 -0
- data/app/views/cards/list_per_milestone.rhtml +36 -0
- data/app/views/cards/list_per_status.rhtml +40 -0
- data/app/views/cards/list_per_user.rhtml +38 -0
- data/app/views/cards/merge.rhtml +41 -0
- data/app/views/cards/raise_card.rhtml +4 -0
- data/app/views/cards/split.rhtml +4 -0
- data/app/views/functional_sets/_form.rhtml +10 -0
- data/app/views/functional_sets/edit.rhtml +4 -0
- data/app/views/functional_sets/list.rhtml +25 -0
- data/app/views/functional_sets/new.rhtml +4 -0
- data/app/views/iteration/bulk_edit_actual.rhtml +23 -0
- data/app/views/iteration/bulk_edit_planned.rhtml +19 -0
- data/app/views/layouts/account.rhtml +22 -0
- data/app/views/layouts/standard.rhtml +36 -0
- data/app/views/milestones/_form.rhtml +8 -0
- data/app/views/milestones/edit.rhtml +7 -0
- data/app/views/milestones/list.rhtml +23 -0
- data/app/views/milestones/new.rhtml +6 -0
- data/app/views/milestones/show.rhtml +8 -0
- data/app/views/priorities/_form.rhtml +9 -0
- data/app/views/priorities/edit.rhtml +7 -0
- data/app/views/priorities/list.rhtml +25 -0
- data/app/views/priorities/new.rhtml +6 -0
- data/app/views/priorities/show.rhtml +9 -0
- data/app/views/project_infos/_form.rhtml +18 -0
- data/app/views/project_infos/edit.rhtml +7 -0
- data/app/views/project_infos/list.rhtml +25 -0
- data/app/views/project_infos/new.rhtml +6 -0
- data/bin/deckshuffler +74 -0
- data/config/boot.rb +19 -0
- data/config/environment.rb +68 -0
- data/config/routes.rb +19 -0
- data/db/development_structure.sql +81 -0
- data/db/migrate/001_cards.rb +41 -0
- data/db/migrate/002_statuses.rb +45 -0
- data/db/migrate/003_card_sizes.rb +17 -0
- data/db/migrate/004_card_types.rb +15 -0
- data/db/migrate/005_functional_set.rb +23 -0
- data/db/migrate/006_project_info.rb +14 -0
- data/db/migrate/007_create_users.rb +18 -0
- data/db/migrate/008_capacities.rb +14 -0
- data/db/migrate/009_in_play_status.rb +48 -0
- data/db/migrate/010_milestones.rb +14 -0
- data/db/migrate/011_priorities.rb +18 -0
- data/db/migrate/012_card_dependencies.rb +21 -0
- data/db/migrate/013_authentication_independent.rb +15 -0
- data/db/schema.rb +104 -0
- data/doc/.DS_Store +0 -0
- data/doc/deckshuffler.svg +199 -0
- data/lib/authentication/authenticated_system.rb +162 -0
- data/lib/authentication/authenticated_test_helper.rb +113 -0
- data/lib/authentication/user.rb +67 -0
- data/lib/authentication/user_notifier.rb +22 -0
- data/lib/authentication/user_observer.rb +9 -0
- data/lib/cards_csv_exporter.rb +33 -0
- data/lib/cards_csv_importer.rb +87 -0
- data/lib/module_validator.rb +12 -0
- data/lib/status.rb +69 -0
- data/lib/transition_manager.rb +30 -0
- data/previous_failures.txt +0 -0
- data/public/.DS_Store +0 -0
- data/public/.htaccess +41 -0
- data/public/404.html +8 -0
- data/public/500.html +8 -0
- data/public/dispatch.cgi +10 -0
- data/public/dispatch.fcgi +29 -0
- data/public/dispatch.rb +10 -0
- data/public/favicon.ico +0 -0
- data/public/images/.DS_Store +0 -0
- data/public/images/deckshuffler.png +0 -0
- data/public/javascripts/controls.js +750 -0
- data/public/javascripts/dragdrop.js +584 -0
- data/public/javascripts/effects.js +854 -0
- data/public/javascripts/prototype.js +1785 -0
- data/public/robots.txt +1 -0
- data/public/stylesheets/deckshuffler.css +142 -0
- data/public/stylesheets/scaffold.css +74 -0
- data/script/about +3 -0
- data/script/breakpointer +3 -0
- data/script/console +3 -0
- data/script/destroy +3 -0
- data/script/generate +3 -0
- data/script/performance/benchmarker +3 -0
- data/script/performance/profiler +3 -0
- data/script/plugin +3 -0
- data/script/process/reaper +3 -0
- data/script/process/spawner +3 -0
- data/script/process/spinner +3 -0
- data/script/runner +3 -0
- data/script/server +3 -0
- data/script/spec +4 -0
- data/script/spec_server +86 -0
- data/spec/controllers/cards_controller_spec.rb +98 -0
- data/spec/lib/cards_csv_exporter_spec.rb +86 -0
- data/spec/lib/cards_csv_importer_spec.rb +184 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +23 -0
- data/test/.DS_Store +0 -0
- data/test/fixtures/capacities.yml +5 -0
- data/test/fixtures/card_sizes.yml +6 -0
- data/test/fixtures/card_types.yml +5 -0
- data/test/fixtures/cards.yml +17 -0
- data/test/fixtures/functional_sets.yml +5 -0
- data/test/fixtures/milestones.yml +5 -0
- data/test/fixtures/priorities.yml +7 -0
- data/test/fixtures/project_infos.yml +5 -0
- data/test/fixtures/users.yml +17 -0
- data/test/functional/.DS_Store +0 -0
- data/test/functional/account_controller_test.rb +129 -0
- data/test/functional/board_controller_test.rb +28 -0
- data/test/functional/capacities_controller_test.rb +37 -0
- data/test/functional/cards_controller_test.rb +268 -0
- data/test/functional/functional_sets_controller_test.rb +27 -0
- data/test/functional/project_infos_controller_test.rb +38 -0
- data/test/test_helper.rb +30 -0
- data/test/unit/.DS_Store +0 -0
- data/test/unit/capacity_test.rb +14 -0
- data/test/unit/card_size_test.rb +21 -0
- data/test/unit/card_test.rb +51 -0
- data/test/unit/card_type_test.rb +20 -0
- data/test/unit/milestone_test.rb +20 -0
- data/test/unit/priority_test.rb +20 -0
- data/test/unit/status_test.rb +93 -0
- data/test/unit/transition_manager_test.rb +142 -0
- data/test/unit/user_notifier_test.rb +32 -0
- data/test/unit/user_test.rb +75 -0
- data/vendor/plugins/acts_as_authenticated/CHANGELOG +86 -0
- data/vendor/plugins/acts_as_authenticated/README +20 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/USAGE +1 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/authenticated_generator.rb +102 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/authenticated_system.rb +131 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/authenticated_test_helper.rb +113 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/controller.rb +43 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/fixtures.yml +17 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/functional_test.rb +129 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/helper.rb +2 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/index.rhtml +56 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/login.rhtml +14 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/migration.rb +18 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/model.rb +64 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/signup.rhtml +16 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/unit_test.rb +75 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/USAGE +1 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/authenticated_mailer_generator.rb +27 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/templates/activation.rhtml +3 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/templates/notifier.rb +22 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/templates/notifier_test.rb +27 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/templates/observer.rb +9 -0
- data/vendor/plugins/acts_as_authenticated/generators/authenticated_mailer/templates/signup_notification.rhtml +8 -0
- data/vendor/plugins/acts_as_authenticated/install.rb +1 -0
- data/vendor/plugins/rspec/CHANGES +963 -0
- data/vendor/plugins/rspec/MIT-LICENSE +20 -0
- data/vendor/plugins/rspec/README +75 -0
- data/vendor/plugins/rspec/Rakefile +273 -0
- data/vendor/plugins/rspec/TODO +54 -0
- data/vendor/plugins/rspec/UPGRADE +31 -0
- data/vendor/plugins/rspec/autotest/discover.rb +6 -0
- data/vendor/plugins/rspec/autotest/rspec.rb +1 -0
- data/vendor/plugins/rspec/bin/spec +3 -0
- data/vendor/plugins/rspec/bin/spec_translator +8 -0
- data/vendor/plugins/rspec/examples/auto_spec_description_example.rb +19 -0
- data/vendor/plugins/rspec/examples/before_and_after_example.rb +40 -0
- data/vendor/plugins/rspec/examples/behave_as_example.rb +45 -0
- data/vendor/plugins/rspec/examples/custom_expectation_matchers.rb +54 -0
- data/vendor/plugins/rspec/examples/custom_formatter.rb +12 -0
- data/vendor/plugins/rspec/examples/dynamic_spec.rb +9 -0
- data/vendor/plugins/rspec/examples/file_accessor.rb +19 -0
- data/vendor/plugins/rspec/examples/file_accessor_spec.rb +38 -0
- data/vendor/plugins/rspec/examples/greeter_spec.rb +31 -0
- data/vendor/plugins/rspec/examples/helper_method_example.rb +11 -0
- data/vendor/plugins/rspec/examples/io_processor.rb +8 -0
- data/vendor/plugins/rspec/examples/io_processor_spec.rb +21 -0
- data/vendor/plugins/rspec/examples/legacy_spec.rb +11 -0
- data/vendor/plugins/rspec/examples/mocking_example.rb +27 -0
- data/vendor/plugins/rspec/examples/multi_threaded_behaviour_runner.rb +27 -0
- data/vendor/plugins/rspec/examples/partial_mock_example.rb +28 -0
- data/vendor/plugins/rspec/examples/pending_example.rb +20 -0
- data/vendor/plugins/rspec/examples/predicate_example.rb +27 -0
- data/vendor/plugins/rspec/examples/priority.txt +1 -0
- data/vendor/plugins/rspec/examples/shared_behaviours_example.rb +39 -0
- data/vendor/plugins/rspec/examples/spec_and_test_together.rb +20 -0
- data/vendor/plugins/rspec/examples/spec_helper.rb +3 -0
- data/vendor/plugins/rspec/examples/stack.rb +36 -0
- data/vendor/plugins/rspec/examples/stack_spec.rb +97 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/.loadpath +5 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/README.txt +21 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/everything.rb +6 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/examples/examples.rb +3 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/kill_a_cell.rb +24 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/stories.rb +5 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/stories.txt +22 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/life.rb +3 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/life/game.rb +23 -0
- data/vendor/plugins/rspec/examples/story/game-of-life/life/grid.rb +43 -0
- data/vendor/plugins/rspec/examples/stubbing_example.rb +69 -0
- data/vendor/plugins/rspec/examples/test_case_adapter_example.rb +26 -0
- data/vendor/plugins/rspec/failing_examples/diffing_spec.rb +36 -0
- data/vendor/plugins/rspec/failing_examples/failure_in_setup.rb +10 -0
- data/vendor/plugins/rspec/failing_examples/failure_in_teardown.rb +10 -0
- data/vendor/plugins/rspec/failing_examples/mocking_example.rb +40 -0
- data/vendor/plugins/rspec/failing_examples/mocking_with_flexmock.rb +26 -0
- data/vendor/plugins/rspec/failing_examples/mocking_with_mocha.rb +25 -0
- data/vendor/plugins/rspec/failing_examples/mocking_with_rr.rb +27 -0
- data/vendor/plugins/rspec/failing_examples/partial_mock_example.rb +20 -0
- data/vendor/plugins/rspec/failing_examples/predicate_example.rb +29 -0
- data/vendor/plugins/rspec/failing_examples/raising_example.rb +47 -0
- data/vendor/plugins/rspec/failing_examples/spec_helper.rb +3 -0
- data/vendor/plugins/rspec/failing_examples/syntax_error_example.rb +7 -0
- data/vendor/plugins/rspec/failing_examples/team_spec.rb +44 -0
- data/vendor/plugins/rspec/failing_examples/timeout_behaviour.rb +7 -0
- data/vendor/plugins/rspec/init.rb +3 -0
- data/vendor/plugins/rspec/lib/autotest/discover.rb +3 -0
- data/vendor/plugins/rspec/lib/autotest/rspec.rb +94 -0
- data/vendor/plugins/rspec/lib/spec.rb +12 -0
- data/vendor/plugins/rspec/lib/spec/dsl.rb +16 -0
- data/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb +183 -0
- data/vendor/plugins/rspec/lib/spec/dsl/behaviour_description.rb +85 -0
- data/vendor/plugins/rspec/lib/spec/dsl/behaviour_factory.rb +59 -0
- data/vendor/plugins/rspec/lib/spec/dsl/configuration.rb +137 -0
- data/vendor/plugins/rspec/lib/spec/dsl/errors.rb +9 -0
- data/vendor/plugins/rspec/lib/spec/dsl/example.rb +7 -0
- data/vendor/plugins/rspec/lib/spec/dsl/example_definition.rb +32 -0
- data/vendor/plugins/rspec/lib/spec/dsl/example_matcher.rb +38 -0
- data/vendor/plugins/rspec/lib/spec/dsl/example_module.rb +198 -0
- data/vendor/plugins/rspec/lib/spec/dsl/example_runner.rb +147 -0
- data/vendor/plugins/rspec/lib/spec/dsl/example_suite.rb +110 -0
- data/vendor/plugins/rspec/lib/spec/dsl/pending.rb +18 -0
- data/vendor/plugins/rspec/lib/spec/dsl/shared_behaviour.rb +52 -0
- data/vendor/plugins/rspec/lib/spec/dsl/should_raise_handler.rb +64 -0
- data/vendor/plugins/rspec/lib/spec/expectations.rb +56 -0
- data/vendor/plugins/rspec/lib/spec/expectations/differs/default.rb +66 -0
- data/vendor/plugins/rspec/lib/spec/expectations/errors.rb +6 -0
- data/vendor/plugins/rspec/lib/spec/expectations/extensions.rb +2 -0
- data/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb +71 -0
- data/vendor/plugins/rspec/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/vendor/plugins/rspec/lib/spec/expectations/handler.rb +52 -0
- data/vendor/plugins/rspec/lib/spec/extensions.rb +2 -0
- data/vendor/plugins/rspec/lib/spec/extensions/main.rb +51 -0
- data/vendor/plugins/rspec/lib/spec/extensions/object.rb +10 -0
- data/vendor/plugins/rspec/lib/spec/matchers.rb +153 -0
- data/vendor/plugins/rspec/lib/spec/matchers/be.rb +206 -0
- data/vendor/plugins/rspec/lib/spec/matchers/be_close.rb +37 -0
- data/vendor/plugins/rspec/lib/spec/matchers/change.rb +120 -0
- data/vendor/plugins/rspec/lib/spec/matchers/eql.rb +43 -0
- data/vendor/plugins/rspec/lib/spec/matchers/equal.rb +43 -0
- data/vendor/plugins/rspec/lib/spec/matchers/has.rb +44 -0
- data/vendor/plugins/rspec/lib/spec/matchers/have.rb +142 -0
- data/vendor/plugins/rspec/lib/spec/matchers/include.rb +70 -0
- data/vendor/plugins/rspec/lib/spec/matchers/match.rb +41 -0
- data/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb +73 -0
- data/vendor/plugins/rspec/lib/spec/matchers/raise_error.rb +105 -0
- data/vendor/plugins/rspec/lib/spec/matchers/respond_to.rb +45 -0
- data/vendor/plugins/rspec/lib/spec/matchers/satisfy.rb +47 -0
- data/vendor/plugins/rspec/lib/spec/matchers/simple_matcher.rb +27 -0
- data/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb +73 -0
- data/vendor/plugins/rspec/lib/spec/mocks.rb +211 -0
- data/vendor/plugins/rspec/lib/spec/mocks/argument_constraint_matchers.rb +27 -0
- data/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb +183 -0
- data/vendor/plugins/rspec/lib/spec/mocks/error_generator.rb +84 -0
- data/vendor/plugins/rspec/lib/spec/mocks/errors.rb +10 -0
- data/vendor/plugins/rspec/lib/spec/mocks/extensions/object.rb +3 -0
- data/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb +254 -0
- data/vendor/plugins/rspec/lib/spec/mocks/methods.rb +39 -0
- data/vendor/plugins/rspec/lib/spec/mocks/mock.rb +37 -0
- data/vendor/plugins/rspec/lib/spec/mocks/order_group.rb +29 -0
- data/vendor/plugins/rspec/lib/spec/mocks/proxy.rb +170 -0
- data/vendor/plugins/rspec/lib/spec/mocks/space.rb +28 -0
- data/vendor/plugins/rspec/lib/spec/mocks/spec_methods.rb +37 -0
- data/vendor/plugins/rspec/lib/spec/rake/spectask.rb +224 -0
- data/vendor/plugins/rspec/lib/spec/rake/verify_rcov.rb +52 -0
- data/vendor/plugins/rspec/lib/spec/runner.rb +164 -0
- data/vendor/plugins/rspec/lib/spec/runner/backtrace_tweaker.rb +57 -0
- data/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb +56 -0
- data/vendor/plugins/rspec/lib/spec/runner/command_line.rb +39 -0
- data/vendor/plugins/rspec/lib/spec/runner/drb_command_line.rb +20 -0
- data/vendor/plugins/rspec/lib/spec/runner/extensions/object.rb +32 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter.rb +9 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/base_formatter.rb +77 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/base_text_formatter.rb +128 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/failing_behaviours_formatter.rb +29 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb +22 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/html_formatter.rb +322 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb +31 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/rdoc_formatter.rb +24 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/vendor/plugins/rspec/lib/spec/runner/formatter/specdoc_formatter.rb +29 -0
- data/vendor/plugins/rspec/lib/spec/runner/heckle_runner.rb +72 -0
- data/vendor/plugins/rspec/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
- data/vendor/plugins/rspec/lib/spec/runner/option_parser.rb +222 -0
- data/vendor/plugins/rspec/lib/spec/runner/options.rb +223 -0
- data/vendor/plugins/rspec/lib/spec/runner/reporter.rb +137 -0
- data/vendor/plugins/rspec/lib/spec/runner/spec_parser.rb +53 -0
- data/vendor/plugins/rspec/lib/spec/story.rb +10 -0
- data/vendor/plugins/rspec/lib/spec/story/documenter.rb +1 -0
- data/vendor/plugins/rspec/lib/spec/story/documenter/plain_text_documenter.rb +43 -0
- data/vendor/plugins/rspec/lib/spec/story/extensions.rb +1 -0
- data/vendor/plugins/rspec/lib/spec/story/extensions/main.rb +13 -0
- data/vendor/plugins/rspec/lib/spec/story/given_scenario.rb +14 -0
- data/vendor/plugins/rspec/lib/spec/story/reporter.rb +1 -0
- data/vendor/plugins/rspec/lib/spec/story/reporter/plain_text_reporter.rb +60 -0
- data/vendor/plugins/rspec/lib/spec/story/runner.rb +49 -0
- data/vendor/plugins/rspec/lib/spec/story/runner/scenario_collector.rb +18 -0
- data/vendor/plugins/rspec/lib/spec/story/runner/scenario_runner.rb +43 -0
- data/vendor/plugins/rspec/lib/spec/story/runner/story_runner.rb +65 -0
- data/vendor/plugins/rspec/lib/spec/story/scenario.rb +14 -0
- data/vendor/plugins/rspec/lib/spec/story/simple_step.rb +17 -0
- data/vendor/plugins/rspec/lib/spec/story/step_mother.rb +31 -0
- data/vendor/plugins/rspec/lib/spec/story/story.rb +22 -0
- data/vendor/plugins/rspec/lib/spec/story/world.rb +87 -0
- data/vendor/plugins/rspec/lib/spec/test.rb +9 -0
- data/vendor/plugins/rspec/lib/spec/test/unit/autorunner.rb +6 -0
- data/vendor/plugins/rspec/lib/spec/test/unit/example.rb +15 -0
- data/vendor/plugins/rspec/lib/spec/test/unit/example_suite.rb +11 -0
- data/vendor/plugins/rspec/lib/spec/test/unit/rspectestresult.rb +5 -0
- data/vendor/plugins/rspec/lib/spec/test/unit/ui/console/testrunner.rb +18 -0
- data/vendor/plugins/rspec/lib/spec/test/unit/ui/testrunnermediator.rb +10 -0
- data/vendor/plugins/rspec/lib/spec/test_case_adapter.rb +10 -0
- data/vendor/plugins/rspec/lib/spec/translator.rb +114 -0
- data/vendor/plugins/rspec/lib/spec/version.rb +23 -0
- data/vendor/plugins/rspec/plugins/mock_frameworks/flexmock.rb +23 -0
- data/vendor/plugins/rspec/plugins/mock_frameworks/mocha.rb +19 -0
- data/vendor/plugins/rspec/plugins/mock_frameworks/rr.rb +21 -0
- data/vendor/plugins/rspec/plugins/mock_frameworks/rspec.rb +18 -0
- data/vendor/plugins/rspec/rake_tasks/examples.rake +7 -0
- data/vendor/plugins/rspec/rake_tasks/examples_rdoc.rake +8 -0
- data/vendor/plugins/rspec/rake_tasks/examples_with_rcov.rake +9 -0
- data/vendor/plugins/rspec/rake_tasks/failing_examples_with_html.rake +9 -0
- data/vendor/plugins/rspec/rake_tasks/verify_rcov.rake +7 -0
- data/vendor/plugins/rspec/spec.opts +6 -0
- data/vendor/plugins/rspec/spec/README.jruby +14 -0
- data/vendor/plugins/rspec/spec/autotest/discover_spec.rb +19 -0
- data/vendor/plugins/rspec/spec/autotest/rspec_spec.rb +264 -0
- data/vendor/plugins/rspec/spec/autotest_helper.rb +5 -0
- data/vendor/plugins/rspec/spec/rspec_suite.rb +6 -0
- data/vendor/plugins/rspec/spec/spec/dsl/behaviour_description_spec.rb +97 -0
- data/vendor/plugins/rspec/spec/spec/dsl/behaviour_factory_spec.rb +22 -0
- data/vendor/plugins/rspec/spec/spec/dsl/configuration_spec.rb +61 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_class_definition_spec.rb +48 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_definition_class_spec.rb +23 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_definition_spec.rb +17 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_factory_spec.rb +69 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_instance_spec.rb +242 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_matcher_spec.rb +91 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_should_raise_spec.rb +164 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_spec.rb +399 -0
- data/vendor/plugins/rspec/spec/spec/dsl/example_suite_spec.rb +617 -0
- data/vendor/plugins/rspec/spec/spec/dsl/pending_module_spec.rb +31 -0
- data/vendor/plugins/rspec/spec/spec/dsl/predicate_matcher_spec.rb +21 -0
- data/vendor/plugins/rspec/spec/spec/dsl/shared_behaviour_spec.rb +248 -0
- data/vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb +109 -0
- data/vendor/plugins/rspec/spec/spec/expectations/extensions/object_spec.rb +107 -0
- data/vendor/plugins/rspec/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/vendor/plugins/rspec/spec/spec/extensions/main_spec.rb +33 -0
- data/vendor/plugins/rspec/spec/spec/matchers/be_close_spec.rb +39 -0
- data/vendor/plugins/rspec/spec/spec/matchers/be_spec.rb +209 -0
- data/vendor/plugins/rspec/spec/spec/matchers/change_spec.rb +232 -0
- data/vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb +157 -0
- data/vendor/plugins/rspec/spec/spec/matchers/eql_spec.rb +28 -0
- data/vendor/plugins/rspec/spec/spec/matchers/equal_spec.rb +28 -0
- data/vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb +75 -0
- data/vendor/plugins/rspec/spec/spec/matchers/handler_spec.rb +129 -0
- data/vendor/plugins/rspec/spec/spec/matchers/has_spec.rb +37 -0
- data/vendor/plugins/rspec/spec/spec/matchers/have_spec.rb +272 -0
- data/vendor/plugins/rspec/spec/spec/matchers/include_spec.rb +45 -0
- data/vendor/plugins/rspec/spec/spec/matchers/match_spec.rb +37 -0
- data/vendor/plugins/rspec/spec/spec/matchers/matcher_methods_spec.rb +78 -0
- data/vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb +24 -0
- data/vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb +158 -0
- data/vendor/plugins/rspec/spec/spec/matchers/raise_error_spec.rb +185 -0
- data/vendor/plugins/rspec/spec/spec/matchers/respond_to_spec.rb +54 -0
- data/vendor/plugins/rspec/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/vendor/plugins/rspec/spec/spec/matchers/simple_matcher_spec.rb +26 -0
- data/vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb +54 -0
- data/vendor/plugins/rspec/spec/spec/mocks/any_number_of_times_spec.rb +29 -0
- data/vendor/plugins/rspec/spec/spec/mocks/argument_expectation_spec.rb +23 -0
- data/vendor/plugins/rspec/spec/spec/mocks/at_least_spec.rb +97 -0
- data/vendor/plugins/rspec/spec/spec/mocks/at_most_spec.rb +93 -0
- data/vendor/plugins/rspec/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/vendor/plugins/rspec/spec/spec/mocks/bug_report_11545_spec.rb +31 -0
- data/vendor/plugins/rspec/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/vendor/plugins/rspec/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/vendor/plugins/rspec/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +115 -0
- data/vendor/plugins/rspec/spec/spec/mocks/mock_ordering_spec.rb +84 -0
- data/vendor/plugins/rspec/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb +450 -0
- data/vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/vendor/plugins/rspec/spec/spec/mocks/null_object_mock_spec.rb +40 -0
- data/vendor/plugins/rspec/spec/spec/mocks/once_counts_spec.rb +53 -0
- data/vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb +42 -0
- data/vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb +106 -0
- data/vendor/plugins/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
- data/vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +154 -0
- data/vendor/plugins/rspec/spec/spec/mocks/precise_counts_spec.rb +52 -0
- data/vendor/plugins/rspec/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb +215 -0
- data/vendor/plugins/rspec/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb +12 -0
- data/vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb +140 -0
- data/vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb +92 -0
- data/vendor/plugins/rspec/spec/spec/runner/empty_file.txt +0 -0
- data/vendor/plugins/rspec/spec/spec/runner/examples.txt +2 -0
- data/vendor/plugins/rspec/spec/spec/runner/execution_context_spec.rb +31 -0
- data/vendor/plugins/rspec/spec/spec/runner/failed.txt +3 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +41 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +30 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +375 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html +371 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatter_spec.rb +54 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +21 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +39 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +110 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +21 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_spec.rb +48 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb +11 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +21 -0
- data/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb +64 -0
- data/vendor/plugins/rspec/spec/spec/runner/heckle_runner_spec.rb +62 -0
- data/vendor/plugins/rspec/spec/spec/runner/heckler_spec.rb +13 -0
- data/vendor/plugins/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/vendor/plugins/rspec/spec/spec/runner/object_ext_spec.rb +11 -0
- data/vendor/plugins/rspec/spec/spec/runner/option_parser_spec.rb +356 -0
- data/vendor/plugins/rspec/spec/spec/runner/options_spec.rb +255 -0
- data/vendor/plugins/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +56 -0
- data/vendor/plugins/rspec/spec/spec/runner/reporter_spec.rb +216 -0
- data/vendor/plugins/rspec/spec/spec/runner/spec.opts +2 -0
- data/vendor/plugins/rspec/spec/spec/runner/spec_parser_spec.rb +124 -0
- data/vendor/plugins/rspec/spec/spec/runner/spec_spaced.opts +2 -0
- data/vendor/plugins/rspec/spec/spec/runner_spec.rb +11 -0
- data/vendor/plugins/rspec/spec/spec/spec_classes.rb +123 -0
- data/vendor/plugins/rspec/spec/spec/story/builders.rb +46 -0
- data/vendor/plugins/rspec/spec/spec/story/documenter/plain_text_documenter_spec.rb +100 -0
- data/vendor/plugins/rspec/spec/spec/story/extensions_spec.rb +14 -0
- data/vendor/plugins/rspec/spec/spec/story/given_scenario_spec.rb +27 -0
- data/vendor/plugins/rspec/spec/spec/story/reporter/plain_text_reporter_spec.rb +114 -0
- data/vendor/plugins/rspec/spec/spec/story/rspec_adapter.rb +49 -0
- data/vendor/plugins/rspec/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
- data/vendor/plugins/rspec/spec/spec/story/runner/scenario_runner_spec.rb +145 -0
- data/vendor/plugins/rspec/spec/spec/story/runner/story_runner_spec.rb +247 -0
- data/vendor/plugins/rspec/spec/spec/story/runner_spec.rb +64 -0
- data/vendor/plugins/rspec/spec/spec/story/scenario_spec.rb +20 -0
- data/vendor/plugins/rspec/spec/spec/story/simple_step_spec.rb +37 -0
- data/vendor/plugins/rspec/spec/spec/story/step_mother_spec.rb +59 -0
- data/vendor/plugins/rspec/spec/spec/story/story_helper.rb +3 -0
- data/vendor/plugins/rspec/spec/spec/story/story_spec.rb +45 -0
- data/vendor/plugins/rspec/spec/spec/story/world_spec.rb +406 -0
- data/vendor/plugins/rspec/spec/spec/test/unit/autorunner_test.rb +12 -0
- data/vendor/plugins/rspec/spec/spec/test/unit/sample_spec_test.rb +28 -0
- data/vendor/plugins/rspec/spec/spec/test/unit/spec_helper.rb +4 -0
- data/vendor/plugins/rspec/spec/spec/test/unit/test_unit_and_rspec_spec.rb +28 -0
- data/vendor/plugins/rspec/spec/spec/translator_spec.rb +264 -0
- data/vendor/plugins/rspec/spec/spec_helper.rb +56 -0
- data/vendor/plugins/rspec_on_rails/MIT-LICENSE +31 -0
- data/vendor/plugins/rspec_on_rails/README +1 -0
- data/vendor/plugins/rspec_on_rails/Rakefile +9 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/CHANGES +1 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/rspec_generator.rb +34 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/all_stories.rb +4 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/previous_failures.txt +0 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/script/spec +4 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/script/spec_server +103 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/spec.opts +6 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/spec_helper.rb +23 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec/templates/stories_helper.rb +3 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_controller/USAGE +33 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_controller/rspec_controller_generator.rb +49 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/controller_spec.rb +23 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/helper_spec.rb +11 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/view_spec.rb +12 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_model/USAGE +18 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_model/rspec_model_generator.rb +30 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_model/templates/model_spec.rb +11 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/rspec_scaffold_generator.rb +165 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/controller_spec.rb +355 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/edit_erb_spec.rb +25 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/helper_spec.rb +4 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/index_erb_spec.rb +22 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/new_erb_spec.rb +26 -0
- data/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/show_erb_spec.rb +22 -0
- data/vendor/plugins/rspec_on_rails/init.rb +9 -0
- data/vendor/plugins/rspec_on_rails/lib/autotest/rails_rspec.rb +81 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/dsl.rb +2 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/dsl/configuration.rb +23 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/matchers.rb +3 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/matchers/have.rb +19 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails.rb +57 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl.rb +40 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/assigns_hash_proxy.rb +42 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour.rb +7 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/controller_example.rb +251 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/functional_example.rb +67 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/helper_example.rb +82 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/model_example.rb +14 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/rails_example.rb +93 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/render_observer.rb +90 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view_example.rb +181 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/ivar_proxy.rb +62 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions.rb +7 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/base.rb +11 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/rescue.rb +21 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/test_response.rb +11 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_view/base.rb +27 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/active_record/base.rb +29 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/object.rb +5 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers.rb +29 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/assert_select.rb +130 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/have_text.rb +55 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/redirect_to.rb +114 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/render_template.rb +66 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/story_adapter.rb +47 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/version.rb +26 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/autotest/mappings_spec.rb +39 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/autotest/rails_rspec_spec.rb +8 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/assigns_hash_proxy_spec.rb +55 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/behaviour_factory_spec.rb +83 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/configuration_spec.rb +56 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/controller_isolation_spec.rb +43 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/controller_spec_spec.rb +166 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/helper_spec_spec.rb +106 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/ivar_proxy_spec.rb +64 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/model_spec_spec.rb +14 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/shared_behaviour_spec.rb +16 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/test_unit_assertion_accessibility_spec.rb +33 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/dsl/view_spec_spec.rb +245 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/extensions/action_controller_rescue_action_spec.rb +54 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/extensions/action_view_base_spec.rb +34 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/extensions/active_record_spec.rb +17 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/matchers/assert_select_spec.rb +783 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/matchers/description_generation_spec.rb +40 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/matchers/errors_on_spec.rb +13 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/matchers/redirect_to_spec.rb +203 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/matchers/render_spec.rb +131 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/mocks/mock_model_spec.rb +65 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/sample_spec.rb +7 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/spec_server_spec.rb +47 -0
- data/vendor/plugins/rspec_on_rails/spec/rails/spec_spec.rb +11 -0
- data/vendor/plugins/rspec_on_rails/spec/rails_suite.rb +7 -0
- data/vendor/plugins/rspec_on_rails/spec/spec_helper.rb +48 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/controllers/action_view_base_spec_controller.rb +2 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/controllers/controller_spec_controller.rb +48 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/controllers/redirect_spec_controller.rb +59 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/controllers/render_spec_controller.rb +22 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/controllers/rjs_spec_controller.rb +58 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/helpers/explicit_helper.rb +10 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/helpers/more_explicit_helper.rb +5 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/helpers/plugin_application_helper.rb +6 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/helpers/view_spec_helper.rb +13 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/_partial.rhtml +0 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_the_assigns_hash.rhtml +0 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_errors_in_template.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_template.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/_a_partial.rhtml +0 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.js.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rhtml +0 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/_replacement_partial.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_div.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_page_element.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/insert_html.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html_with_partial.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_effect.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_toggle_effect.rjs +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/no_tags.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_no_attributes.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_one_attribute.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial.rhtml +2 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_used_twice.rhtml +0 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_with_local_variable.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_with_sub_partial.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_spacer.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/accessor.rhtml +3 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/entry_form.rhtml +2 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/explicit_helper.rhtml +2 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/foo/show.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/implicit_helper.rhtml +2 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/multiple_helpers.rhtml +3 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial.rhtml +5 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial_using_collection.rhtml +3 -0
- data/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial_with_array.rhtml +1 -0
- data/vendor/plugins/rspec_on_rails/tasks/rspec.rake +133 -0
- metadata +875 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
module Spec
|
2
|
+
module Matchers
|
3
|
+
|
4
|
+
class Match #:nodoc:
|
5
|
+
def initialize(expected)
|
6
|
+
@expected = expected
|
7
|
+
end
|
8
|
+
|
9
|
+
def matches?(actual)
|
10
|
+
@actual = actual
|
11
|
+
return true if actual =~ @expected
|
12
|
+
return false
|
13
|
+
end
|
14
|
+
|
15
|
+
def failure_message
|
16
|
+
return "expected #{@actual.inspect} to match #{@expected.inspect}", @expected, @actual
|
17
|
+
end
|
18
|
+
|
19
|
+
def negative_failure_message
|
20
|
+
return "expected #{@actual.inspect} not to match #{@expected.inspect}", @expected, @actual
|
21
|
+
end
|
22
|
+
|
23
|
+
def description
|
24
|
+
"match #{@expected.inspect}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# :call-seq:
|
29
|
+
# should match(regexp)
|
30
|
+
# should_not match(regexp)
|
31
|
+
#
|
32
|
+
# Given a Regexp, passes if actual =~ regexp
|
33
|
+
#
|
34
|
+
# == Examples
|
35
|
+
#
|
36
|
+
# email.should match(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i)
|
37
|
+
def match(regexp)
|
38
|
+
Matchers::Match.new(regexp)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module Spec
|
2
|
+
module Matchers
|
3
|
+
class BaseOperatorMatcher
|
4
|
+
attr_reader :generated_description
|
5
|
+
|
6
|
+
def initialize(target)
|
7
|
+
@target = target
|
8
|
+
end
|
9
|
+
|
10
|
+
def ==(expected)
|
11
|
+
@expected = expected
|
12
|
+
__delegate_method_missing_to_target("==", expected)
|
13
|
+
end
|
14
|
+
|
15
|
+
def ===(expected)
|
16
|
+
@expected = expected
|
17
|
+
__delegate_method_missing_to_target("===", expected)
|
18
|
+
end
|
19
|
+
|
20
|
+
def =~(expected)
|
21
|
+
@expected = expected
|
22
|
+
__delegate_method_missing_to_target("=~", expected)
|
23
|
+
end
|
24
|
+
|
25
|
+
def >(expected)
|
26
|
+
@expected = expected
|
27
|
+
__delegate_method_missing_to_target(">", expected)
|
28
|
+
end
|
29
|
+
|
30
|
+
def >=(expected)
|
31
|
+
@expected = expected
|
32
|
+
__delegate_method_missing_to_target(">=", expected)
|
33
|
+
end
|
34
|
+
|
35
|
+
def <(expected)
|
36
|
+
@expected = expected
|
37
|
+
__delegate_method_missing_to_target("<", expected)
|
38
|
+
end
|
39
|
+
|
40
|
+
def <=(expected)
|
41
|
+
@expected = expected
|
42
|
+
__delegate_method_missing_to_target("<=", expected)
|
43
|
+
end
|
44
|
+
|
45
|
+
def fail_with_message(message)
|
46
|
+
Spec::Expectations.fail_with(message, @expected, @target)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
class PositiveOperatorMatcher < BaseOperatorMatcher #:nodoc:
|
52
|
+
|
53
|
+
def __delegate_method_missing_to_target(operator, expected)
|
54
|
+
::Spec::Matchers.generated_description = "should #{operator} #{expected.inspect}"
|
55
|
+
return if @target.send(operator, expected)
|
56
|
+
return fail_with_message("expected: #{expected.inspect},\n got: #{@target.inspect} (using #{operator})") if ['==','===', '=~'].include?(operator)
|
57
|
+
return fail_with_message("expected: #{operator} #{expected.inspect},\n got: #{operator.gsub(/./, ' ')} #{@target.inspect}")
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
class NegativeOperatorMatcher < BaseOperatorMatcher #:nodoc:
|
63
|
+
|
64
|
+
def __delegate_method_missing_to_target(operator, expected)
|
65
|
+
::Spec::Matchers.generated_description = "should not #{operator} #{expected.inspect}"
|
66
|
+
return unless @target.send(operator, expected)
|
67
|
+
return fail_with_message("expected not: #{operator} #{expected.inspect},\n got: #{operator.gsub(/./, ' ')} #{@target.inspect}")
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
module Spec
|
2
|
+
module Matchers
|
3
|
+
|
4
|
+
class RaiseError #:nodoc:
|
5
|
+
def initialize(error_or_message=Exception, message=nil)
|
6
|
+
if String === error_or_message
|
7
|
+
@expected_error = Exception
|
8
|
+
@expected_message = error_or_message
|
9
|
+
else
|
10
|
+
@expected_error = error_or_message
|
11
|
+
@expected_message = message
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def matches?(proc)
|
16
|
+
@raised_expected_error = false
|
17
|
+
@raised_other = false
|
18
|
+
begin
|
19
|
+
proc.call
|
20
|
+
rescue @expected_error => @actual_error
|
21
|
+
if @expected_message.nil?
|
22
|
+
@raised_expected_error = true
|
23
|
+
else
|
24
|
+
case @expected_message
|
25
|
+
when Regexp
|
26
|
+
if @expected_message =~ @actual_error.message
|
27
|
+
@raised_expected_error = true
|
28
|
+
else
|
29
|
+
@raised_other = true
|
30
|
+
end
|
31
|
+
else
|
32
|
+
if @expected_message == @actual_error.message
|
33
|
+
@raised_expected_error = true
|
34
|
+
else
|
35
|
+
@raised_other = true
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
rescue => @actual_error
|
40
|
+
@raised_other = true
|
41
|
+
ensure
|
42
|
+
return @raised_expected_error
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def failure_message
|
47
|
+
return "expected #{expected_error}#{actual_error}" if @raised_other || !@raised_expected_error
|
48
|
+
end
|
49
|
+
|
50
|
+
def negative_failure_message
|
51
|
+
"expected no #{expected_error}#{actual_error}"
|
52
|
+
end
|
53
|
+
|
54
|
+
def description
|
55
|
+
"raise #{expected_error}"
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
def expected_error
|
60
|
+
case @expected_message
|
61
|
+
when nil
|
62
|
+
@expected_error
|
63
|
+
when Regexp
|
64
|
+
"#{@expected_error} with message matching #{@expected_message.inspect}"
|
65
|
+
else
|
66
|
+
"#{@expected_error} with #{@expected_message.inspect}"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def actual_error
|
71
|
+
@actual_error.nil? ? " but nothing was raised" : ", got #{@actual_error.inspect}"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# :call-seq:
|
76
|
+
# should raise_error()
|
77
|
+
# should raise_error(NamedError)
|
78
|
+
# should raise_error(NamedError, String)
|
79
|
+
# should raise_error(NamedError, Regexp)
|
80
|
+
# should_not raise_error()
|
81
|
+
# should_not raise_error(NamedError)
|
82
|
+
# should_not raise_error(NamedError, String)
|
83
|
+
# should_not raise_error(NamedError, Regexp)
|
84
|
+
#
|
85
|
+
# With no args, matches if any error is raised.
|
86
|
+
# With a named error, matches only if that specific error is raised.
|
87
|
+
# With a named error and messsage specified as a String, matches only if both match.
|
88
|
+
# With a named error and messsage specified as a Regexp, matches only if both match.
|
89
|
+
#
|
90
|
+
# == Examples
|
91
|
+
#
|
92
|
+
# lambda { do_something_risky }.should raise_error
|
93
|
+
# lambda { do_something_risky }.should raise_error(PoorRiskDecisionError)
|
94
|
+
# lambda { do_something_risky }.should raise_error(PoorRiskDecisionError, "that was too risky")
|
95
|
+
# lambda { do_something_risky }.should raise_error(PoorRiskDecisionError, /oo ri/)
|
96
|
+
#
|
97
|
+
# lambda { do_something_risky }.should_not raise_error
|
98
|
+
# lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError)
|
99
|
+
# lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError, "that was too risky")
|
100
|
+
# lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError, /oo ri/)
|
101
|
+
def raise_error(error=Exception, message=nil)
|
102
|
+
Matchers::RaiseError.new(error, message)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Spec
|
2
|
+
module Matchers
|
3
|
+
|
4
|
+
class RespondTo #:nodoc:
|
5
|
+
def initialize(*names)
|
6
|
+
@names = names
|
7
|
+
@names_not_responded_to = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def matches?(target)
|
11
|
+
@names.each do |name|
|
12
|
+
unless target.respond_to?(name)
|
13
|
+
@names_not_responded_to << name
|
14
|
+
end
|
15
|
+
end
|
16
|
+
return @names_not_responded_to.empty?
|
17
|
+
end
|
18
|
+
|
19
|
+
def failure_message
|
20
|
+
"expected target to respond to #{@names_not_responded_to.collect {|name| name.inspect }.join(', ')}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def negative_failure_message
|
24
|
+
"expected target not to respond to #{@names.collect {|name| name.inspect }.join(', ')}"
|
25
|
+
end
|
26
|
+
|
27
|
+
def description
|
28
|
+
"respond to ##{@names.to_s}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# :call-seq:
|
33
|
+
# should respond_to(*names)
|
34
|
+
# should_not respond_to(*names)
|
35
|
+
#
|
36
|
+
# Matches if the target object responds to all of the names
|
37
|
+
# provided. Names can be Strings or Symbols.
|
38
|
+
#
|
39
|
+
# == Examples
|
40
|
+
#
|
41
|
+
def respond_to(*names)
|
42
|
+
Matchers::RespondTo.new(*names)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Spec
|
2
|
+
module Matchers
|
3
|
+
|
4
|
+
class Satisfy #:nodoc:
|
5
|
+
def initialize(&block)
|
6
|
+
@block = block
|
7
|
+
end
|
8
|
+
|
9
|
+
def matches?(actual, &block)
|
10
|
+
@block = block if block
|
11
|
+
@actual = actual
|
12
|
+
@block.call(actual)
|
13
|
+
end
|
14
|
+
|
15
|
+
def failure_message
|
16
|
+
"expected #{@actual} to satisfy block"
|
17
|
+
end
|
18
|
+
|
19
|
+
def negative_failure_message
|
20
|
+
"expected #{@actual} not to satisfy block"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# :call-seq:
|
25
|
+
# should satisfy {}
|
26
|
+
# should_not satisfy {}
|
27
|
+
#
|
28
|
+
# Passes if the submitted block returns true. Yields target to the
|
29
|
+
# block.
|
30
|
+
#
|
31
|
+
# Generally speaking, this should be thought of as a last resort when
|
32
|
+
# you can't find any other way to specify the behaviour you wish to
|
33
|
+
# specify.
|
34
|
+
#
|
35
|
+
# If you do find yourself in such a situation, you could always write
|
36
|
+
# a custom matcher, which would likely make your specs more expressive.
|
37
|
+
#
|
38
|
+
# == Examples
|
39
|
+
#
|
40
|
+
# 5.should satisfy { |n|
|
41
|
+
# n > 3
|
42
|
+
# }
|
43
|
+
def satisfy(&block)
|
44
|
+
Matchers::Satisfy.new(&block)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Spec
|
2
|
+
module Matchers
|
3
|
+
class SimpleMatcher
|
4
|
+
def initialize(description, &match_block)
|
5
|
+
@description = description
|
6
|
+
@match_block = match_block
|
7
|
+
end
|
8
|
+
|
9
|
+
def matches?(actual)
|
10
|
+
@actual = actual
|
11
|
+
return @match_block.call(@actual)
|
12
|
+
end
|
13
|
+
|
14
|
+
def failure_message()
|
15
|
+
return %[expected #{@description.inspect} but got #{@actual.inspect}]
|
16
|
+
end
|
17
|
+
|
18
|
+
def negative_failure_message()
|
19
|
+
return %[expected not to get #{@description.inspect}, but got #{@actual.inspect}]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def simple_matcher(message, &match_block)
|
24
|
+
SimpleMatcher.new(message, &match_block)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module Spec
|
2
|
+
module Matchers
|
3
|
+
|
4
|
+
class ThrowSymbol #:nodoc:
|
5
|
+
def initialize(expected=nil)
|
6
|
+
@expected = expected
|
7
|
+
end
|
8
|
+
|
9
|
+
def matches?(proc)
|
10
|
+
begin
|
11
|
+
proc.call
|
12
|
+
rescue NameError => e
|
13
|
+
raise e unless e.message =~ /uncaught throw/
|
14
|
+
@actual = e.name.to_sym
|
15
|
+
ensure
|
16
|
+
if @expected.nil?
|
17
|
+
return @actual.nil? ? false : true
|
18
|
+
else
|
19
|
+
return @actual == @expected
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def failure_message
|
25
|
+
if @actual
|
26
|
+
"expected #{expected}, got #{@actual.inspect}"
|
27
|
+
else
|
28
|
+
"expected #{expected} but nothing was thrown"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def negative_failure_message
|
33
|
+
if @expected
|
34
|
+
"expected #{expected} not to be thrown"
|
35
|
+
else
|
36
|
+
"expected no Symbol, got :#{@actual}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def description
|
41
|
+
"throw #{expected}"
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def expected
|
47
|
+
@expected.nil? ? "a Symbol" : @expected.inspect
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
# :call-seq:
|
53
|
+
# should throw_symbol()
|
54
|
+
# should throw_symbol(:sym)
|
55
|
+
# should_not throw_symbol()
|
56
|
+
# should_not throw_symbol(:sym)
|
57
|
+
#
|
58
|
+
# Given a Symbol argument, matches if a proc throws the specified Symbol.
|
59
|
+
#
|
60
|
+
# Given no argument, matches if a proc throws any Symbol.
|
61
|
+
#
|
62
|
+
# == Examples
|
63
|
+
#
|
64
|
+
# lambda { do_something_risky }.should throw_symbol
|
65
|
+
# lambda { do_something_risky }.should throw_symbol(:that_was_risky)
|
66
|
+
#
|
67
|
+
# lambda { do_something_risky }.should_not throw_symbol
|
68
|
+
# lambda { do_something_risky }.should_not throw_symbol(:that_was_risky)
|
69
|
+
def throw_symbol(sym=nil)
|
70
|
+
Matchers::ThrowSymbol.new(sym)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,211 @@
|
|
1
|
+
require 'spec/mocks/methods'
|
2
|
+
require 'spec/mocks/argument_constraint_matchers'
|
3
|
+
require 'spec/mocks/spec_methods'
|
4
|
+
require 'spec/mocks/proxy'
|
5
|
+
require 'spec/mocks/mock'
|
6
|
+
require 'spec/mocks/argument_expectation'
|
7
|
+
require 'spec/mocks/message_expectation'
|
8
|
+
require 'spec/mocks/order_group'
|
9
|
+
require 'spec/mocks/errors'
|
10
|
+
require 'spec/mocks/error_generator'
|
11
|
+
require 'spec/mocks/extensions/object'
|
12
|
+
require 'spec/mocks/space'
|
13
|
+
|
14
|
+
|
15
|
+
module Spec
|
16
|
+
# == Mocks and Stubs
|
17
|
+
#
|
18
|
+
# RSpec will create Mock Objects and Stubs for you at runtime, or attach stub/mock behaviour
|
19
|
+
# to any of your real objects (Partial Mock/Stub). Because the underlying implementation
|
20
|
+
# for mocks and stubs is the same, you can intermingle mock and stub
|
21
|
+
# behaviour in either dynamically generated mocks or your pre-existing classes.
|
22
|
+
# There is a semantic difference in how they are created, however,
|
23
|
+
# which can help clarify the role it is playing within a given spec.
|
24
|
+
#
|
25
|
+
# == Mock Objects
|
26
|
+
#
|
27
|
+
# Mocks are objects that allow you to set and verify expectations that they will
|
28
|
+
# receive specific messages during run time. They are very useful for specifying how the subject of
|
29
|
+
# the spec interacts with its collaborators. This approach is widely known as "interaction
|
30
|
+
# testing".
|
31
|
+
#
|
32
|
+
# Mocks are also very powerful as a design tool. As you are
|
33
|
+
# driving the implementation of a given class, Mocks provide an anonymous
|
34
|
+
# collaborator that can change in behaviour as quickly as you can write an expectation in your
|
35
|
+
# spec. This flexibility allows you to design the interface of a collaborator that often
|
36
|
+
# does not yet exist. As the shape of the class being specified becomes more clear, so do the
|
37
|
+
# requirements for its collaborators - often leading to the discovery of new types that are
|
38
|
+
# needed in your system.
|
39
|
+
#
|
40
|
+
# Read Endo-Testing[http://www.mockobjects.com/files/endotesting.pdf] for a much
|
41
|
+
# more in depth description of this process.
|
42
|
+
#
|
43
|
+
# == Stubs
|
44
|
+
#
|
45
|
+
# Stubs are objects that allow you to set "stub" responses to
|
46
|
+
# messages. As Martin Fowler points out on his site,
|
47
|
+
# mocks_arent_stubs[http://www.martinfowler.com/articles/mocksArentStubs.html].
|
48
|
+
# Paraphrasing Fowler's paraphrasing
|
49
|
+
# of Gerard Meszaros: Stubs provide canned responses to messages they might receive in a test, while
|
50
|
+
# mocks allow you to specify and, subsquently, verify that certain messages should be received during
|
51
|
+
# the execution of a test.
|
52
|
+
#
|
53
|
+
# == Partial Mocks/Stubs
|
54
|
+
#
|
55
|
+
# RSpec also supports partial mocking/stubbing, allowing you to add stub/mock behaviour
|
56
|
+
# to instances of your existing classes. This is generally
|
57
|
+
# something to be avoided, because changes to the class can have ripple effects on
|
58
|
+
# seemingly unrelated specs. When specs fail due to these ripple effects, the fact
|
59
|
+
# that some methods are being mocked can make it difficult to understand why a
|
60
|
+
# failure is occurring.
|
61
|
+
#
|
62
|
+
# That said, partials do allow you to expect and
|
63
|
+
# verify interactions with class methods such as +#find+ and +#create+
|
64
|
+
# on Ruby on Rails model classes.
|
65
|
+
#
|
66
|
+
# == Further Reading
|
67
|
+
#
|
68
|
+
# There are many different viewpoints about the meaning of mocks and stubs. If you are interested
|
69
|
+
# in learning more, here is some recommended reading:
|
70
|
+
#
|
71
|
+
# * Mock Objects: http://www.mockobjects.com/
|
72
|
+
# * Endo-Testing: http://www.mockobjects.com/files/endotesting.pdf
|
73
|
+
# * Mock Roles, Not Objects: http://www.mockobjects.com/files/mockrolesnotobjects.pdf
|
74
|
+
# * Test Double Patterns: http://xunitpatterns.com/Test%20Double%20Patterns.html
|
75
|
+
# * Mocks aren't stubs: http://www.martinfowler.com/articles/mocksArentStubs.html
|
76
|
+
#
|
77
|
+
# == Creating a Mock
|
78
|
+
#
|
79
|
+
# You can create a mock in any specification (or setup) using:
|
80
|
+
#
|
81
|
+
# mock(name, options={})
|
82
|
+
#
|
83
|
+
# The optional +options+ argument is a +Hash+. Currently the only supported
|
84
|
+
# option is +:null_object+. Setting this to true instructs the mock to ignore
|
85
|
+
# any messages it hasn’t been told to expect – and quietly return itself. For example:
|
86
|
+
#
|
87
|
+
# mock("person", :null_object => true)
|
88
|
+
#
|
89
|
+
# == Creating a Stub
|
90
|
+
#
|
91
|
+
# You can create a stub in any specification (or setup) using:
|
92
|
+
#
|
93
|
+
# stub(name, stub_methods_and_values_hash)
|
94
|
+
#
|
95
|
+
# For example, if you wanted to create an object that always returns
|
96
|
+
# "More?!?!?!" to "please_sir_may_i_have_some_more" you would do this:
|
97
|
+
#
|
98
|
+
# stub("Mr Sykes", :please_sir_may_i_have_some_more => "More?!?!?!")
|
99
|
+
#
|
100
|
+
# == Creating a Partial Mock
|
101
|
+
#
|
102
|
+
# You don't really "create" a partial mock, you simply add method stubs and/or
|
103
|
+
# mock expectations to existing classes and objects:
|
104
|
+
#
|
105
|
+
# Factory.should_receive(:find).with(id).and_return(value)
|
106
|
+
# obj.stub!(:to_i).and_return(3)
|
107
|
+
# etc ...
|
108
|
+
#
|
109
|
+
# == Expecting Messages
|
110
|
+
#
|
111
|
+
# my_mock.should_receive(:sym)
|
112
|
+
# my_mock.should_not_receive(:sym)
|
113
|
+
#
|
114
|
+
# == Expecting Arguments
|
115
|
+
#
|
116
|
+
# my_mock.should_receive(:sym).with(*args)
|
117
|
+
# my_mock.should_not_receive(:sym).with(*args)
|
118
|
+
#
|
119
|
+
# == Argument Constraints using Expression Matchers
|
120
|
+
#
|
121
|
+
# Arguments that are passed to #with are compared with actual arguments received
|
122
|
+
# using == by default. In cases in which you want to specify things about the arguments
|
123
|
+
# rather than the arguments themselves, you can use any of the Expression Matchers.
|
124
|
+
# They don't all make syntactic sense (they were primarily designed for use with
|
125
|
+
# Spec::Expectations), but you are free to create your own custom Spec::Matchers.
|
126
|
+
#
|
127
|
+
# Spec::Mocks does provide one additional Matcher method named #ducktype.
|
128
|
+
#
|
129
|
+
# In addition, Spec::Mocks adds some keyword Symbols that you can use to
|
130
|
+
# specify certain kinds of arguments:
|
131
|
+
#
|
132
|
+
# my_mock.should_receive(:sym).with(no_args())
|
133
|
+
# my_mock.should_receive(:sym).with(any_args())
|
134
|
+
# my_mock.should_receive(:sym).with(1, an_instance_of(Numeric), "b") #2nd argument can any type of Numeric
|
135
|
+
# my_mock.should_receive(:sym).with(1, boolean(), "b") #2nd argument can true or false
|
136
|
+
# my_mock.should_receive(:sym).with(1, /abc/, "b") #2nd argument can be any String matching the submitted Regexp
|
137
|
+
# my_mock.should_receive(:sym).with(1, anything(), "b") #2nd argument can be anything at all
|
138
|
+
# my_mock.should_receive(:sym).with(1, ducktype(:abs, :div), "b")
|
139
|
+
# #2nd argument can be object that responds to #abs and #div
|
140
|
+
#
|
141
|
+
# == Receive Counts
|
142
|
+
#
|
143
|
+
# my_mock.should_receive(:sym).once
|
144
|
+
# my_mock.should_receive(:sym).twice
|
145
|
+
# my_mock.should_receive(:sym).exactly(n).times
|
146
|
+
# my_mock.should_receive(:sym).at_least(:once)
|
147
|
+
# my_mock.should_receive(:sym).at_least(:twice)
|
148
|
+
# my_mock.should_receive(:sym).at_least(n).times
|
149
|
+
# my_mock.should_receive(:sym).at_most(:once)
|
150
|
+
# my_mock.should_receive(:sym).at_most(:twice)
|
151
|
+
# my_mock.should_receive(:sym).at_most(n).times
|
152
|
+
# my_mock.should_receive(:sym).any_number_of_times
|
153
|
+
#
|
154
|
+
# == Ordering
|
155
|
+
#
|
156
|
+
# my_mock.should_receive(:sym).ordered
|
157
|
+
# my_mock.should_receive(:other_sym).ordered
|
158
|
+
# #This will fail if the messages are received out of order
|
159
|
+
#
|
160
|
+
# == Setting Reponses
|
161
|
+
#
|
162
|
+
# Whether you are setting a mock expectation or a simple stub, you can tell the
|
163
|
+
# object precisely how to respond:
|
164
|
+
#
|
165
|
+
# my_mock.should_receive(:sym).and_return(value)
|
166
|
+
# my_mock.should_receive(:sym).exactly(3).times.and_return(value1, value2, value3)
|
167
|
+
# # returns value1 the first time, value2 the second, etc
|
168
|
+
# my_mock.should_receive(:sym).and_return { ... } #returns value returned by the block
|
169
|
+
# my_mock.should_receive(:sym).and_raise(error)
|
170
|
+
# #error can be an instantiated object or a class
|
171
|
+
# #if it is a class, it must be instantiable with no args
|
172
|
+
# my_mock.should_receive(:sym).and_throw(:sym)
|
173
|
+
# my_mock.should_receive(:sym).and_yield(values,to,yield)
|
174
|
+
# my_mock.should_receive(:sym).and_yield(values,to,yield).and_yield(some,other,values,this,time)
|
175
|
+
# # for methods that yield to a block multiple times
|
176
|
+
#
|
177
|
+
# Any of these responses can be applied to a stub as well, but stubs do
|
178
|
+
# not support any qualifiers about the message received (i.e. you can't specify arguments
|
179
|
+
# or receive counts):
|
180
|
+
#
|
181
|
+
# my_mock.stub!(:sym).and_return(value)
|
182
|
+
# my_mock.stub!(:sym).and_return(value1, value2, value3)
|
183
|
+
# my_mock.stub!(:sym).and_raise(error)
|
184
|
+
# my_mock.stub!(:sym).and_throw(:sym)
|
185
|
+
# my_mock.stub!(:sym).and_yield(values,to,yield)
|
186
|
+
# my_mock.stub!(:sym).and_yield(values,to,yield).and_yield(some,other,values,this,time)
|
187
|
+
#
|
188
|
+
# == Arbitrary Handling
|
189
|
+
#
|
190
|
+
# Once in a while you'll find that the available expectations don't solve the
|
191
|
+
# particular problem you are trying to solve. Imagine that you expect the message
|
192
|
+
# to come with an Array argument that has a specific length, but you don't care
|
193
|
+
# what is in it. You could do this:
|
194
|
+
#
|
195
|
+
# my_mock.should_receive(:sym) do |arg|
|
196
|
+
# arg.should be_an_istance_of(Array)
|
197
|
+
# arg.length.should == 7
|
198
|
+
# end
|
199
|
+
#
|
200
|
+
# Note that this would fail if the number of arguments received was different from
|
201
|
+
# the number of block arguments (in this case 1).
|
202
|
+
#
|
203
|
+
# == Combining Expectation Details
|
204
|
+
#
|
205
|
+
# Combining the message name with specific arguments, receive counts and responses
|
206
|
+
# you can get quite a bit of detail in your expectations:
|
207
|
+
#
|
208
|
+
# my_mock.should_receive(:<<).with("illegal value").once.and_raise(ArgumentError)
|
209
|
+
module Mocks
|
210
|
+
end
|
211
|
+
end
|