has_finder 0.1.1
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 +4 -0
- data/License.txt +20 -0
- data/Manifest.txt +431 -0
- data/README.txt +1 -0
- data/Rakefile +4 -0
- data/config/hoe.rb +70 -0
- data/config/requirements.rb +17 -0
- data/lib/has_finder.rb +1 -0
- data/lib/has_finder/has_finder.rb +84 -0
- data/lib/has_finder/metaid.rb +15 -0
- data/lib/has_finder/version.rb +9 -0
- data/log/debug.log +0 -0
- data/nbproject/private/private.xml +4 -0
- data/nbproject/private/rake-t.txt +1 -0
- data/nbproject/project.properties +4 -0
- data/nbproject/project.xml +15 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/setup.rb +1585 -0
- data/spec/rails/README +182 -0
- data/spec/rails/Rakefile +10 -0
- data/spec/rails/app/controllers/application.rb +7 -0
- data/spec/rails/app/helpers/application_helper.rb +3 -0
- data/spec/rails/app/models/being.rb +3 -0
- data/spec/rails/config/boot.rb +45 -0
- data/spec/rails/config/database.yml +36 -0
- data/spec/rails/config/environment.rb +62 -0
- data/spec/rails/config/environments/development.rb +21 -0
- data/spec/rails/config/environments/production.rb +18 -0
- data/spec/rails/config/environments/test.rb +19 -0
- data/spec/rails/config/routes.rb +23 -0
- data/spec/rails/db/migrate/001_create_beings.rb +12 -0
- data/spec/rails/db/schema.rb +17 -0
- data/spec/rails/doc/README_FOR_APP +2 -0
- data/spec/rails/log/development.log +432 -0
- data/spec/rails/log/production.log +0 -0
- data/spec/rails/log/server.log +0 -0
- data/spec/rails/log/test.log +5820 -0
- data/spec/rails/nbproject/private/config.properties +0 -0
- data/spec/rails/nbproject/private/private.properties +1 -0
- data/spec/rails/nbproject/private/rake-t.txt +54 -0
- data/spec/rails/nbproject/project.properties +4 -0
- data/spec/rails/nbproject/project.xml +9 -0
- data/spec/rails/previous_failures.txt +0 -0
- data/spec/rails/public/404.html +30 -0
- data/spec/rails/public/500.html +30 -0
- data/spec/rails/public/dispatch.cgi +10 -0
- data/spec/rails/public/dispatch.fcgi +24 -0
- data/spec/rails/public/dispatch.rb +10 -0
- data/spec/rails/public/favicon.ico +0 -0
- data/spec/rails/public/images/rails.png +0 -0
- data/spec/rails/public/index.html +277 -0
- data/spec/rails/public/javascripts/application.js +2 -0
- data/spec/rails/public/javascripts/controls.js +833 -0
- data/spec/rails/public/javascripts/dragdrop.js +942 -0
- data/spec/rails/public/javascripts/effects.js +1088 -0
- data/spec/rails/public/javascripts/prototype.js +2515 -0
- data/spec/rails/public/robots.txt +1 -0
- data/spec/rails/script/about +3 -0
- data/spec/rails/script/breakpointer +3 -0
- data/spec/rails/script/console +3 -0
- data/spec/rails/script/destroy +3 -0
- data/spec/rails/script/generate +3 -0
- data/spec/rails/script/performance/benchmarker +3 -0
- data/spec/rails/script/performance/profiler +3 -0
- data/spec/rails/script/plugin +3 -0
- data/spec/rails/script/process/inspector +3 -0
- data/spec/rails/script/process/reaper +3 -0
- data/spec/rails/script/process/spawner +3 -0
- data/spec/rails/script/runner +3 -0
- data/spec/rails/script/server +3 -0
- data/spec/rails/script/spec +4 -0
- data/spec/rails/script/spec_server +45 -0
- data/spec/rails/spec/fixtures/beings.yml +12 -0
- data/spec/rails/spec/models/being_spec.rb +98 -0
- data/spec/rails/spec/spec.opts +6 -0
- data/spec/rails/spec/spec_helper.rb +15 -0
- data/spec/rails/test/test_helper.rb +28 -0
- data/spec/rails/tmp/sessions/ruby_sess.5edc9bf3b65456d0 +0 -0
- data/spec/rails/vendor/plugins/rspec/CHANGES +797 -0
- data/spec/rails/vendor/plugins/rspec/MIT-LICENSE +20 -0
- data/spec/rails/vendor/plugins/rspec/README +70 -0
- data/spec/rails/vendor/plugins/rspec/Rakefile +304 -0
- data/spec/rails/vendor/plugins/rspec/UPGRADE +31 -0
- data/spec/rails/vendor/plugins/rspec/bin/spec +3 -0
- data/spec/rails/vendor/plugins/rspec/bin/spec_translator +8 -0
- data/spec/rails/vendor/plugins/rspec/examples/auto_spec_description_example.rb +19 -0
- data/spec/rails/vendor/plugins/rspec/examples/before_and_after_example.rb +39 -0
- data/spec/rails/vendor/plugins/rspec/examples/behave_as_example.rb +45 -0
- data/spec/rails/vendor/plugins/rspec/examples/custom_expectation_matchers.rb +54 -0
- data/spec/rails/vendor/plugins/rspec/examples/custom_formatter.rb +11 -0
- data/spec/rails/vendor/plugins/rspec/examples/dynamic_spec.rb +9 -0
- data/spec/rails/vendor/plugins/rspec/examples/file_accessor.rb +18 -0
- data/spec/rails/vendor/plugins/rspec/examples/file_accessor_spec.rb +38 -0
- data/spec/rails/vendor/plugins/rspec/examples/greeter_spec.rb +30 -0
- data/spec/rails/vendor/plugins/rspec/examples/helper_method_example.rb +11 -0
- data/spec/rails/vendor/plugins/rspec/examples/io_processor.rb +8 -0
- data/spec/rails/vendor/plugins/rspec/examples/io_processor_spec.rb +21 -0
- data/spec/rails/vendor/plugins/rspec/examples/legacy_spec.rb +10 -0
- data/spec/rails/vendor/plugins/rspec/examples/mocking_example.rb +27 -0
- data/spec/rails/vendor/plugins/rspec/examples/multi_threaded_behaviour_runner.rb +25 -0
- data/spec/rails/vendor/plugins/rspec/examples/not_yet_implemented_spec.rb +12 -0
- data/spec/rails/vendor/plugins/rspec/examples/partial_mock_example.rb +28 -0
- data/spec/rails/vendor/plugins/rspec/examples/predicate_example.rb +27 -0
- data/spec/rails/vendor/plugins/rspec/examples/priority.txt +1 -0
- data/spec/rails/vendor/plugins/rspec/examples/shared_behaviours_example.rb +39 -0
- data/spec/rails/vendor/plugins/rspec/examples/spec_helper.rb +1 -0
- data/spec/rails/vendor/plugins/rspec/examples/stack.rb +36 -0
- data/spec/rails/vendor/plugins/rspec/examples/stack_spec.rb +97 -0
- data/spec/rails/vendor/plugins/rspec/examples/stubbing_example.rb +69 -0
- data/spec/rails/vendor/plugins/rspec/examples/test_case_adapter_example.rb +26 -0
- data/spec/rails/vendor/plugins/rspec/examples/test_case_spec.rb +65 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/diffing_spec.rb +36 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/failure_in_setup.rb +10 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/failure_in_teardown.rb +10 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/mocking_example.rb +33 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/mocking_with_flexmock.rb +26 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/mocking_with_mocha.rb +25 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/partial_mock_example.rb +20 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/predicate_example.rb +29 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/raising_example.rb +47 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/spec_helper.rb +1 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/syntax_error_example.rb +7 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/team_spec.rb +46 -0
- data/spec/rails/vendor/plugins/rspec/failing_examples/timeout_behaviour.rb +7 -0
- data/spec/rails/vendor/plugins/rspec/init.rb +3 -0
- data/spec/rails/vendor/plugins/rspec/lib/autotest/discover.rb +3 -0
- data/spec/rails/vendor/plugins/rspec/lib/autotest/rspec.rb +67 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec.rb +13 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/dsl.rb +10 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb +210 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/behaviour_callbacks.rb +78 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/behaviour_eval.rb +220 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/behaviour_factory.rb +42 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb +28 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/configuration.rb +119 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/description.rb +69 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/example.rb +127 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/example_matcher.rb +40 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/example_should_raise_handler.rb +74 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/expectations.rb +56 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/expectations/differs/default.rb +61 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/expectations/errors.rb +6 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/expectations/extensions.rb +2 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb +66 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/expectations/handler.rb +43 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/extensions.rb +1 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/extensions/object.rb +6 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers.rb +166 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/be.rb +206 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/be_close.rb +37 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/change.rb +120 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/eql.rb +43 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/equal.rb +43 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/has.rb +44 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/have.rb +145 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/include.rb +70 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/match.rb +41 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb +72 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/raise_error.rb +100 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/respond_to.rb +45 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/satisfy.rb +47 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb +72 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks.rb +208 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/argument_constraint_matchers.rb +27 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb +183 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/error_generator.rb +84 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/errors.rb +10 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/extensions/object.rb +3 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb +231 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/methods.rb +35 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/mock.rb +29 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/order_group.rb +29 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/proxy.rb +163 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/space.rb +28 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/spec_methods.rb +30 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/rake/spectask.rb +175 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/rake/verify_rcov.rb +52 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner.rb +165 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/backtrace_tweaker.rb +56 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb +102 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/command_line.rb +22 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/drb_command_line.rb +21 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/extensions/kernel.rb +50 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/extensions/object.rb +32 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter.rb +9 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/base_formatter.rb +68 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/base_text_formatter.rb +102 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/failing_behaviours_formatter.rb +25 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb +22 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/html_formatter.rb +316 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb +30 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/rdoc_formatter.rb +24 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/specdoc_formatter.rb +28 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/heckle_runner.rb +72 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/option_parser.rb +226 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/options.rb +158 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/reporter.rb +114 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/runner/spec_parser.rb +50 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/test_case_adapter.rb +10 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/translator.rb +106 -0
- data/spec/rails/vendor/plugins/rspec/lib/spec/version.rb +22 -0
- data/spec/rails/vendor/plugins/rspec/plugins/mock_frameworks/flexmock.rb +27 -0
- data/spec/rails/vendor/plugins/rspec/plugins/mock_frameworks/mocha.rb +21 -0
- data/spec/rails/vendor/plugins/rspec/plugins/mock_frameworks/rspec.rb +18 -0
- data/spec/rails/vendor/plugins/rspec/rake_tasks/examples.rake +7 -0
- data/spec/rails/vendor/plugins/rspec/rake_tasks/examples_specdoc.rake +9 -0
- data/spec/rails/vendor/plugins/rspec/rake_tasks/examples_with_rcov.rake +9 -0
- data/spec/rails/vendor/plugins/rspec/rake_tasks/failing_examples_with_html.rake +9 -0
- data/spec/rails/vendor/plugins/rspec/rake_tasks/verify_rcov.rake +7 -0
- data/spec/rails/vendor/plugins/rspec/spec.opts +13 -0
- data/spec/rails/vendor/plugins/rspec/spec/README.jruby +14 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/behaviour_eval_spec.rb +49 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/behaviour_factory_spec.rb +30 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/behaviour_spec.rb +624 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/composite_proc_builder_spec.rb +57 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/configuration_spec.rb +50 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/description_spec.rb +81 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/example_class_spec.rb +24 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/example_instance_spec.rb +162 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/example_should_raise_spec.rb +137 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/predicate_matcher_spec.rb +21 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/shared_behaviour_spec.rb +228 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb +107 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/expectations/extensions/object_spec.rb +46 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/be_close_spec.rb +39 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/be_spec.rb +209 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/change_spec.rb +232 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb +159 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/eql_spec.rb +28 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/equal_spec.rb +28 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb +48 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/handler_spec.rb +88 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/has_spec.rb +37 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/have_spec.rb +272 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/include_spec.rb +45 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/match_spec.rb +37 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/matcher_methods_spec.rb +78 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb +24 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb +158 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/raise_error_spec.rb +147 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/respond_to_spec.rb +54 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb +51 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/any_number_of_times_spec.rb +29 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/argument_expectation_spec.rb +19 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/at_least_spec.rb +97 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/at_most_spec.rb +93 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +114 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/mock_ordering_spec.rb +84 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb +377 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/null_object_mock_spec.rb +40 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/once_counts_spec.rb +53 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb +33 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb +52 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +148 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/precise_counts_spec.rb +52 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb +159 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb +12 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/behaviour_runner_spec.rb +206 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb +33 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/context_matching_spec.rb +27 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb +81 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/empty_file.txt +0 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/example_matcher_spec.rb +127 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/examples.txt +2 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/execution_context_spec.rb +31 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/extensions/kernel_spec.rb +36 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/failed.txt +3 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +27 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +28 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html +333 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +344 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html +338 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html +338 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatter_spec.rb +56 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +21 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +36 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +78 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +19 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_spec.rb +46 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb +11 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +21 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb +56 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/heckle_runner_spec.rb +63 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/heckler_spec.rb +14 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/object_ext_spec.rb +11 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/option_parser_spec.rb +348 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/options_spec.rb +142 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +56 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/reporter_spec.rb +153 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/spec.opts +2 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/spec_parser_spec.rb +93 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/runner/spec_spaced.opts +2 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/spec_classes.rb +111 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec/translator_spec.rb +216 -0
- data/spec/rails/vendor/plugins/rspec/spec/spec_helper.rb +43 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/MIT-LICENSE +31 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/README +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/Rakefile +9 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/CHANGES +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/rspec_generator.rb +31 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/templates/previous_failures.txt +0 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/templates/script/spec +4 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/templates/script/spec_server +45 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/templates/spec.opts +6 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/templates/spec_helper.rb +26 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_controller/USAGE +33 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_controller/rspec_controller_generator.rb +42 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/controller_spec.rb +23 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/helper_spec.rb +11 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/view_spec.rb +12 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_model/USAGE +18 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_model/rspec_model_generator.rb +30 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_model/templates/model_spec.rb +11 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/rspec_scaffold_generator.rb +161 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/controller_spec.rb +303 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/edit_erb_spec.rb +25 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/helper_spec.rb +4 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/index_erb_spec.rb +22 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/new_erb_spec.rb +26 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/show_erb_spec.rb +22 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/init.rb +9 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/autotest/rails_rspec.rb +81 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/dsl.rb +2 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/dsl/configuration.rb +23 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/matchers.rb +3 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/matchers/have.rb +12 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails.rb +57 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl.rb +40 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/assigns_hash_proxy.rb +42 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour.rb +8 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/base.rb +82 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/controller.rb +246 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/functional.rb +90 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/helper.rb +100 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/model.rb +21 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view.rb +185 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/ivar_proxy.rb +62 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions.rb +7 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/base.rb +11 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/rescue.rb +10 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/test_response.rb +5 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_view/base.rb +26 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/active_record/base.rb +29 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/object.rb +5 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers.rb +29 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/assert_select.rb +131 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/have_text.rb +55 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/redirect_to.rb +106 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/render_template.rb +63 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/version.rb +26 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/assigns_hash_proxy_spec.rb +55 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/behaviour_factory_spec.rb +53 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/controller_isolation_spec.rb +43 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/controller_spec_spec.rb +124 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/helper_spec_spec.rb +62 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/ivar_proxy_spec.rb +64 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/model_spec_spec.rb +14 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/shared_behaviour_spec.rb +16 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/test_unit_assertion_accessibility_spec.rb +28 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/view_spec_spec.rb +165 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/extensions/active_record_spec.rb +17 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/matchers/assert_select_spec.rb +718 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/matchers/description_generation_spec.rb +42 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/matchers/redirect_to_spec.rb +183 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/matchers/render_spec.rb +112 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec/spec_helper.rb +40 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/controllers/controller_spec_controller.rb +36 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/controllers/redirect_spec_controller.rb +59 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/controllers/render_spec_controller.rb +18 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/controllers/rjs_spec_controller.rb +58 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/helpers/explicit_helper.rb +10 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/helpers/more_explicit_helper.rb +5 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/helpers/plugin_application_helper.rb +6 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/helpers/view_spec_helper.rb +13 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/_a_partial.rhtml +0 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_the_assigns_hash.rhtml +0 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_errors_in_template.rhtml +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_template.rhtml +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/_a_partial.rhtml +0 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.js.rjs +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rhtml +0 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rjs +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/_replacement_partial.rhtml +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_div.rjs +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_page_element.rjs +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/insert_html.rjs +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace.rjs +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html.rjs +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html_with_partial.rjs +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_effect.rjs +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_toggle_effect.rjs +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/no_tags.rhtml +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_no_attributes.rhtml +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_one_attribute.rhtml +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_included_partial.rhtml +2 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_included_partial_collection_with_spacer_template.rhtml +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_with_local_variable.rhtml +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_spacer.rhtml +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/accessor.rhtml +3 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/entry_form.rhtml +2 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/explicit_helper.rhtml +2 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/multiple_helpers.rhtml +3 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/partial_collection_including_template.rhtml +2 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/partial_including_template.rhtml +2 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/partial_with_array.rhtml +1 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/show.rhtml +2 -0
- data/spec/rails/vendor/plugins/rspec_on_rails/tasks/rspec.rake +90 -0
- data/tasks/deployment.rake +27 -0
- data/tasks/environment.rake +7 -0
- data/tasks/website.rake +9 -0
- data/test/test_has_finder.rb +11 -0
- data/test/test_helper.rb +2 -0
- metadata +490 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
Spec::Runner.configuration.global_fixtures = :people
|
|
3
|
+
|
|
4
|
+
describe "HelperBehaviour", :behaviour_type => :helper do
|
|
5
|
+
helper_name :explicit
|
|
6
|
+
|
|
7
|
+
it "should have direct access to methods defined in helpers" do
|
|
8
|
+
method_in_explicit_helper.should =~ /text from a method/
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
describe "HelperBehaviour#eval_erb", :behaviour_type => :helper do
|
|
14
|
+
helper_name :explicit
|
|
15
|
+
|
|
16
|
+
it "should support methods that accept blocks" do
|
|
17
|
+
eval_erb("<% prepend 'foo' do %>bar<% end %>").should == "foobar"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "HelperBehaviour.fixtures", :behaviour_type => :helper do
|
|
22
|
+
helper_name :explicit
|
|
23
|
+
fixtures :animals
|
|
24
|
+
|
|
25
|
+
it "loads fixtures" do
|
|
26
|
+
pig = animals(:pig)
|
|
27
|
+
pig.class.should == Animal
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "loads global fixtures" do
|
|
31
|
+
lachie = people(:lachie)
|
|
32
|
+
lachie.class.should == Person
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe ExplicitHelper, :behaviour_type => :helper do
|
|
37
|
+
it "should not require naming the helper if describe is passed a type" do
|
|
38
|
+
method_in_explicit_helper.should match(/text from a method/)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
module Spec
|
|
43
|
+
module Rails
|
|
44
|
+
module DSL
|
|
45
|
+
describe HelperBehaviour do
|
|
46
|
+
it "should tell you its behaviour_type is :helper" do
|
|
47
|
+
behaviour = HelperBehaviour.new("") {}
|
|
48
|
+
behaviour.behaviour_type.should == :helper
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
module Bug11223
|
|
56
|
+
# see http://rubyforge.org/tracker/index.php?func=detail&aid=11223&group_id=797&atid=3149
|
|
57
|
+
describe 'Accessing flash from helper spec', :behaviour_type => :helper do
|
|
58
|
+
it 'should not raise an error' do
|
|
59
|
+
lambda { flash['test'] }.should_not raise_error
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "IvarProxy setup", :shared => true do
|
|
4
|
+
before do
|
|
5
|
+
@object = Object.new
|
|
6
|
+
@proxy = Spec::Rails::DSL::IvarProxy.new(@object)
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "IvarProxy" do
|
|
11
|
+
it_should_behave_like "IvarProxy setup"
|
|
12
|
+
|
|
13
|
+
it "has [] accessor" do
|
|
14
|
+
@proxy['foo'] = 'bar'
|
|
15
|
+
@object.instance_variable_get(:@foo).should == 'bar'
|
|
16
|
+
@proxy['foo'].should == 'bar'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "iterates through each element like a Hash" do
|
|
20
|
+
values = {
|
|
21
|
+
'foo' => 1,
|
|
22
|
+
'bar' => 2,
|
|
23
|
+
'baz' => 3
|
|
24
|
+
}
|
|
25
|
+
@proxy['foo'] = values['foo']
|
|
26
|
+
@proxy['bar'] = values['bar']
|
|
27
|
+
@proxy['baz'] = values['baz']
|
|
28
|
+
|
|
29
|
+
@proxy.each do |key, value|
|
|
30
|
+
key.should == key
|
|
31
|
+
value.should == values[key]
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "detects the presence of a key" do
|
|
36
|
+
@proxy['foo'] = 'bar'
|
|
37
|
+
@proxy.has_key?('foo').should == true
|
|
38
|
+
@proxy.has_key?('bar').should == false
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe "IvarProxy", "#delete" do
|
|
43
|
+
it_should_behave_like "IvarProxy setup"
|
|
44
|
+
|
|
45
|
+
it "deletes the element with key" do
|
|
46
|
+
@proxy['foo'] = 'bar'
|
|
47
|
+
@proxy.delete('foo').should == 'bar'
|
|
48
|
+
@proxy['foo'].should be_nil
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "deletes nil instance variables" do
|
|
52
|
+
@proxy['foo'] = nil
|
|
53
|
+
@object.instance_variables.should include("@foo")
|
|
54
|
+
@proxy.delete('foo').should == nil
|
|
55
|
+
@proxy['foo'].should be_nil
|
|
56
|
+
@object.instance_variables.should_not include("@foo")
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "returns nil when key does not exist" do
|
|
60
|
+
@proxy['foo'].should be_nil
|
|
61
|
+
@proxy.delete('foo').should == nil
|
|
62
|
+
@proxy['foo'].should be_nil
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Rails
|
|
5
|
+
module DSL
|
|
6
|
+
describe ModelBehaviour do
|
|
7
|
+
it "should tell you its behaviour_type is :model" do
|
|
8
|
+
behaviour = ModelBehaviour.new("") {}
|
|
9
|
+
behaviour.behaviour_type.should == :model
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "A shared view behaviour", :shared => true do
|
|
4
|
+
it "should have some tag with some text" do
|
|
5
|
+
response.should have_tag('div', 'This is text from a method in the ViewSpecHelper')
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "A view behaviour", :behaviour_type => :view do
|
|
10
|
+
it_should_behave_like "A shared view behaviour"
|
|
11
|
+
|
|
12
|
+
before(:each) do
|
|
13
|
+
render "view_spec/show"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
['model','view','helper'].each do |context|
|
|
4
|
+
describe "A #{context} spec should be able to access 'test/unit' assertions", :behaviour_type => context.to_sym do
|
|
5
|
+
|
|
6
|
+
it "like assert_equal" do
|
|
7
|
+
assert_equal 1, 1
|
|
8
|
+
lambda {
|
|
9
|
+
assert_equal 1, 2
|
|
10
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
['integration', 'isolation'].each do |mode|
|
|
17
|
+
describe "A controller spec in #{mode} mode should be able to access 'test/unit' assertions", :behaviour_type => :controller do
|
|
18
|
+
controller_name :controller_spec
|
|
19
|
+
integrate_views if mode == 'integration'
|
|
20
|
+
|
|
21
|
+
it "like assert_equal" do
|
|
22
|
+
assert_equal 1, 1
|
|
23
|
+
lambda {
|
|
24
|
+
assert_equal 1, 2
|
|
25
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "A view with an implicit helper", :behaviour_type => :view do
|
|
4
|
+
before(:each) do
|
|
5
|
+
render "view_spec/show"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "should include the helper" do
|
|
9
|
+
response.should have_tag('div', :content => "This is text from a method in the ViewSpecHelper")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should include the application helper" do
|
|
13
|
+
response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe "A view requiring an explicit helper", :behaviour_type => :view do
|
|
18
|
+
before(:each) do
|
|
19
|
+
render "view_spec/explicit_helper", :helper => 'explicit'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should include the helper if specified" do
|
|
23
|
+
response.should have_tag('div', :content => "This is text from a method in the ExplicitHelper")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should include the application helper" do
|
|
27
|
+
response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe "A view requiring multiple explicit helpers", :behaviour_type => :view do
|
|
32
|
+
before(:each) do
|
|
33
|
+
render "view_spec/multiple_helpers", :helpers => ['explicit', 'more_explicit']
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should included all specified helpers" do
|
|
37
|
+
response.should have_tag('div', :content => "This is text from a method in the ExplicitHelper")
|
|
38
|
+
response.should have_tag('div', :content => "This is text from a method in the MoreExplicitHelper")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should include the application helper" do
|
|
42
|
+
response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe "A view that includes a partial", :behaviour_type => :view do
|
|
47
|
+
def render!
|
|
48
|
+
render "view_spec/partial_including_template"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "should render the enclosing template" do
|
|
52
|
+
render!
|
|
53
|
+
response.should have_tag('div', "method_in_included_partial in ViewSpecHelper")
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should render the partial" do
|
|
57
|
+
render!
|
|
58
|
+
response.should have_tag('div', "method_in_partial_including_template in ViewSpecHelper")
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "should include the application helper" do
|
|
62
|
+
render!
|
|
63
|
+
response.should have_tag('div', "This is text from a method in the ApplicationHelper")
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "should support mocking the render call" do
|
|
67
|
+
template.should_receive(:render).with(:partial => 'included_partial')
|
|
68
|
+
render!
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
describe "A view that includes a partial using :collection and :spacer_template", :behaviour_type => :view do
|
|
73
|
+
before(:each) do
|
|
74
|
+
render "view_spec/partial_collection_including_template"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "should render the partial w/ spacer_tamplate" do
|
|
78
|
+
response.should have_tag('div', :content => 'Alice')
|
|
79
|
+
response.should have_tag('hr', :attributes =>{:id => "spacer"})
|
|
80
|
+
response.should have_tag('div', :content => 'Bob')
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
describe "A view that includes a partial using an array as partial_path", :behaviour_type => :view do
|
|
86
|
+
before(:each) do
|
|
87
|
+
module ActionView::Partials
|
|
88
|
+
def render_partial_with_array_support(partial_path, local_assigns = nil, deprecated_local_assigns = nil)
|
|
89
|
+
if partial_path.is_a?(Array)
|
|
90
|
+
"Array Partial"
|
|
91
|
+
else
|
|
92
|
+
render_partial_without_array_support(partial_path, local_assigns, deprecated_local_assigns)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
alias :render_partial_without_array_support :render_partial
|
|
97
|
+
alias :render_partial :render_partial_with_array_support
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
@array = ['Alice', 'Bob']
|
|
101
|
+
assigns[:array] = @array
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
after(:each) do
|
|
105
|
+
module ActionView::Partials
|
|
106
|
+
alias :render_partial_with_array_support :render_partial
|
|
107
|
+
alias :render_partial :render_partial_without_array_support
|
|
108
|
+
undef render_partial_with_array_support
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "should render have the array passed through to render_partial without modification" do
|
|
113
|
+
render "view_spec/partial_with_array"
|
|
114
|
+
response.body.should match(/^Array Partial$/)
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
describe "Different types of renders (not :template)", :behaviour_type => :view do
|
|
119
|
+
it "should render partial with local" do
|
|
120
|
+
render :partial => "view_spec/partial_with_local_variable", :locals => {:x => "Ender"}
|
|
121
|
+
response.should have_tag('div', :content => "Ender")
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
describe "A view", :behaviour_type => :view do
|
|
126
|
+
before(:each) do
|
|
127
|
+
session[:key] = "session"
|
|
128
|
+
params[:key] = "params"
|
|
129
|
+
flash[:key] = "flash"
|
|
130
|
+
render "view_spec/accessor"
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
it "should have access to session data" do
|
|
134
|
+
response.should have_tag("div#session", "session")
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
specify "should have access to params data" do
|
|
138
|
+
puts response.body
|
|
139
|
+
response.should have_tag("div#params", "params")
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it "should have access to flash data" do
|
|
143
|
+
response.should have_tag("div#flash", "flash")
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
describe "A view with a form_tag", :behaviour_type => :view do
|
|
148
|
+
it "should render the right action" do
|
|
149
|
+
render "view_spec/entry_form"
|
|
150
|
+
response.should have_tag("form[action=?]","/view_spec/entry_form")
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
module Spec
|
|
155
|
+
module Rails
|
|
156
|
+
module DSL
|
|
157
|
+
describe ViewBehaviour do
|
|
158
|
+
it "should tell you its behaviour_type is :view" do
|
|
159
|
+
behaviour = ViewBehaviour.new("") {}
|
|
160
|
+
behaviour.behaviour_type.should == :view
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
class Thing < ActiveRecord::Base
|
|
4
|
+
validates_presence_of :name
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe "A model" do
|
|
8
|
+
it "should tell you its required fields" do
|
|
9
|
+
Thing.new.should have(1).error_on(:name)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should tell you how many records it has" do
|
|
13
|
+
Thing.should have(:no).records
|
|
14
|
+
Thing.create(:name => "THE THING")
|
|
15
|
+
Thing.should have(1).record
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,718 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
# assert_select plugins for Rails
|
|
4
|
+
#
|
|
5
|
+
# Copyright (c) 2006 Assaf Arkin, under Creative Commons Attribution and/or MIT License
|
|
6
|
+
# Developed for http://co.mments.com
|
|
7
|
+
# Code and documention: http://labnotes.org
|
|
8
|
+
|
|
9
|
+
class AssertSelectController < ActionController::Base
|
|
10
|
+
|
|
11
|
+
def response=(content)
|
|
12
|
+
@content = content
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
#NOTE - this is commented because response is implemented in lib/spec/rails/context/controller
|
|
16
|
+
# def response(&block)
|
|
17
|
+
# @update = block
|
|
18
|
+
# end
|
|
19
|
+
#
|
|
20
|
+
def html()
|
|
21
|
+
render :text=>@content, :layout=>false, :content_type=>Mime::HTML
|
|
22
|
+
@content = nil
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def rjs()
|
|
26
|
+
update = @update
|
|
27
|
+
render :update do |page|
|
|
28
|
+
update.call page
|
|
29
|
+
end
|
|
30
|
+
@update = nil
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def xml()
|
|
34
|
+
render :text=>@content, :layout=>false, :content_type=>Mime::XML
|
|
35
|
+
@content = nil
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def rescue_action(e)
|
|
39
|
+
raise e
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
class AssertSelectMailer < ActionMailer::Base
|
|
45
|
+
|
|
46
|
+
def test(html)
|
|
47
|
+
recipients "test <test@test.host>"
|
|
48
|
+
from "test@test.host"
|
|
49
|
+
subject "Test e-mail"
|
|
50
|
+
part :content_type=>"text/html", :body=>html
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
module AssertSelectSpecHelpers
|
|
56
|
+
def render_html(html)
|
|
57
|
+
@controller.response = html
|
|
58
|
+
get :html
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def render_rjs(&block)
|
|
62
|
+
clear_response
|
|
63
|
+
@controller.response &block
|
|
64
|
+
get :rjs
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def render_xml(xml)
|
|
68
|
+
@controller.response = xml
|
|
69
|
+
get :xml
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
# necessary for 1.2.1
|
|
74
|
+
def clear_response
|
|
75
|
+
render_html("")
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
unless defined?(SpecFailed)
|
|
80
|
+
SpecFailed = Spec::Expectations::ExpectationNotMetError
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
describe "should have_tag", :behaviour_type => :controller do
|
|
84
|
+
include AssertSelectSpecHelpers
|
|
85
|
+
controller_name :assert_select
|
|
86
|
+
integrate_views
|
|
87
|
+
|
|
88
|
+
it "should find specific numbers of elements" do
|
|
89
|
+
render_html %Q{<div id="1"></div><div id="2"></div>}
|
|
90
|
+
response.should have_tag( "div" )
|
|
91
|
+
response.should have_tag("div", 2)
|
|
92
|
+
lambda { response.should_not have_tag("div") }.should raise_error(SpecFailed, "should not have tag(\"div\"), but did")
|
|
93
|
+
|
|
94
|
+
lambda { response.should have_tag("div", 3) }.should raise_error(SpecFailed)
|
|
95
|
+
lambda { response.should have_tag("p") }.should raise_error(SpecFailed)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "should expect to find elements when using true" do
|
|
99
|
+
render_html %Q{<div id="1"></div><div id="2"></div>}
|
|
100
|
+
response.should have_tag( "div", true )
|
|
101
|
+
lambda { response.should have_tag( "p", true )}.should raise_error(SpecFailed)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "should expect to not find elements when using false" do
|
|
105
|
+
render_html %Q{<div id="1"></div><div id="2"></div>}
|
|
106
|
+
response.should have_tag( "p", false )
|
|
107
|
+
lambda { response.should have_tag( "div", false )}.should raise_error(SpecFailed)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
it "should match submitted text using text or regexp" do
|
|
112
|
+
render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
|
|
113
|
+
response.should have_tag("div", "foo")
|
|
114
|
+
response.should have_tag("div", /(foo|bar)/)
|
|
115
|
+
response.should have_tag("div", :text=>"foo")
|
|
116
|
+
response.should have_tag("div", :text=>/(foo|bar)/)
|
|
117
|
+
|
|
118
|
+
lambda { response.should have_tag("div", "bar") }.should raise_error(SpecFailed)
|
|
119
|
+
lambda { response.should have_tag("div", :text=>"bar") }.should raise_error(SpecFailed)
|
|
120
|
+
lambda { response.should have_tag("p", :text=>"foo") }.should raise_error(SpecFailed)
|
|
121
|
+
|
|
122
|
+
lambda { response.should have_tag("div", /foobar/) }.should raise_error(SpecFailed)
|
|
123
|
+
lambda { response.should have_tag("div", :text=>/foobar/) }.should raise_error(SpecFailed)
|
|
124
|
+
lambda { response.should have_tag("p", :text=>/foo/) }.should raise_error(SpecFailed)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
it "should use submitted message" do
|
|
128
|
+
render_html %Q{nothing here}
|
|
129
|
+
lambda {
|
|
130
|
+
response.should have_tag("div", {}, "custom message")
|
|
131
|
+
}.should raise_error(SpecFailed, /custom message/)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "should match submitted html" do
|
|
135
|
+
render_html %Q{<p>\n<em>"This is <strong>not</strong> a big problem,"</em> he said.\n</p>}
|
|
136
|
+
text = "\"This is not a big problem,\" he said."
|
|
137
|
+
html = "<em>\"This is <strong>not</strong> a big problem,\"</em> he said."
|
|
138
|
+
response.should have_tag("p", text)
|
|
139
|
+
lambda { response.should have_tag("p", html) }.should raise_error(SpecFailed)
|
|
140
|
+
response.should have_tag("p", :html=>html)
|
|
141
|
+
lambda { response.should have_tag("p", :html=>text) }.should raise_error(SpecFailed)
|
|
142
|
+
|
|
143
|
+
# # No stripping for pre.
|
|
144
|
+
render_html %Q{<pre>\n<em>"This is <strong>not</strong> a big problem,"</em> he said.\n</pre>}
|
|
145
|
+
text = "\n\"This is not a big problem,\" he said.\n"
|
|
146
|
+
html = "\n<em>\"This is <strong>not</strong> a big problem,\"</em> he said.\n"
|
|
147
|
+
response.should have_tag("pre", text)
|
|
148
|
+
lambda { response.should have_tag("pre", html) }.should raise_error(SpecFailed)
|
|
149
|
+
response.should have_tag("pre", :html=>html)
|
|
150
|
+
lambda { response.should have_tag("pre", :html=>text) }.should raise_error(SpecFailed)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it "should match number of instances" do
|
|
154
|
+
render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
|
|
155
|
+
response.should have_tag("div", 2)
|
|
156
|
+
lambda { response.should have_tag("div", 3) }.should raise_error(SpecFailed)
|
|
157
|
+
response.should have_tag("div", 1..2)
|
|
158
|
+
lambda { response.should have_tag("div", 3..4) }.should raise_error(SpecFailed)
|
|
159
|
+
response.should have_tag("div", :count=>2)
|
|
160
|
+
lambda { response.should have_tag("div", :count=>3) }.should raise_error(SpecFailed)
|
|
161
|
+
response.should have_tag("div", :minimum=>1)
|
|
162
|
+
response.should have_tag("div", :minimum=>2)
|
|
163
|
+
lambda { response.should have_tag("div", :minimum=>3) }.should raise_error(SpecFailed)
|
|
164
|
+
response.should have_tag("div", :maximum=>2)
|
|
165
|
+
response.should have_tag("div", :maximum=>3)
|
|
166
|
+
lambda { response.should have_tag("div", :maximum=>1) }.should raise_error(SpecFailed)
|
|
167
|
+
response.should have_tag("div", :minimum=>1, :maximum=>2)
|
|
168
|
+
lambda { response.should have_tag("div", :minimum=>3, :maximum=>4) }.should raise_error(SpecFailed)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
it "substitution values" do
|
|
172
|
+
render_html %Q{<div id="1">foo</div><div id="2">foo</div><span id="3"></span>}
|
|
173
|
+
response.should have_tag("div#?", /\d+/) do |elements| #using do/end
|
|
174
|
+
elements.size.should == 2
|
|
175
|
+
end
|
|
176
|
+
response.should have_tag("div#?", /\d+/) { |elements| #using {}
|
|
177
|
+
elements.size.should == 2
|
|
178
|
+
}
|
|
179
|
+
lambda {
|
|
180
|
+
response.should have_tag("div#?", /\d+/) do |elements|
|
|
181
|
+
elements.size.should == 3
|
|
182
|
+
end
|
|
183
|
+
}.should raise_error(SpecFailed, "expected 3, got 2 (using ==)")
|
|
184
|
+
|
|
185
|
+
lambda {
|
|
186
|
+
response.should have_tag("div#?", /\d+/) { |elements|
|
|
187
|
+
elements.size.should == 3
|
|
188
|
+
}
|
|
189
|
+
}.should raise_error(SpecFailed, "expected 3, got 2 (using ==)")
|
|
190
|
+
|
|
191
|
+
response.should have_tag("div#?", /\d+/) do |elements|
|
|
192
|
+
elements.size.should == 2
|
|
193
|
+
with_tag("#1")
|
|
194
|
+
with_tag("#2")
|
|
195
|
+
without_tag("#3")
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
#added for RSpec
|
|
200
|
+
it "nested tags in form" do
|
|
201
|
+
render_html %Q{
|
|
202
|
+
<form action="test">
|
|
203
|
+
<input type="text" name="email">
|
|
204
|
+
</form>
|
|
205
|
+
<form action="other">
|
|
206
|
+
<input type="text" name="other_input">
|
|
207
|
+
</form>
|
|
208
|
+
}
|
|
209
|
+
response.should have_tag("form[action=test]") { |form|
|
|
210
|
+
with_tag("input[type=text][name=email]")
|
|
211
|
+
}
|
|
212
|
+
response.should have_tag("form[action=test]") { |form|
|
|
213
|
+
with_tag("input[type=text][name=email]")
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
lambda {
|
|
217
|
+
response.should have_tag("form[action=test]") { |form|
|
|
218
|
+
with_tag("input[type=text][name=other_input]")
|
|
219
|
+
}
|
|
220
|
+
}.should raise_error(SpecFailed)
|
|
221
|
+
|
|
222
|
+
lambda {
|
|
223
|
+
response.should have_tag("form[action=test]") {
|
|
224
|
+
with_tag("input[type=text][name=other_input]")
|
|
225
|
+
}
|
|
226
|
+
}.should raise_error(SpecFailed)
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
it "beatles" do
|
|
230
|
+
unless defined?(BEATLES)
|
|
231
|
+
BEATLES = [
|
|
232
|
+
["John", "Guitar"],
|
|
233
|
+
["George", "Guitar"],
|
|
234
|
+
["Paul", "Bass"],
|
|
235
|
+
["Ringo", "Drums"]
|
|
236
|
+
]
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
render_html %Q{
|
|
240
|
+
<div id="beatles">
|
|
241
|
+
<div class="beatle">
|
|
242
|
+
<h2>John</h2><p>Guitar</p>
|
|
243
|
+
</div>
|
|
244
|
+
<div class="beatle">
|
|
245
|
+
<h2>George</h2><p>Guitar</p>
|
|
246
|
+
</div>
|
|
247
|
+
<div class="beatle">
|
|
248
|
+
<h2>Paul</h2><p>Bass</p>
|
|
249
|
+
</div>
|
|
250
|
+
<div class="beatle">
|
|
251
|
+
<h2>Ringo</h2><p>Drums</p>
|
|
252
|
+
</div>
|
|
253
|
+
</div>
|
|
254
|
+
}
|
|
255
|
+
response.should have_tag("div#beatles>div[class=\"beatle\"]", 4)
|
|
256
|
+
|
|
257
|
+
response.should have_tag("div#beatles>div.beatle") {
|
|
258
|
+
BEATLES.each { |name, instrument|
|
|
259
|
+
with_tag("div.beatle>h2", name)
|
|
260
|
+
with_tag("div.beatle>p", instrument)
|
|
261
|
+
without_tag("div.beatle>span")
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
it "assert_select_text_match" do
|
|
267
|
+
render_html %Q{<div id="1"><span>foo</span></div><div id="2"><span>bar</span></div>}
|
|
268
|
+
response.should have_tag("div") do |divs|
|
|
269
|
+
with_tag("div", "foo")
|
|
270
|
+
with_tag("div", "bar")
|
|
271
|
+
with_tag("div", /\w*/)
|
|
272
|
+
with_tag("div", /\w*/, :count=>2)
|
|
273
|
+
without_tag("div", :text=>"foo", :count=>2)
|
|
274
|
+
with_tag("div", :html=>"<span>bar</span>")
|
|
275
|
+
with_tag("div", :html=>"<span>bar</span>")
|
|
276
|
+
with_tag("div", :html=>/\w*/)
|
|
277
|
+
with_tag("div", :html=>/\w*/, :count=>2)
|
|
278
|
+
without_tag("div", :html=>"<span>foo</span>", :count=>2)
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
it "assert_select_from_rjs with one item" do
|
|
284
|
+
render_rjs do |page|
|
|
285
|
+
page.replace_html "test", "<div id=\"1\">foo</div>\n<div id=\"2\">foo</div>"
|
|
286
|
+
end
|
|
287
|
+
response.should have_tag("div") { |elements|
|
|
288
|
+
elements.size.should == 2
|
|
289
|
+
with_tag("#1")
|
|
290
|
+
with_tag("#2")
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
lambda {
|
|
294
|
+
response.should have_tag("div") { |elements|
|
|
295
|
+
elements.size.should == 2
|
|
296
|
+
with_tag("#1")
|
|
297
|
+
with_tag("#3")
|
|
298
|
+
}
|
|
299
|
+
}.should raise_error(SpecFailed)
|
|
300
|
+
|
|
301
|
+
lambda {
|
|
302
|
+
response.should have_tag("div") { |elements|
|
|
303
|
+
elements.size.should == 2
|
|
304
|
+
with_tag("#1")
|
|
305
|
+
without_tag("#2")
|
|
306
|
+
}
|
|
307
|
+
}.should raise_error(SpecFailed, "should not have tag(\"#2\"), but did")
|
|
308
|
+
|
|
309
|
+
lambda {
|
|
310
|
+
response.should have_tag("div") { |elements|
|
|
311
|
+
elements.size.should == 3
|
|
312
|
+
with_tag("#1")
|
|
313
|
+
with_tag("#2")
|
|
314
|
+
}
|
|
315
|
+
}.should raise_error(SpecFailed)
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
response.should have_tag("div#?", /\d+/) { |elements|
|
|
319
|
+
with_tag("#1")
|
|
320
|
+
with_tag("#2")
|
|
321
|
+
}
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
it "assert_select_from_rjs with multiple items" do
|
|
325
|
+
render_rjs do |page|
|
|
326
|
+
page.replace_html "test", "<div id=\"1\">foo</div>"
|
|
327
|
+
page.replace_html "test2", "<div id=\"2\">foo</div>"
|
|
328
|
+
end
|
|
329
|
+
response.should have_tag("div")
|
|
330
|
+
response.should have_tag("div") { |elements|
|
|
331
|
+
elements.size.should == 2
|
|
332
|
+
with_tag("#1")
|
|
333
|
+
with_tag("#2")
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
lambda {
|
|
337
|
+
response.should have_tag("div") { |elements|
|
|
338
|
+
with_tag("#3")
|
|
339
|
+
}
|
|
340
|
+
}.should raise_error(SpecFailed)
|
|
341
|
+
end
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
describe "css_select", :behaviour_type => :controller do
|
|
345
|
+
include AssertSelectSpecHelpers
|
|
346
|
+
controller_name :assert_select
|
|
347
|
+
integrate_views
|
|
348
|
+
|
|
349
|
+
it "can select tags from html" do
|
|
350
|
+
render_html %Q{<div id="1"></div><div id="2"></div>}
|
|
351
|
+
css_select("div").size.should == 2
|
|
352
|
+
css_select("p").size.should == 0
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
it "can select nested tags from html" do
|
|
357
|
+
render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
|
|
358
|
+
response.should have_tag("div#?", /\d+/) { |elements|
|
|
359
|
+
css_select(elements[0], "div").should have(1).element
|
|
360
|
+
css_select(elements[1], "div").should have(1).element
|
|
361
|
+
}
|
|
362
|
+
response.should have_tag("div") {
|
|
363
|
+
css_select("div").should have(2).elements
|
|
364
|
+
css_select("div").each { |element|
|
|
365
|
+
# Testing as a group is one thing
|
|
366
|
+
css_select("#1,#2").should have(2).elements
|
|
367
|
+
# Testing individually is another
|
|
368
|
+
css_select("#1").should have(1).element
|
|
369
|
+
css_select("#2").should have(1).element
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
it "can select nested tags from rjs (one result)" do
|
|
375
|
+
render_rjs do |page|
|
|
376
|
+
page.replace_html "test", "<div id=\"1\">foo</div>\n<div id=\"2\">foo</div>"
|
|
377
|
+
end
|
|
378
|
+
css_select("div").should have(2).elements
|
|
379
|
+
css_select("#1").should have(1).element
|
|
380
|
+
css_select("#2").should have(1).element
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
it "can select nested tags from rjs (two results)" do
|
|
384
|
+
render_rjs do |page|
|
|
385
|
+
page.replace_html "test", "<div id=\"1\">foo</div>"
|
|
386
|
+
page.replace_html "test2", "<div id=\"2\">foo</div>"
|
|
387
|
+
end
|
|
388
|
+
css_select("div").should have(2).elements
|
|
389
|
+
css_select("#1").should have(1).element
|
|
390
|
+
css_select("#2").should have(1).element
|
|
391
|
+
end
|
|
392
|
+
|
|
393
|
+
end
|
|
394
|
+
|
|
395
|
+
describe "have_rjs behaviour", :behaviour_type => :controller do
|
|
396
|
+
include AssertSelectSpecHelpers
|
|
397
|
+
controller_name :assert_select
|
|
398
|
+
integrate_views
|
|
399
|
+
|
|
400
|
+
before(:each) do
|
|
401
|
+
render_rjs do |page|
|
|
402
|
+
page.replace "test1", "<div id=\"1\">foo</div>"
|
|
403
|
+
page.replace_html "test2", "<div id=\"2\">bar</div><div id=\"3\">none</div>"
|
|
404
|
+
page.insert_html :top, "test3", "<div id=\"4\">loopy</div>"
|
|
405
|
+
page.hide "test4"
|
|
406
|
+
page["test5"].hide
|
|
407
|
+
end
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
it "should pass if any rjs exists" do
|
|
411
|
+
response.should have_rjs
|
|
412
|
+
end
|
|
413
|
+
|
|
414
|
+
it "should fail if no rjs exists" do
|
|
415
|
+
render_rjs do |page|
|
|
416
|
+
end
|
|
417
|
+
lambda do
|
|
418
|
+
response.should have_rjs
|
|
419
|
+
end.should raise_error(SpecFailed)
|
|
420
|
+
end
|
|
421
|
+
|
|
422
|
+
it "should find all rjs from multiple statements" do
|
|
423
|
+
response.should have_rjs do
|
|
424
|
+
with_tag("#1")
|
|
425
|
+
with_tag("#2")
|
|
426
|
+
with_tag("#3")
|
|
427
|
+
# with_tag("#4")
|
|
428
|
+
# with_tag("#5")
|
|
429
|
+
end
|
|
430
|
+
end
|
|
431
|
+
|
|
432
|
+
it "should find by id" do
|
|
433
|
+
response.should have_rjs("test1") { |rjs|
|
|
434
|
+
rjs.size.should == 1
|
|
435
|
+
with_tag("div", 1)
|
|
436
|
+
with_tag("div#1", "foo")
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
lambda do
|
|
440
|
+
response.should have_rjs("test1") { |rjs|
|
|
441
|
+
rjs.size.should == 1
|
|
442
|
+
without_tag("div#1", "foo")
|
|
443
|
+
}
|
|
444
|
+
end.should raise_error(SpecFailed, "should not have tag(\"div#1\", \"foo\"), but did")
|
|
445
|
+
|
|
446
|
+
response.should have_rjs("test2") { |rjs|
|
|
447
|
+
rjs.size.should == 2
|
|
448
|
+
with_tag("div", 2)
|
|
449
|
+
with_tag("div#2", "bar")
|
|
450
|
+
with_tag("div#3", "none")
|
|
451
|
+
}
|
|
452
|
+
# response.should have_rjs("test4")
|
|
453
|
+
# response.should have_rjs("test5")
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
# specify "should find rjs using :hide" do
|
|
457
|
+
# response.should have_rjs(:hide)
|
|
458
|
+
# response.should have_rjs(:hide, "test4")
|
|
459
|
+
# response.should have_rjs(:hide, "test5")
|
|
460
|
+
# lambda do
|
|
461
|
+
# response.should have_rjs(:hide, "test3")
|
|
462
|
+
# end.should raise_error(SpecFailed)
|
|
463
|
+
# end
|
|
464
|
+
|
|
465
|
+
it "should find rjs using :replace" do
|
|
466
|
+
response.should have_rjs(:replace) { |rjs|
|
|
467
|
+
with_tag("div", 1)
|
|
468
|
+
with_tag("div#1", "foo")
|
|
469
|
+
}
|
|
470
|
+
response.should have_rjs(:replace, "test1") { |rjs|
|
|
471
|
+
with_tag("div", 1)
|
|
472
|
+
with_tag("div#1", "foo")
|
|
473
|
+
}
|
|
474
|
+
lambda {
|
|
475
|
+
response.should have_rjs(:replace, "test2")
|
|
476
|
+
}.should raise_error(SpecFailed)
|
|
477
|
+
|
|
478
|
+
lambda {
|
|
479
|
+
response.should have_rjs(:replace, "test3")
|
|
480
|
+
}.should raise_error(SpecFailed)
|
|
481
|
+
end
|
|
482
|
+
|
|
483
|
+
it "should find rjs using :replace_html" do
|
|
484
|
+
response.should have_rjs(:replace_html) { |rjs|
|
|
485
|
+
with_tag("div", 2)
|
|
486
|
+
with_tag("div#2", "bar")
|
|
487
|
+
with_tag("div#3", "none")
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
response.should have_rjs(:replace_html, "test2") { |rjs|
|
|
491
|
+
with_tag("div", 2)
|
|
492
|
+
with_tag("div#2", "bar")
|
|
493
|
+
with_tag("div#3", "none")
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
lambda {
|
|
497
|
+
response.should have_rjs(:replace_html, "test1")
|
|
498
|
+
}.should raise_error(SpecFailed)
|
|
499
|
+
|
|
500
|
+
lambda {
|
|
501
|
+
response.should have_rjs(:replace_html, "test3")
|
|
502
|
+
}.should raise_error(SpecFailed)
|
|
503
|
+
end
|
|
504
|
+
|
|
505
|
+
it "should find rjs using :insert_html (non-positioned)" do
|
|
506
|
+
response.should have_rjs(:insert_html) { |rjs|
|
|
507
|
+
with_tag("div", 1)
|
|
508
|
+
with_tag("div#4", "loopy")
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
response.should have_rjs(:insert_html, "test3") { |rjs|
|
|
512
|
+
with_tag("div", 1)
|
|
513
|
+
with_tag("div#4", "loopy")
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
lambda {
|
|
517
|
+
response.should have_rjs(:insert_html, "test1")
|
|
518
|
+
}.should raise_error(SpecFailed)
|
|
519
|
+
|
|
520
|
+
lambda {
|
|
521
|
+
response.should have_rjs(:insert_html, "test2")
|
|
522
|
+
}.should raise_error(SpecFailed)
|
|
523
|
+
end
|
|
524
|
+
|
|
525
|
+
it "should find rjs using :insert (positioned)" do
|
|
526
|
+
render_rjs do |page|
|
|
527
|
+
page.insert_html :top, "test1", "<div id=\"1\">foo</div>"
|
|
528
|
+
page.insert_html :bottom, "test2", "<div id=\"2\">bar</div>"
|
|
529
|
+
page.insert_html :before, "test3", "<div id=\"3\">none</div>"
|
|
530
|
+
page.insert_html :after, "test4", "<div id=\"4\">loopy</div>"
|
|
531
|
+
end
|
|
532
|
+
response.should have_rjs(:insert, :top) do
|
|
533
|
+
with_tag("div", 1)
|
|
534
|
+
with_tag("#1")
|
|
535
|
+
end
|
|
536
|
+
response.should have_rjs(:insert, :top, "test1") do
|
|
537
|
+
with_tag("div", 1)
|
|
538
|
+
with_tag("#1")
|
|
539
|
+
end
|
|
540
|
+
lambda {
|
|
541
|
+
response.should have_rjs(:insert, :top, "test2")
|
|
542
|
+
}.should raise_error(SpecFailed)
|
|
543
|
+
response.should have_rjs(:insert, :bottom) {|rjs|
|
|
544
|
+
with_tag("div", 1)
|
|
545
|
+
with_tag("#2")
|
|
546
|
+
}
|
|
547
|
+
response.should have_rjs(:insert, :bottom, "test2") {|rjs|
|
|
548
|
+
with_tag("div", 1)
|
|
549
|
+
with_tag("#2")
|
|
550
|
+
}
|
|
551
|
+
response.should have_rjs(:insert, :before) {|rjs|
|
|
552
|
+
with_tag("div", 1)
|
|
553
|
+
with_tag("#3")
|
|
554
|
+
}
|
|
555
|
+
response.should have_rjs(:insert, :before, "test3") {|rjs|
|
|
556
|
+
with_tag("div", 1)
|
|
557
|
+
with_tag("#3")
|
|
558
|
+
}
|
|
559
|
+
response.should have_rjs(:insert, :after) {|rjs|
|
|
560
|
+
with_tag("div", 1)
|
|
561
|
+
with_tag("#4")
|
|
562
|
+
}
|
|
563
|
+
response.should have_rjs(:insert, :after, "test4") {|rjs|
|
|
564
|
+
with_tag("div", 1)
|
|
565
|
+
with_tag("#4")
|
|
566
|
+
}
|
|
567
|
+
end
|
|
568
|
+
end
|
|
569
|
+
|
|
570
|
+
describe "send_email behaviour", :behaviour_type => :controller do
|
|
571
|
+
include AssertSelectSpecHelpers
|
|
572
|
+
controller_name :assert_select
|
|
573
|
+
integrate_views
|
|
574
|
+
|
|
575
|
+
before(:each) do
|
|
576
|
+
ActionMailer::Base.delivery_method = :test
|
|
577
|
+
ActionMailer::Base.perform_deliveries = true
|
|
578
|
+
ActionMailer::Base.deliveries = []
|
|
579
|
+
end
|
|
580
|
+
|
|
581
|
+
after(:each) do
|
|
582
|
+
ActionMailer::Base.deliveries.clear
|
|
583
|
+
end
|
|
584
|
+
|
|
585
|
+
it "should fail with nothing sent" do
|
|
586
|
+
response.should_not send_email
|
|
587
|
+
lambda {
|
|
588
|
+
response.should send_email{}
|
|
589
|
+
}.should raise_error(SpecFailed, /No e-mail in delivery list./)
|
|
590
|
+
end
|
|
591
|
+
|
|
592
|
+
it "should pass otherwise" do
|
|
593
|
+
AssertSelectMailer.deliver_test "<div><p>foo</p><p>bar</p></div>"
|
|
594
|
+
response.should send_email
|
|
595
|
+
lambda {
|
|
596
|
+
response.should_not send_email
|
|
597
|
+
}.should raise_error(SpecFailed)
|
|
598
|
+
response.should send_email{}
|
|
599
|
+
response.should send_email {
|
|
600
|
+
with_tag("div:root") {
|
|
601
|
+
with_tag("p:first-child", "foo")
|
|
602
|
+
with_tag("p:last-child", "bar")
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
lambda {
|
|
607
|
+
response.should_not send_email
|
|
608
|
+
}.should raise_error(SpecFailed, "should not send email, but did")
|
|
609
|
+
end
|
|
610
|
+
|
|
611
|
+
end
|
|
612
|
+
|
|
613
|
+
# describe "An rjs call to :visual_effect, a 'should have_rjs' spec with",
|
|
614
|
+
# :behaviour_type => :view do
|
|
615
|
+
#
|
|
616
|
+
# before do
|
|
617
|
+
# render 'rjs_spec/visual_effect'
|
|
618
|
+
# end
|
|
619
|
+
#
|
|
620
|
+
# it "should pass with the correct element name" do
|
|
621
|
+
# response.should have_rjs(:effect, :fade, 'mydiv')
|
|
622
|
+
# end
|
|
623
|
+
#
|
|
624
|
+
# it "should fail the wrong element name" do
|
|
625
|
+
# lambda {
|
|
626
|
+
# response.should have_rjs(:effect, :fade, 'wrongname')
|
|
627
|
+
# }.should raise_error(SpecFailed)
|
|
628
|
+
# end
|
|
629
|
+
#
|
|
630
|
+
# it "should fail with the correct element but the wrong command" do
|
|
631
|
+
# lambda {
|
|
632
|
+
# response.should have_rjs(:effect, :puff, 'mydiv')
|
|
633
|
+
# }.should raise_error(SpecFailed)
|
|
634
|
+
# end
|
|
635
|
+
#
|
|
636
|
+
# end
|
|
637
|
+
#
|
|
638
|
+
# describe "An rjs call to :visual_effect for a toggle, a 'should have_rjs' spec with",
|
|
639
|
+
# :behaviour_type => :view do
|
|
640
|
+
#
|
|
641
|
+
# before do
|
|
642
|
+
# render 'rjs_spec/visual_toggle_effect'
|
|
643
|
+
# end
|
|
644
|
+
#
|
|
645
|
+
# it "should pass with the correct element name" do
|
|
646
|
+
# response.should have_rjs(:effect, :toggle_blind, 'mydiv')
|
|
647
|
+
# end
|
|
648
|
+
#
|
|
649
|
+
# it "should fail with the wrong element name" do
|
|
650
|
+
# lambda {
|
|
651
|
+
# response.should have_rjs(:effect, :toggle_blind, 'wrongname')
|
|
652
|
+
# }.should raise_error(SpecFailed)
|
|
653
|
+
# end
|
|
654
|
+
#
|
|
655
|
+
# it "should fail the correct element but the wrong command" do
|
|
656
|
+
# lambda {
|
|
657
|
+
# response.should have_rjs(:effect, :puff, 'mydiv')
|
|
658
|
+
# }.should raise_error(SpecFailed)
|
|
659
|
+
# end
|
|
660
|
+
#
|
|
661
|
+
# end
|
|
662
|
+
|
|
663
|
+
describe "string.should have_tag", :behaviour_type => :helper do
|
|
664
|
+
include AssertSelectSpecHelpers
|
|
665
|
+
|
|
666
|
+
it "should find root element" do
|
|
667
|
+
"<p>a paragraph</p>".should have_tag("p", "a paragraph")
|
|
668
|
+
end
|
|
669
|
+
|
|
670
|
+
it "should not find non-existent element" do
|
|
671
|
+
lambda do
|
|
672
|
+
"<p>a paragraph</p>".should have_tag("p", "wrong text")
|
|
673
|
+
end.should raise_error(SpecFailed)
|
|
674
|
+
end
|
|
675
|
+
|
|
676
|
+
it "should find child element" do
|
|
677
|
+
"<div><p>a paragraph</p></div>".should have_tag("p", "a paragraph")
|
|
678
|
+
end
|
|
679
|
+
|
|
680
|
+
it "should find nested element" do
|
|
681
|
+
"<div><p>a paragraph</p></div>".should have_tag("div") do
|
|
682
|
+
with_tag("p", "a paragraph")
|
|
683
|
+
end
|
|
684
|
+
end
|
|
685
|
+
|
|
686
|
+
it "should not find wrong nested element" do
|
|
687
|
+
lambda do
|
|
688
|
+
"<div><p>a paragraph</p></div>".should have_tag("div") do
|
|
689
|
+
with_tag("p", "wrong text")
|
|
690
|
+
end
|
|
691
|
+
end.should raise_error(SpecFailed)
|
|
692
|
+
end
|
|
693
|
+
end
|
|
694
|
+
|
|
695
|
+
describe "have_tag", :behaviour_type => :controller do
|
|
696
|
+
include AssertSelectSpecHelpers
|
|
697
|
+
controller_name :assert_select
|
|
698
|
+
integrate_views
|
|
699
|
+
|
|
700
|
+
it "should work exactly the same as assert_select" do
|
|
701
|
+
render_html %Q{
|
|
702
|
+
<div id="wrapper">foo
|
|
703
|
+
<div class="piece">
|
|
704
|
+
<h3>Text</h3>
|
|
705
|
+
</div>
|
|
706
|
+
<div class="piece">
|
|
707
|
+
<h3>Another</h3>
|
|
708
|
+
</div>
|
|
709
|
+
</div>
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
assert_select "#wrapper .piece h3", :text => "Text"
|
|
713
|
+
assert_select "#wrapper .piece h3", :text => "Another"
|
|
714
|
+
|
|
715
|
+
response.should have_tag("#wrapper .piece h3", :text => "Text")
|
|
716
|
+
response.should have_tag("#wrapper .piece h3", :text => "Another")
|
|
717
|
+
end
|
|
718
|
+
end
|