spree 0.0.7 → 0.0.8
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 +5 -0
- data/Manifest.txt +158 -21
- data/config/hoe.rb +2 -1
- data/lib/spree/version.rb +1 -1
- data/starter-app/app/views/layouts/application.rhtml +6 -4
- data/starter-app/db/sample/line_items.yml +6 -4
- data/starter-app/db/sample/{variations.yml → variants.yml} +16 -0
- data/starter-app/log/README +1 -0
- data/starter-app/public/images/spree.jpg +0 -0
- data/starter-app/public/stylesheets/application.css +2 -2
- data/starter-app/script/spec +4 -0
- data/starter-app/script/spec_server +102 -0
- data/starter-app/spec/models/cart_item_spec.rb +50 -0
- data/starter-app/spec/models/cart_spec.rb +51 -0
- data/starter-app/spec/models/line_item_spec.rb +33 -0
- data/starter-app/spec/models/product_spec.rb +29 -0
- data/starter-app/spec/rcov.opts +2 -0
- data/starter-app/spec/spec.opts +6 -0
- data/starter-app/spec/spec_helper.rb +39 -0
- data/starter-app/stories/all.rb +4 -0
- data/starter-app/stories/helper.rb +3 -0
- data/starter-app/vendor/plugins/rspec_on_rails/MIT-LICENSE +31 -0
- data/starter-app/vendor/plugins/rspec_on_rails/README +3 -0
- data/starter-app/vendor/plugins/rspec_on_rails/Rakefile +9 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec/CHANGES +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec/rspec_generator.rb +35 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec/templates/all_stories.rb +4 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec/templates/previous_failures.txt +0 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec/templates/rcov.opts +2 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec/templates/script/spec +4 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec/templates/script/spec_server +102 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec/templates/spec.opts +6 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec/templates/spec_helper.rb +39 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec/templates/stories_helper.rb +3 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_controller/USAGE +33 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_controller/rspec_controller_generator.rb +49 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/controller_spec.rb +25 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/helper_spec.rb +11 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/view_spec.rb +12 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_model/USAGE +18 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_model/rspec_model_generator.rb +30 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_model/templates/model_spec.rb +11 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/rspec_scaffold_generator.rb +167 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/controller_spec.rb +313 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/edit_erb_spec.rb +25 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/helper_spec.rb +11 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/index_erb_spec.rb +22 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/new_erb_spec.rb +26 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/routing_spec.rb +61 -0
- data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/show_erb_spec.rb +22 -0
- data/starter-app/vendor/plugins/rspec_on_rails/init.rb +9 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/autotest/discover.rb +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/autotest/rails_rspec.rb +81 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails.rb +51 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/example.rb +47 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/example/assigns_hash_proxy.rb +42 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/example/controller_example_group.rb +255 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/example/functional_example_group.rb +66 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/example/helper_example_group.rb +82 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/example/ivar_proxy.rb +62 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/example/model_example_group.rb +14 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/example/rails_example_group.rb +68 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/example/render_observer.rb +90 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/example/view_example_group.rb +171 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions.rb +12 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/base.rb +14 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/rescue.rb +21 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/test_response.rb +11 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_view/base.rb +27 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/active_record/base.rb +30 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/object.rb +5 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/spec/example/configuration.rb +66 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/spec/matchers/have.rb +21 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers.rb +29 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/assert_select.rb +130 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/have_text.rb +55 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/redirect_to.rb +113 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/render_template.rb +70 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/story_adapter.rb +71 -0
- data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/version.rb +23 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/autotest/mappings_spec.rb +36 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/autotest/rails_rspec_spec.rb +8 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/example/assigns_hash_proxy_spec.rb +55 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/example/configuration_spec.rb +83 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/example/controller_isolation_spec.rb +43 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/example/controller_spec_spec.rb +187 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/example/example_group_factory_spec.rb +112 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/example/helper_spec_spec.rb +118 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/example/ivar_proxy_spec.rb +64 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/example/model_spec_spec.rb +18 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/example/shared_behaviour_spec.rb +16 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/example/test_unit_assertion_accessibility_spec.rb +33 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/example/view_spec_spec.rb +263 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/extensions/action_controller_rescue_action_spec.rb +54 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/extensions/action_view_base_spec.rb +48 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/extensions/active_record_spec.rb +14 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/matchers/assert_select_spec.rb +783 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/matchers/description_generation_spec.rb +37 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/matchers/errors_on_spec.rb +13 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/matchers/have_text_spec.rb +62 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/matchers/redirect_to_spec.rb +203 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/matchers/render_spec.rb +169 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/mocks/mock_model_spec.rb +65 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/sample_spec.rb +7 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/spec_server_spec.rb +89 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails/spec_spec.rb +11 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/rails_suite.rb +7 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec/spec_helper.rb +46 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/controllers/action_view_base_spec_controller.rb +2 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/controllers/controller_spec_controller.rb +56 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/controllers/redirect_spec_controller.rb +59 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/controllers/render_spec_controller.rb +26 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/controllers/rjs_spec_controller.rb +58 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/helpers/explicit_helper.rb +10 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/helpers/more_explicit_helper.rb +5 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/helpers/plugin_application_helper.rb +6 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/helpers/view_spec_helper.rb +13 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/_partial.rhtml +0 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_the_assigns_hash.rhtml +0 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_errors_in_template.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_template.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/_a_partial.rhtml +0 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.js.rjs +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rhtml +0 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rjs +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/_replacement_partial.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_div.rjs +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_page_element.rjs +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/insert_html.rjs +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace.rjs +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html.rjs +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html_with_partial.rjs +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_effect.rjs +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_toggle_effect.rjs +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/no_tags.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_no_attributes.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_one_attribute.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial.rhtml +2 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_used_twice.rhtml +0 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_with_local_variable.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_with_sub_partial.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_spacer.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/accessor.rhtml +3 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/entry_form.rhtml +2 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/explicit_helper.rhtml +2 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/foo/show.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/implicit_helper.rhtml +2 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/multiple_helpers.rhtml +3 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial.rhtml +5 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial_using_collection.rhtml +3 -0
- data/starter-app/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial_with_array.rhtml +1 -0
- data/starter-app/vendor/plugins/rspec_on_rails/stories/all.rb +10 -0
- data/starter-app/vendor/plugins/rspec_on_rails/stories/helper.rb +5 -0
- data/starter-app/vendor/plugins/rspec_on_rails/stories/steps/people.rb +8 -0
- data/starter-app/vendor/plugins/rspec_on_rails/stories/transactions_should_rollback +15 -0
- data/starter-app/vendor/plugins/rspec_on_rails/stories/transactions_should_rollback.rb +25 -0
- data/starter-app/vendor/plugins/rspec_on_rails/tasks/rspec.rake +137 -0
- data/starter-app/vendor/plugins/spree/LICENSE +1 -1
- data/starter-app/vendor/plugins/spree/app/controllers/admin/categories_controller.rb +0 -24
- data/starter-app/vendor/plugins/spree/app/controllers/admin/products_controller.rb +16 -16
- data/starter-app/vendor/plugins/spree/app/controllers/cart_controller.rb +2 -8
- data/starter-app/vendor/plugins/spree/app/helpers/admin/products_helper.rb +1 -1
- data/starter-app/vendor/plugins/spree/app/helpers/spree/base_helper.rb +2 -2
- data/starter-app/vendor/plugins/spree/app/models/cart.rb +7 -20
- data/starter-app/vendor/plugins/spree/app/models/cart_item.rb +3 -6
- data/starter-app/vendor/plugins/spree/app/models/category.rb +6 -22
- data/starter-app/vendor/plugins/spree/app/models/line_item.rb +3 -5
- data/starter-app/vendor/plugins/spree/app/models/option_value.rb +1 -1
- data/starter-app/vendor/plugins/spree/app/models/product.rb +18 -2
- data/starter-app/vendor/plugins/spree/app/models/variant.rb +5 -0
- data/starter-app/vendor/plugins/spree/app/views/admin/categories/_form.rhtml +1 -5
- data/starter-app/vendor/plugins/spree/app/views/admin/overview/index.rhtml +3 -0
- data/starter-app/vendor/plugins/spree/app/views/admin/products/_form.rhtml +2 -2
- data/starter-app/vendor/plugins/spree/app/views/admin/products/{_new_variation.rhtml → _new_variant.rhtml} +1 -1
- data/starter-app/vendor/plugins/spree/app/views/admin/products/_variants.rhtml +43 -0
- data/starter-app/vendor/plugins/spree/app/views/cart/index.rhtml +4 -4
- data/starter-app/vendor/plugins/spree/app/views/layouts/admin.rhtml +1 -1
- data/starter-app/vendor/plugins/spree/app/views/order_mailer/cancel.rhtml +1 -1
- data/starter-app/vendor/plugins/spree/app/views/order_mailer/confirm.rhtml +1 -1
- data/starter-app/vendor/plugins/spree/app/views/shared/_order_details.rhtml +1 -1
- data/starter-app/vendor/plugins/spree/app/views/store/show.rhtml +30 -29
- data/starter-app/vendor/plugins/spree/assets/images/spree/spree.jpg +0 -0
- data/starter-app/vendor/plugins/spree/assets/stylesheets/spree-admin.css +1 -1
- data/starter-app/vendor/plugins/spree/assets/stylesheets/store/_controller.css +1 -1
- data/starter-app/vendor/plugins/spree/db/migrate/002_create_cart_items.rb +1 -2
- data/starter-app/vendor/plugins/spree/db/migrate/006_create_line_items.rb +5 -7
- data/starter-app/vendor/plugins/spree/db/migrate/011_create_variants.rb +11 -0
- data/starter-app/vendor/plugins/spree/db/migrate/018_create_option_values_variants.rb +12 -0
- data/starter-app/vendor/plugins/spree/test/unit/product_test.rb +0 -33
- metadata +170 -23
- data/starter-app/vendor/plugins/spree/app/controllers/admin/variations_controller.rb +0 -73
- data/starter-app/vendor/plugins/spree/app/helpers/admin/variations_helper.rb +0 -2
- data/starter-app/vendor/plugins/spree/app/models/variation.rb +0 -8
- data/starter-app/vendor/plugins/spree/app/views/admin/option_types/test.rhtml +0 -8
- data/starter-app/vendor/plugins/spree/app/views/admin/products/_variations.rhtml +0 -41
- data/starter-app/vendor/plugins/spree/app/views/admin/variations/_form.rhtml +0 -33
- data/starter-app/vendor/plugins/spree/app/views/admin/variations/_option_values.rhtml +0 -5
- data/starter-app/vendor/plugins/spree/app/views/admin/variations/list.rhtml +0 -23
- data/starter-app/vendor/plugins/spree/app/views/admin/variations/new.rhtml +0 -14
- data/starter-app/vendor/plugins/spree/assets/images/spree/spree_logo142x65.gif +0 -0
- data/starter-app/vendor/plugins/spree/assets/images/spree/spree_logo245x112.gif +0 -0
- data/starter-app/vendor/plugins/spree/db/migrate/011_create_variations.rb +0 -11
- data/starter-app/vendor/plugins/spree/db/migrate/018_create_option_values_variations.rb +0 -12
- data/starter-app/vendor/plugins/spree/test/functional/admin/variations_controller_test.rb +0 -18
- data/starter-app/vendor/plugins/spree/test/integration/variations_test.rb +0 -24
- data/starter-app/vendor/plugins/spree/test/unit/cart_item_test.rb +0 -55
- data/starter-app/vendor/plugins/spree/test/unit/cart_test.rb +0 -35
- data/starter-app/vendor/plugins/spree/test/unit/line_item_test.rb +0 -61
- data/starter-app/vendor/plugins/spree/test/unit/variation_test.rb +0 -9
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'spec'
|
|
2
|
+
|
|
3
|
+
require 'spec/rails/extensions/object'
|
|
4
|
+
|
|
5
|
+
require 'spec/rails/extensions/spec/example/configuration'
|
|
6
|
+
require 'spec/rails/extensions/spec/matchers/have'
|
|
7
|
+
|
|
8
|
+
require 'spec/rails/extensions/active_record/base'
|
|
9
|
+
require 'spec/rails/extensions/action_controller/base'
|
|
10
|
+
require 'spec/rails/extensions/action_controller/rescue'
|
|
11
|
+
require 'spec/rails/extensions/action_controller/test_response'
|
|
12
|
+
require 'spec/rails/extensions/action_view/base'
|
data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/rescue.rb
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module ActionController
|
|
2
|
+
module Rescue
|
|
3
|
+
def use_rails_error_handling!
|
|
4
|
+
@use_rails_error_handling = true
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def use_rails_error_handling?
|
|
8
|
+
@use_rails_error_handling ||= false
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
protected
|
|
12
|
+
def rescue_action_with_fast_errors(exception)
|
|
13
|
+
if use_rails_error_handling?
|
|
14
|
+
rescue_action_without_fast_errors exception
|
|
15
|
+
else
|
|
16
|
+
raise exception
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
alias_method_chain :rescue_action, :fast_errors
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module ActionView #:nodoc:
|
|
2
|
+
class Base #:nodoc:
|
|
3
|
+
include Spec::Rails::Example::RenderObserver
|
|
4
|
+
cattr_accessor :base_view_path
|
|
5
|
+
def render_partial(partial_path, local_assigns = nil, deprecated_local_assigns = nil) #:nodoc:
|
|
6
|
+
if partial_path.is_a?(String)
|
|
7
|
+
unless partial_path.include?("/")
|
|
8
|
+
unless self.class.base_view_path.nil?
|
|
9
|
+
partial_path = "#{self.class.base_view_path}/#{partial_path}"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
super(partial_path, local_assigns, deprecated_local_assigns)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
alias_method :orig_render, :render
|
|
17
|
+
def render(options = {}, old_local_assigns = {}, &block)
|
|
18
|
+
if expect_render_mock_proxy.send(:__mock_proxy).send(:find_matching_expectation, :render, options)
|
|
19
|
+
expect_render_mock_proxy.render(options)
|
|
20
|
+
else
|
|
21
|
+
unless expect_render_mock_proxy.send(:__mock_proxy).send(:find_matching_method_stub, :render, options)
|
|
22
|
+
orig_render(options, old_local_assigns, &block)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/active_record/base.rb
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
if defined?(ActiveRecord::Base)
|
|
2
|
+
module ActiveRecord #:nodoc:
|
|
3
|
+
class Base
|
|
4
|
+
|
|
5
|
+
(class << self; self; end).class_eval do
|
|
6
|
+
# Extension for <tt>should have</tt> on AR Model classes
|
|
7
|
+
#
|
|
8
|
+
# ModelClass.should have(:no).records
|
|
9
|
+
# ModelClass.should have(1).record
|
|
10
|
+
# ModelClass.should have(n).records
|
|
11
|
+
def records
|
|
12
|
+
find(:all)
|
|
13
|
+
end
|
|
14
|
+
alias :record :records
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Extension for <tt>should have</tt> on AR Model instances
|
|
18
|
+
#
|
|
19
|
+
# model.should have(:no).errors_on(:attribute)
|
|
20
|
+
# model.should have(1).error_on(:attribute)
|
|
21
|
+
# model.should have(n).errors_on(:attribute)
|
|
22
|
+
def errors_on(attribute)
|
|
23
|
+
self.valid?
|
|
24
|
+
[self.errors.on(attribute)].flatten.compact
|
|
25
|
+
end
|
|
26
|
+
alias :error_on :errors_on
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require 'spec/example/configuration'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Example
|
|
5
|
+
class Configuration
|
|
6
|
+
# Rails 1.2.3 does a copy of the @inheritable_attributes to the subclass when the subclass is
|
|
7
|
+
# created. This causes an ordering issue when setting state on Configuration because the data is
|
|
8
|
+
# already copied.
|
|
9
|
+
# Iterating over EXAMPLE_GROUP_CLASSES causes the base ExampleGroup classes to have their
|
|
10
|
+
# @inheritable_attributes updated.
|
|
11
|
+
# TODO: BT - When we no longer support Rails 1.2.3, we can remove this functionality
|
|
12
|
+
EXAMPLE_GROUP_CLASSES = [
|
|
13
|
+
::Test::Unit::TestCase,
|
|
14
|
+
::Spec::Rails::Example::RailsExampleGroup,
|
|
15
|
+
::Spec::Rails::Example::FunctionalExampleGroup,
|
|
16
|
+
::Spec::Rails::Example::ControllerExampleGroup,
|
|
17
|
+
::Spec::Rails::Example::ViewExampleGroup,
|
|
18
|
+
::Spec::Rails::Example::HelperExampleGroup,
|
|
19
|
+
::Spec::Rails::Example::ModelExampleGroup
|
|
20
|
+
]
|
|
21
|
+
# All of this is ActiveRecord related and makes no sense if it's not used by the app
|
|
22
|
+
if defined?(ActiveRecord::Base)
|
|
23
|
+
def initialize
|
|
24
|
+
super
|
|
25
|
+
self.fixture_path = RAILS_ROOT + '/spec/fixtures'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def use_transactional_fixtures
|
|
29
|
+
Test::Unit::TestCase.use_transactional_fixtures
|
|
30
|
+
end
|
|
31
|
+
def use_transactional_fixtures=(value)
|
|
32
|
+
EXAMPLE_GROUP_CLASSES.each do |example_group|
|
|
33
|
+
example_group.use_transactional_fixtures = value
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def use_instantiated_fixtures
|
|
38
|
+
Test::Unit::TestCase.use_instantiated_fixtures
|
|
39
|
+
end
|
|
40
|
+
def use_instantiated_fixtures=(value)
|
|
41
|
+
EXAMPLE_GROUP_CLASSES.each do |example_group|
|
|
42
|
+
example_group.use_instantiated_fixtures = value
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def fixture_path
|
|
47
|
+
Test::Unit::TestCase.fixture_path
|
|
48
|
+
end
|
|
49
|
+
def fixture_path=(path)
|
|
50
|
+
EXAMPLE_GROUP_CLASSES.each do |example_group|
|
|
51
|
+
example_group.fixture_path = path
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def global_fixtures
|
|
56
|
+
::Test::Unit::TestCase.fixture_table_names
|
|
57
|
+
end
|
|
58
|
+
def global_fixtures=(fixtures)
|
|
59
|
+
EXAMPLE_GROUP_CLASSES.each do |example_group|
|
|
60
|
+
example_group.fixtures(*fixtures)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
data/starter-app/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/spec/matchers/have.rb
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'spec/matchers/have'
|
|
2
|
+
|
|
3
|
+
module Spec #:nodoc:
|
|
4
|
+
module Matchers #:nodoc:
|
|
5
|
+
class Have #:nodoc:
|
|
6
|
+
alias_method :__original_failure_message, :failure_message
|
|
7
|
+
def failure_message
|
|
8
|
+
return "expected #{relativities[@relativity]}#{@expected} errors on :#{@args[0]}, got #{@actual}" if @collection_name == :errors_on
|
|
9
|
+
return "expected #{relativities[@relativity]}#{@expected} error on :#{@args[0]}, got #{@actual}" if @collection_name == :error_on
|
|
10
|
+
return __original_failure_message
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
alias_method :__original_description, :description
|
|
14
|
+
def description
|
|
15
|
+
return "should have #{relativities[@relativity]}#{@expected} errors on :#{@args[0]}" if @collection_name == :errors_on
|
|
16
|
+
return "should have #{relativities[@relativity]}#{@expected} error on :#{@args[0]}" if @collection_name == :error_on
|
|
17
|
+
return __original_description
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
dir = File.dirname(__FILE__)
|
|
2
|
+
require 'spec/rails/matchers/assert_select'
|
|
3
|
+
require 'spec/rails/matchers/have_text'
|
|
4
|
+
require 'spec/rails/matchers/redirect_to'
|
|
5
|
+
require 'spec/rails/matchers/render_template'
|
|
6
|
+
|
|
7
|
+
module Spec
|
|
8
|
+
module Rails
|
|
9
|
+
# Spec::Rails::Expectations::Matchers provides several expectation matchers
|
|
10
|
+
# intended to work with Rails components like models and responses. For example:
|
|
11
|
+
#
|
|
12
|
+
# response.should redirect_to("some/url") #redirect_to(url) is the matcher.
|
|
13
|
+
#
|
|
14
|
+
# In addition to those you see below, the arbitrary predicate feature of RSpec
|
|
15
|
+
# makes the following available as well:
|
|
16
|
+
#
|
|
17
|
+
# response.should be_success #passes if response.success?
|
|
18
|
+
# response.should be_redirect #passes if response.redirect?
|
|
19
|
+
#
|
|
20
|
+
# Note that many of these matchers are part of a wrapper of <tt>assert_select</tt>, so
|
|
21
|
+
# the documentation comes straight from that with some slight modifications.
|
|
22
|
+
# <tt>assert_select</tt> is a Test::Unit extension originally contributed to the
|
|
23
|
+
# Rails community as a plugin by Assaf Arkin and eventually shipped as part of Rails.
|
|
24
|
+
#
|
|
25
|
+
# For more info on <tt>assert_select</tt>, see the relevant Rails documentation.
|
|
26
|
+
module Matchers
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# This is a wrapper of assert_select for rspec.
|
|
2
|
+
|
|
3
|
+
module Spec # :nodoc:
|
|
4
|
+
module Rails
|
|
5
|
+
module Matchers
|
|
6
|
+
|
|
7
|
+
class AssertSelect #:nodoc:
|
|
8
|
+
|
|
9
|
+
def initialize(assertion, spec_scope, *args, &block)
|
|
10
|
+
@assertion = assertion
|
|
11
|
+
@spec_scope = spec_scope
|
|
12
|
+
@args = args
|
|
13
|
+
@block = block
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def matches?(response_or_text, &block)
|
|
17
|
+
if ActionController::TestResponse === response_or_text and
|
|
18
|
+
response_or_text.headers.key?('Content-Type') and
|
|
19
|
+
response_or_text.headers['Content-Type'].to_sym == :xml
|
|
20
|
+
@args.unshift(HTML::Document.new(response_or_text.body, false, true).root)
|
|
21
|
+
elsif String === response_or_text
|
|
22
|
+
@args.unshift(HTML::Document.new(response_or_text).root)
|
|
23
|
+
end
|
|
24
|
+
@block = block if block
|
|
25
|
+
begin
|
|
26
|
+
@spec_scope.send(@assertion, *@args, &@block)
|
|
27
|
+
rescue ::Test::Unit::AssertionFailedError => @error
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
@error.nil?
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def failure_message; @error.message; end
|
|
34
|
+
def negative_failure_message; "should not #{description}, but did"; end
|
|
35
|
+
|
|
36
|
+
def description
|
|
37
|
+
{
|
|
38
|
+
:assert_select => "have tag#{format_args(*@args)}",
|
|
39
|
+
:assert_select_email => "send email#{format_args(*@args)}",
|
|
40
|
+
}[@assertion]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def format_args(*args)
|
|
46
|
+
return "" if args.empty?
|
|
47
|
+
return "(#{arg_list(*args)})"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def arg_list(*args)
|
|
51
|
+
args.collect do |arg|
|
|
52
|
+
arg.respond_to?(:description) ? arg.description : arg.inspect
|
|
53
|
+
end.join(", ")
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# :call-seq:
|
|
59
|
+
# response.should have_tag(*args, &block)
|
|
60
|
+
# string.should have_tag(*args, &block)
|
|
61
|
+
#
|
|
62
|
+
# wrapper for assert_select with additional support for using
|
|
63
|
+
# css selectors to set expectation on Strings. Use this in
|
|
64
|
+
# helper specs, for example, to set expectations on the results
|
|
65
|
+
# of helper methods.
|
|
66
|
+
#
|
|
67
|
+
# == Examples
|
|
68
|
+
#
|
|
69
|
+
# # in a controller spec
|
|
70
|
+
# response.should have_tag("div", "some text")
|
|
71
|
+
#
|
|
72
|
+
# # in a helper spec (person_address_tag is a method in the helper)
|
|
73
|
+
# person_address_tag.should have_tag("input#person_address")
|
|
74
|
+
#
|
|
75
|
+
# see documentation for assert_select at http://api.rubyonrails.org/
|
|
76
|
+
def have_tag(*args, &block)
|
|
77
|
+
AssertSelect.new(:assert_select, self, *args, &block)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# wrapper for a nested assert_select
|
|
81
|
+
#
|
|
82
|
+
# response.should have_tag("div#form") do
|
|
83
|
+
# with_tag("input#person_name[name=?]", "person[name]")
|
|
84
|
+
# end
|
|
85
|
+
#
|
|
86
|
+
# see documentation for assert_select at http://api.rubyonrails.org/
|
|
87
|
+
def with_tag(*args, &block)
|
|
88
|
+
should have_tag(*args, &block)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# wrapper for a nested assert_select with false
|
|
92
|
+
#
|
|
93
|
+
# response.should have_tag("div#1") do
|
|
94
|
+
# without_tag("span", "some text that shouldn't be there")
|
|
95
|
+
# end
|
|
96
|
+
#
|
|
97
|
+
# see documentation for assert_select at http://api.rubyonrails.org/
|
|
98
|
+
def without_tag(*args, &block)
|
|
99
|
+
should_not have_tag(*args, &block)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# :call-seq:
|
|
103
|
+
# response.should have_rjs(*args, &block)
|
|
104
|
+
#
|
|
105
|
+
# wrapper for assert_select_rjs
|
|
106
|
+
#
|
|
107
|
+
# see documentation for assert_select_rjs at http://api.rubyonrails.org/
|
|
108
|
+
def have_rjs(*args, &block)
|
|
109
|
+
AssertSelect.new(:assert_select_rjs, self, *args, &block)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# :call-seq:
|
|
113
|
+
# response.should send_email(*args, &block)
|
|
114
|
+
#
|
|
115
|
+
# wrapper for assert_select_email
|
|
116
|
+
#
|
|
117
|
+
# see documentation for assert_select_email at http://api.rubyonrails.org/
|
|
118
|
+
def send_email(*args, &block)
|
|
119
|
+
AssertSelect.new(:assert_select_email, self, *args, &block)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# wrapper for assert_select_encoded
|
|
123
|
+
#
|
|
124
|
+
# see documentation for assert_select_encoded at http://api.rubyonrails.org/
|
|
125
|
+
def with_encoded(*args, &block)
|
|
126
|
+
should AssertSelect.new(:assert_select_encoded, self, *args, &block)
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Rails
|
|
3
|
+
module Matchers
|
|
4
|
+
|
|
5
|
+
class HaveText #:nodoc:
|
|
6
|
+
|
|
7
|
+
def initialize(expected)
|
|
8
|
+
@expected = expected
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def matches?(response_or_text)
|
|
12
|
+
@actual = response_or_text.respond_to?(:body) ? response_or_text.body : response_or_text
|
|
13
|
+
return actual =~ expected if Regexp === expected
|
|
14
|
+
return actual == expected unless Regexp === expected
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def failure_message
|
|
18
|
+
"expected #{expected.inspect}, got #{actual.inspect}"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def negative_failure_message
|
|
22
|
+
"expected not to have text #{expected.inspect}"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def to_s
|
|
26
|
+
"have text #{expected.inspect}"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
attr_reader :expected
|
|
31
|
+
attr_reader :actual
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# :call-seq:
|
|
36
|
+
# response.should have_text(expected)
|
|
37
|
+
# response.should_not have_text(expected)
|
|
38
|
+
#
|
|
39
|
+
# Accepts a String or a Regexp, matching a String using ==
|
|
40
|
+
# and a Regexp using =~.
|
|
41
|
+
#
|
|
42
|
+
# Use this instead of <tt>response.should have_tag()</tt>
|
|
43
|
+
# when you either don't know or don't care where on the page
|
|
44
|
+
# this text appears.
|
|
45
|
+
#
|
|
46
|
+
# == Examples
|
|
47
|
+
#
|
|
48
|
+
# response.should have_text("This is the expected text")
|
|
49
|
+
def have_text(text)
|
|
50
|
+
HaveText.new(text)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Rails
|
|
3
|
+
module Matchers
|
|
4
|
+
|
|
5
|
+
class RedirectTo #:nodoc:
|
|
6
|
+
|
|
7
|
+
def initialize(request, expected)
|
|
8
|
+
@expected = expected
|
|
9
|
+
@request = request
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def matches?(response)
|
|
13
|
+
@redirected = response.redirect?
|
|
14
|
+
@actual = response.redirect_url
|
|
15
|
+
return false unless @redirected
|
|
16
|
+
if @expected.instance_of? Hash
|
|
17
|
+
return false unless @actual =~ %r{^\w+://#{@request.host}}
|
|
18
|
+
return false unless actual_redirect_to_valid_route
|
|
19
|
+
return actual_hash == expected_hash
|
|
20
|
+
else
|
|
21
|
+
return @actual == expected_url
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def actual_hash
|
|
26
|
+
hash_from_url @actual
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def expected_hash
|
|
30
|
+
hash_from_url expected_url
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def actual_redirect_to_valid_route
|
|
34
|
+
actual_hash
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def hash_from_url(url)
|
|
38
|
+
query_hash(url).merge(path_hash(url)).with_indifferent_access
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def path_hash(url)
|
|
42
|
+
path = url.sub(%r{^\w+://#{@request.host}}, "").split("?", 2)[0]
|
|
43
|
+
ActionController::Routing::Routes.recognize_path path
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def query_hash(url)
|
|
47
|
+
query = url.split("?", 2)[1] || ""
|
|
48
|
+
QueryParameterParser.parse_query_parameters(query, @request)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def expected_url
|
|
52
|
+
case @expected
|
|
53
|
+
when Hash
|
|
54
|
+
return ActionController::UrlRewriter.new(@request, {}).rewrite(@expected)
|
|
55
|
+
when :back
|
|
56
|
+
return @request.env['HTTP_REFERER']
|
|
57
|
+
when %r{^\w+://.*}
|
|
58
|
+
return @expected
|
|
59
|
+
else
|
|
60
|
+
return "http://#{@request.host}" + (@expected.split('')[0] == '/' ? '' : '/') + @expected
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def failure_message
|
|
65
|
+
if @redirected
|
|
66
|
+
return %Q{expected redirect to #{@expected.inspect}, got redirect to #{@actual.inspect}}
|
|
67
|
+
else
|
|
68
|
+
return %Q{expected redirect to #{@expected.inspect}, got no redirect}
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def negative_failure_message
|
|
73
|
+
return %Q{expected not to be redirected to #{@expected.inspect}, but was} if @redirected
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def description
|
|
77
|
+
"redirect to #{@actual.inspect}"
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
class QueryParameterParser
|
|
81
|
+
def self.parse_query_parameters(query, request)
|
|
82
|
+
if defined?(CGIMethods)
|
|
83
|
+
CGIMethods.parse_query_parameters(query)
|
|
84
|
+
else
|
|
85
|
+
request.class.parse_query_parameters(query)
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# :call-seq:
|
|
92
|
+
# response.should redirect_to(url)
|
|
93
|
+
# response.should redirect_to(:action => action_name)
|
|
94
|
+
# response.should redirect_to(:controller => controller_name, :action => action_name)
|
|
95
|
+
# response.should_not redirect_to(url)
|
|
96
|
+
# response.should_not redirect_to(:action => action_name)
|
|
97
|
+
# response.should_not redirect_to(:controller => controller_name, :action => action_name)
|
|
98
|
+
#
|
|
99
|
+
# Passes if the response is a redirect to the url, action or controller/action.
|
|
100
|
+
# Useful in controller specs (integration or isolation mode).
|
|
101
|
+
#
|
|
102
|
+
# == Examples
|
|
103
|
+
#
|
|
104
|
+
# response.should redirect_to("path/to/action")
|
|
105
|
+
# response.should redirect_to("http://test.host/path/to/action")
|
|
106
|
+
# response.should redirect_to(:action => 'list')
|
|
107
|
+
def redirect_to(opts)
|
|
108
|
+
RedirectTo.new(request, opts)
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
end
|