spree 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of spree might be problematic. Click here for more details.
- 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,50 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
|
3
|
+
describe CartItem do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@cart_item = CartItem.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should only accept numeric quantity" do
|
10
|
+
@cart_item.quantity = "foo"
|
11
|
+
@cart_item.should_not be_valid
|
12
|
+
@cart_item.errors.should be_invalid(:quantity)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should require the quantity to be an integer" do
|
16
|
+
@cart_item.quantity = 0.5
|
17
|
+
@cart_item.should_not be_valid
|
18
|
+
@cart_item.errors.should be_invalid(:quantity)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should require the quantity to be positive" do
|
22
|
+
@cart_item.quantity = -1
|
23
|
+
@cart_item.should_not be_valid
|
24
|
+
@cart_item.errors.should be_invalid(:quantity)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should accept a valid quantity of 1" do
|
28
|
+
@cart_item.quantity = 1
|
29
|
+
variant_proxy = mock_model(Variant)
|
30
|
+
@cart_item.stub!(:variant).and_return(variant_proxy)
|
31
|
+
@cart_item.should be_valid
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should successfully increment the quantity" do
|
35
|
+
@cart_item.quantity = 1
|
36
|
+
@cart_item.increment_quantity
|
37
|
+
@cart_item.quantity.should == 2
|
38
|
+
end
|
39
|
+
|
40
|
+
# TODO - consider testing the price effect if we decide to keep this (see the old unit test below )
|
41
|
+
#def test_price
|
42
|
+
# p = Product.new
|
43
|
+
# p.stubs(:price).returns PRICE
|
44
|
+
# p.stubs(:quantity).returns 1
|
45
|
+
# @cart_item.product = p
|
46
|
+
# @cart_item.variation = Variation.new(:price_effect => PRICE_EFFECT)
|
47
|
+
# assert_equal PRICE + PRICE_EFFECT, @cart_item.price
|
48
|
+
#end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
|
3
|
+
describe Cart do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@cart = Cart.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should be able to add a variant" do
|
10
|
+
variant_proxy = mock_model(Variant)
|
11
|
+
@cart.add_variant(variant_proxy)
|
12
|
+
cart_item = @cart.cart_items.first
|
13
|
+
cart_item.variant.should == variant_proxy
|
14
|
+
cart_item.quantity.should == 1
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should increment the quantity when variant is already in the cart" do
|
18
|
+
ci_proxy = mock_model(CartItem)
|
19
|
+
ci_proxy.should_receive(:increment_quantity).and_return(2)
|
20
|
+
|
21
|
+
# use this stub to simulate the scenario where item is already in the cart (whic is stored in the database)
|
22
|
+
CartItem.stub!(:find).and_return(ci_proxy)
|
23
|
+
|
24
|
+
variant_proxy = mock_model(Variant)
|
25
|
+
@cart.add_variant(variant_proxy)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should add the variant to the cart with the specified quantity" do
|
29
|
+
variant_proxy = mock_model(Variant)
|
30
|
+
@cart.add_variant(variant_proxy, 5)
|
31
|
+
@cart.cart_items.first.quantity.should == 5
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should return the correct cart item total" do
|
35
|
+
v1_proxy = mock_model(Variant)
|
36
|
+
p1_proxy = mock_model(Product)
|
37
|
+
p1_proxy.stub!(:price).and_return(10)
|
38
|
+
v1_proxy.stub!(:product).and_return(p1_proxy)
|
39
|
+
|
40
|
+
v2_proxy = mock_model(Variant)
|
41
|
+
p2_proxy = mock_model(Product)
|
42
|
+
p2_proxy.stub!(:price).and_return(100)
|
43
|
+
v2_proxy.stub!(:product).and_return(p2_proxy)
|
44
|
+
|
45
|
+
@cart.add_variant(v1_proxy, 2)
|
46
|
+
@cart.add_variant(v2_proxy)
|
47
|
+
|
48
|
+
@cart.total.should == 120
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
|
3
|
+
describe LineItem do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@line_item = LineItem.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should create the correct line item from the given cart item" do
|
10
|
+
variant_proxy = mock_model(Variant)
|
11
|
+
ci_proxy = mock_model(CartItem)
|
12
|
+
ci_proxy.should_receive(:quantity).and_return(2)
|
13
|
+
ci_proxy.should_receive(:variant).and_return(variant_proxy)
|
14
|
+
ci_proxy.should_receive(:price).and_return(10)
|
15
|
+
|
16
|
+
li = LineItem.from_cart_item(ci_proxy)
|
17
|
+
li.price.should == 10
|
18
|
+
li.quantity.should == 2
|
19
|
+
li.variant.should == variant_proxy
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should return the correct line item total" do
|
23
|
+
variant_proxy = mock_model(Variant)
|
24
|
+
ci_proxy = mock_model(CartItem)
|
25
|
+
ci_proxy.should_receive(:quantity).and_return(3)
|
26
|
+
ci_proxy.should_receive(:variant).and_return(variant_proxy)
|
27
|
+
ci_proxy.should_receive(:price).and_return(10)
|
28
|
+
|
29
|
+
li = LineItem.from_cart_item(ci_proxy)
|
30
|
+
li.total.should == 30
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
|
3
|
+
describe Product do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@product = Product.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should report no variants when variants is empty" do
|
10
|
+
@product.variants?.should be_false
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should report no variants when none of the variants have option values" do
|
14
|
+
variant_proxy = mock_model(Variant)
|
15
|
+
variant_proxy.should_receive(:option_values).and_return([])
|
16
|
+
@product.variants << variant_proxy
|
17
|
+
@product.variants?.should be_false
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should report variants when all of the variants have option values" do
|
21
|
+
ov_proxy = mock_model(OptionValue)
|
22
|
+
variant_proxy = mock_model(Variant)
|
23
|
+
variant_proxy.should_receive(:option_values).and_return([ov_proxy])
|
24
|
+
@product.variants << variant_proxy
|
25
|
+
@product.variants?.should be_true
|
26
|
+
end
|
27
|
+
|
28
|
+
# TODO - Add the rest of the unit test stuff from product_test (once we're sure about tax treatment handling)
|
29
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# This file is copied to ~/spec when you run 'ruby script/generate rspec'
|
2
|
+
# from the project root directory.
|
3
|
+
ENV["RAILS_ENV"] = "test"
|
4
|
+
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
5
|
+
require 'spec'
|
6
|
+
require 'spec/rails'
|
7
|
+
|
8
|
+
Spec::Runner.configure do |config|
|
9
|
+
# If you're not using ActiveRecord you should remove these
|
10
|
+
# lines, delete config/database.yml and disable :active_record
|
11
|
+
# in your config/boot.rb
|
12
|
+
config.use_transactional_fixtures = true
|
13
|
+
config.use_instantiated_fixtures = false
|
14
|
+
config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
|
15
|
+
|
16
|
+
# == Fixtures
|
17
|
+
#
|
18
|
+
# You can declare fixtures for each example_group like this:
|
19
|
+
# describe "...." do
|
20
|
+
# fixtures :table_a, :table_b
|
21
|
+
#
|
22
|
+
# Alternatively, if you prefer to declare them only once, you can
|
23
|
+
# do so right here. Just uncomment the next line and replace the fixture
|
24
|
+
# names with your fixtures.
|
25
|
+
#
|
26
|
+
# config.global_fixtures = :table_a, :table_b
|
27
|
+
#
|
28
|
+
# If you declare global fixtures, be aware that they will be declared
|
29
|
+
# for all of your examples, even those that don't use them.
|
30
|
+
#
|
31
|
+
# == Mock Framework
|
32
|
+
#
|
33
|
+
# RSpec uses it's own mocking framework by default. If you prefer to
|
34
|
+
# use mocha, flexmock or RR, uncomment the appropriate line:
|
35
|
+
#
|
36
|
+
# config.mock_with :mocha
|
37
|
+
# config.mock_with :flexmock
|
38
|
+
# config.mock_with :rr
|
39
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
====================================================================
|
2
|
+
== RSpec
|
3
|
+
Copyright (c) 2005-2007 The RSpec Development Team
|
4
|
+
====================================================================
|
5
|
+
== ARTS
|
6
|
+
Copyright (c) 2006 Kevin Clark, Jake Howerton
|
7
|
+
====================================================================
|
8
|
+
== ZenTest
|
9
|
+
Copyright (c) 2001-2006 Ryan Davis, Eric Hodel, Zen Spider Software
|
10
|
+
====================================================================
|
11
|
+
== AssertSelect
|
12
|
+
Copyright (c) 2006 Assaf Arkin
|
13
|
+
====================================================================
|
14
|
+
|
15
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
16
|
+
this software and associated documentation files (the "Software"), to deal in
|
17
|
+
the Software without restriction, including without limitation the rights to
|
18
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
19
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
20
|
+
so, subject to the following conditions:
|
21
|
+
|
22
|
+
The above copyright notice and this permission notice shall be included in all
|
23
|
+
copies or substantial portions of the Software.
|
24
|
+
|
25
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
26
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
27
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
28
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
29
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
30
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
31
|
+
SOFTWARE.
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/rdoctask'
|
3
|
+
|
4
|
+
desc 'Generate RDoc'
|
5
|
+
rd = Rake::RDocTask.new do |rdoc|
|
6
|
+
rdoc.rdoc_dir = '../doc/output/rdoc-rails'
|
7
|
+
rdoc.options << '--title' << 'Spec::Rails' << '--line-numbers' << '--inline-source' << '--main' << 'Spec::Rails'
|
8
|
+
rdoc.rdoc_files.include('MIT-LICENSE', 'lib/**/*.rb')
|
9
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Please refer to the CHANGES file for RSpec's core
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'rbconfig'
|
2
|
+
|
3
|
+
# This generator bootstraps a Rails project for use with RSpec
|
4
|
+
class RspecGenerator < Rails::Generator::Base
|
5
|
+
DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
|
6
|
+
Config::CONFIG['ruby_install_name'])
|
7
|
+
|
8
|
+
def initialize(runtime_args, runtime_options = {})
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def manifest
|
13
|
+
record do |m|
|
14
|
+
script_options = { :chmod => 0755, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang] }
|
15
|
+
|
16
|
+
m.directory 'spec'
|
17
|
+
m.template 'spec_helper.rb', 'spec/spec_helper.rb'
|
18
|
+
m.file 'spec.opts', 'spec/spec.opts'
|
19
|
+
m.file 'rcov.opts', 'spec/rcov.opts'
|
20
|
+
m.file 'script/spec_server', 'script/spec_server', script_options
|
21
|
+
m.file 'script/spec', 'script/spec', script_options
|
22
|
+
|
23
|
+
m.directory 'stories'
|
24
|
+
m.file 'all_stories.rb', 'stories/all.rb'
|
25
|
+
m.file 'stories_helper.rb', 'stories/helper.rb'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
protected
|
30
|
+
|
31
|
+
def banner
|
32
|
+
"Usage: #{$0} rspec"
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
data/starter-app/vendor/plugins/rspec_on_rails/generators/rspec/templates/previous_failures.txt
ADDED
File without changes
|
@@ -0,0 +1,102 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../rspec/lib' # For svn
|
3
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../vendor/plugins/rspec/lib' # For rspec installed as plugin
|
4
|
+
require 'rubygems'
|
5
|
+
require 'drb/drb'
|
6
|
+
require 'rbconfig'
|
7
|
+
require 'spec'
|
8
|
+
require 'optparse'
|
9
|
+
|
10
|
+
# This is based on Florian Weber's TDDMate
|
11
|
+
module Spec
|
12
|
+
module Runner
|
13
|
+
class RailsSpecServer
|
14
|
+
def run(argv, stderr, stdout)
|
15
|
+
$stdout = stdout
|
16
|
+
$stderr = stderr
|
17
|
+
|
18
|
+
base = ActiveRecord::Base
|
19
|
+
def base.clear_reloadable_connections!
|
20
|
+
active_connections.each do |name, conn|
|
21
|
+
if conn.requires_reloading?
|
22
|
+
conn.disconnect!
|
23
|
+
active_connections.delete(name)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
if ActionController.const_defined?(:Dispatcher)
|
29
|
+
dispatcher = ::ActionController::Dispatcher.new($stdout)
|
30
|
+
dispatcher.cleanup_application(true)
|
31
|
+
elsif ::Dispatcher.respond_to?(:reset_application!)
|
32
|
+
::Dispatcher.reset_application!
|
33
|
+
else
|
34
|
+
raise "Application reloading failed"
|
35
|
+
end
|
36
|
+
::Dependencies.mechanism = :load
|
37
|
+
require_dependency('application.rb') unless Object.const_defined?(:ApplicationController)
|
38
|
+
load File.dirname(__FILE__) + '/../spec/spec_helper.rb'
|
39
|
+
|
40
|
+
::Spec::Runner::CommandLine.run(
|
41
|
+
::Spec::Runner::OptionParser.parse(
|
42
|
+
argv,
|
43
|
+
$stderr,
|
44
|
+
$stdout
|
45
|
+
)
|
46
|
+
)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
puts "Loading Rails environment"
|
52
|
+
|
53
|
+
ENV["RAILS_ENV"] = "test"
|
54
|
+
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
55
|
+
require 'dispatcher'
|
56
|
+
|
57
|
+
def restart_test_server
|
58
|
+
puts "restarting"
|
59
|
+
config = ::Config::CONFIG
|
60
|
+
ruby = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT']
|
61
|
+
command_line = [ruby, $0, ARGV].flatten.join(' ')
|
62
|
+
exec(command_line)
|
63
|
+
end
|
64
|
+
|
65
|
+
def daemonize(pid_file = nil)
|
66
|
+
return yield if $DEBUG
|
67
|
+
pid = Process.fork{
|
68
|
+
Process.setsid
|
69
|
+
Dir.chdir(RAILS_ROOT)
|
70
|
+
trap("SIGINT"){ exit! 0 }
|
71
|
+
trap("SIGTERM"){ exit! 0 }
|
72
|
+
trap("SIGHUP"){ restart_test_server }
|
73
|
+
File.open("/dev/null"){|f|
|
74
|
+
STDERR.reopen f
|
75
|
+
STDIN.reopen f
|
76
|
+
STDOUT.reopen f
|
77
|
+
}
|
78
|
+
yield
|
79
|
+
}
|
80
|
+
puts "spec_server launched. (PID: %d)" % pid
|
81
|
+
File.open(pid_file,"w"){|f| f.puts pid } if pid_file
|
82
|
+
exit! 0
|
83
|
+
end
|
84
|
+
|
85
|
+
options = Hash.new
|
86
|
+
opts = OptionParser.new
|
87
|
+
opts.on("-d", "--daemon"){|v| options[:daemon] = true }
|
88
|
+
opts.on("-p", "--pid PIDFILE"){|v| options[:pid] = v }
|
89
|
+
opts.parse!(ARGV)
|
90
|
+
|
91
|
+
puts "Ready"
|
92
|
+
exec_server = lambda {
|
93
|
+
trap("USR2") { restart_test_server } if Signal.list.has_key?("USR2")
|
94
|
+
DRb.start_service("druby://localhost:8989", Spec::Runner::RailsSpecServer.new)
|
95
|
+
DRb.thread.join
|
96
|
+
}
|
97
|
+
|
98
|
+
if options[:daemon]
|
99
|
+
daemonize(options[:pid], &exec_server)
|
100
|
+
else
|
101
|
+
exec_server.call
|
102
|
+
end
|