nimbleshop_core 0.0.1.rc1
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/README.md +13 -0
- data/Rakefile +15 -0
- data/app/assets/images/engines/nimbleshop_authorizedotnet/american_express.png +0 -0
- data/app/assets/images/engines/nimbleshop_authorizedotnet/authorize_net_big.png +0 -0
- data/app/assets/images/engines/nimbleshop_authorizedotnet/authorizedotnet_big.png +0 -0
- data/app/assets/images/engines/nimbleshop_authorizedotnet/discover.png +0 -0
- data/app/assets/images/engines/nimbleshop_authorizedotnet/mastercard.png +0 -0
- data/app/assets/images/engines/nimbleshop_authorizedotnet/visa.png +0 -0
- data/app/assets/images/engines/nimbleshop_cod/cod_small.png +0 -0
- data/app/assets/images/engines/nimbleshop_paypalwp/paypal_big.png +0 -0
- data/app/assets/images/engines/nimbleshop_paypalwp/paypal_small.png +0 -0
- data/app/assets/images/engines/nimbleshop_splitable/splitable.png +0 -0
- data/app/assets/images/engines/nimbleshop_splitable/splitable_big.png +0 -0
- data/app/assets/images/engines/nimbleshop_splitable/splitable_small.png +0 -0
- data/app/assets/javascripts/admin/products/edit.js.coffee +19 -0
- data/app/assets/javascripts/admin/shipping_methods/edit.js.coffee +6 -0
- data/app/assets/javascripts/admin.js +25 -0
- data/app/assets/javascripts/fadeout_success.js.coffee +2 -0
- data/app/assets/javascripts/payment_method.js.coffee +19 -0
- data/app/assets/javascripts/product-group-condition.js.coffee +33 -0
- data/app/assets/javascripts/remove_deletion_of_product_pictures.js.coffee +5 -0
- data/app/assets/javascripts/shipit.js.coffee +10 -0
- data/app/assets/javascripts/twitter_bootstrap.js.coffee +4 -0
- data/app/assets/stylesheets/admin.css +9 -0
- data/app/assets/stylesheets/admin_bootstrap_and_overrides.css.less +38 -0
- data/app/assets/stylesheets/admin_custom.css +104 -0
- data/app/assets/twitter/bootstrap/glyphicons-halflings-white.png +0 -0
- data/app/assets/twitter/bootstrap/glyphicons-halflings.png +0 -0
- data/app/controllers/admin/custom_fields_controller.rb +56 -0
- data/app/controllers/admin/link_groups_controller.rb +76 -0
- data/app/controllers/admin/main_controller.rb +9 -0
- data/app/controllers/admin/navigations_controller.rb +49 -0
- data/app/controllers/admin/orders_controller.rb +47 -0
- data/app/controllers/admin/payment_methods_controller.rb +26 -0
- data/app/controllers/admin/product_groups_controller.rb +70 -0
- data/app/controllers/admin/products_controller.rb +71 -0
- data/app/controllers/admin/shipments_controller.rb +19 -0
- data/app/controllers/admin/shipping_methods_controller.rb +93 -0
- data/app/controllers/admin/shipping_zones_controller.rb +62 -0
- data/app/controllers/admin/shops_controller.rb +33 -0
- data/app/controllers/admin_controller.rb +38 -0
- data/app/helpers/admin_helper.rb +83 -0
- data/app/helpers/nimbleshop_helper.rb +43 -0
- data/app/helpers/payment_method_helper.rb +52 -0
- data/app/mailers/admin_mailer.rb +22 -0
- data/app/mailers/mailer.rb +31 -0
- data/app/models/address.rb +69 -0
- data/app/models/country_shipping_zone.rb +36 -0
- data/app/models/creditcard.rb +95 -0
- data/app/models/custom_field.rb +8 -0
- data/app/models/custom_field_answer/field.rb +101 -0
- data/app/models/custom_field_answer.rb +17 -0
- data/app/models/line_item.rb +48 -0
- data/app/models/link.rb +3 -0
- data/app/models/link_group.rb +8 -0
- data/app/models/navigation.rb +7 -0
- data/app/models/order.rb +158 -0
- data/app/models/payment_method.rb +20 -0
- data/app/models/payment_transaction.rb +11 -0
- data/app/models/picture.rb +30 -0
- data/app/models/product.rb +76 -0
- data/app/models/product_group.rb +65 -0
- data/app/models/product_group_condition.rb +8 -0
- data/app/models/regional_shipping_zone.rb +25 -0
- data/app/models/shipment.rb +19 -0
- data/app/models/shipment_carrier.rb +3 -0
- data/app/models/shipping_cost_calculator.rb +9 -0
- data/app/models/shipping_method.rb +103 -0
- data/app/models/shipping_zone.rb +9 -0
- data/app/models/shop.rb +26 -0
- data/app/models/tax_calculator.rb +18 -0
- data/app/observers/order_observer.rb +53 -0
- data/app/uploaders/picture_uploader.rb +65 -0
- data/app/views/admin/custom_fields/_form.html.erb +45 -0
- data/app/views/admin/custom_fields/edit.html.erb +7 -0
- data/app/views/admin/custom_fields/index.html.erb +31 -0
- data/app/views/admin/custom_fields/new.html.erb +7 -0
- data/app/views/admin/link_groups/_form.html.erb +31 -0
- data/app/views/admin/link_groups/_link_group.html.erb +50 -0
- data/app/views/admin/link_groups/_link_group_title.html.erb +5 -0
- data/app/views/admin/link_groups/edit.html.erb +8 -0
- data/app/views/admin/link_groups/index.html.erb +29 -0
- data/app/views/admin/link_groups/new.html.erb +9 -0
- data/app/views/admin/mailer/new_order_notification.text.erb +31 -0
- data/app/views/admin/main/index.html.erb +5 -0
- data/app/views/admin/navigations/new.html.erb +29 -0
- data/app/views/admin/orders/_line_item.html.erb +11 -0
- data/app/views/admin/orders/_line_items.html.erb +39 -0
- data/app/views/admin/orders/_payment_info.html.erb +20 -0
- data/app/views/admin/orders/_shipping_info.html.erb +40 -0
- data/app/views/admin/orders/index.html.erb +33 -0
- data/app/views/admin/orders/show.html.erb +40 -0
- data/app/views/admin/payment_methods/index.html.erb +6 -0
- data/app/views/admin/product_groups/_condition.html.mustache +20 -0
- data/app/views/admin/product_groups/_form.html.erb +72 -0
- data/app/views/admin/product_groups/edit.html.erb +7 -0
- data/app/views/admin/product_groups/index.html.erb +30 -0
- data/app/views/admin/product_groups/new.html.erb +7 -0
- data/app/views/admin/product_groups/show.html.erb +9 -0
- data/app/views/admin/products/_custom_field_answer.html.erb +9 -0
- data/app/views/admin/products/_form.html.erb +69 -0
- data/app/views/admin/products/_handle_pictures.html.erb +32 -0
- data/app/views/admin/products/_pictures.html.erb +33 -0
- data/app/views/admin/products/edit.html.erb +26 -0
- data/app/views/admin/products/index.html.erb +34 -0
- data/app/views/admin/products/new.html.erb +9 -0
- data/app/views/admin/shipping_methods/_form.html.erb +58 -0
- data/app/views/admin/shipping_methods/_shipping_method.html.erb +31 -0
- data/app/views/admin/shipping_methods/edit.html.erb +18 -0
- data/app/views/admin/shipping_methods/new.html.erb +7 -0
- data/app/views/admin/shipping_zones/_form.html.erb +31 -0
- data/app/views/admin/shipping_zones/_shipping_method.html.erb +13 -0
- data/app/views/admin/shipping_zones/_shipping_zone.html.erb +47 -0
- data/app/views/admin/shipping_zones/edit.html.erb +8 -0
- data/app/views/admin/shipping_zones/index.html.erb +16 -0
- data/app/views/admin/shipping_zones/new.html.erb +8 -0
- data/app/views/admin/shops/edit.html.erb +119 -0
- data/app/views/layouts/_admin_footer.html.erb +23 -0
- data/app/views/layouts/_admin_sidebar.html.erb +0 -0
- data/app/views/layouts/_container.html.erb +33 -0
- data/app/views/layouts/_top_nav_bar.html.erb +30 -0
- data/app/views/layouts/admin.html.erb +35 -0
- data/app/views/layouts/payment_method.html.erb +12 -0
- data/app/views/mailer/order_notification_to_buyer.text.erb +31 -0
- data/app/views/mailer/shipment_notification_to_buyer.text.erb +34 -0
- data/config/initializers/001_settings_application.rb +10 -0
- data/config/initializers/002_load_core_extensions.rb +8 -0
- data/config/initializers/field_with_error.rb +2 -0
- data/config/initializers/strip_and_nullify.rb +13 -0
- data/config/initializers/time_formats.rb +1 -0
- data/config/locales/en.yml +61 -0
- data/config/routes.rb +56 -0
- data/db/development.sqlite3 +0 -0
- data/db/migrate/20111022144421_create_product_groups.rb +12 -0
- data/db/migrate/20111022144426_create_products.rb +16 -0
- data/db/migrate/20111022144653_create_orders.rb +21 -0
- data/db/migrate/20111022144725_create_line_items.rb +15 -0
- data/db/migrate/20111022234951_create_shops.rb +20 -0
- data/db/migrate/20111026193227_create_link_groups.rb +12 -0
- data/db/migrate/20111026193435_create_navigations.rb +10 -0
- data/db/migrate/20111031135810_create_links.rb +10 -0
- data/db/migrate/20111106193938_create_custom_fields.rb +10 -0
- data/db/migrate/20111106195112_create_custom_field_answers.rb +14 -0
- data/db/migrate/20111106201548_create_product_group_conditions.rb +12 -0
- data/db/migrate/20111107035350_create_creditcard_transactions.rb +15 -0
- data/db/migrate/20111109190754_create_addresses.rb +24 -0
- data/db/migrate/20111125173344_create_pictures.rb +16 -0
- data/db/migrate/20111201024408_create_shipping_methods.rb +16 -0
- data/db/migrate/20111202143154_create_shipping_zones.rb +17 -0
- data/db/migrate/20111203034020_create_payment_methods.rb +14 -0
- data/db/migrate/20111221190000_create_preferences.rb +14 -0
- data/db/migrate/20120105234047_create_shipments.rb +11 -0
- data/db/migrate/20120105234553_create_shipment_carriers.rb +11 -0
- data/db/migrate/20120606165355_create_delayed_jobs.rb +22 -0
- data/db/production.sqlite3 +0 -0
- data/db/schema.rb +265 -0
- data/db/seeds.rb +1 -0
- data/db/test.sqlite3 +0 -0
- data/lib/assets/javascripts/loading_state_for_buttons.js.coffee +3 -0
- data/lib/assets/javascripts/show_help_on_hover.js.coffee +2 -0
- data/lib/assets/javascripts/utils/autoresize.js.coffee +3 -0
- data/lib/assets/javascripts/utils/focus.js.coffee +3 -0
- data/lib/assets/javascripts/utils/formatNumber.js.coffee +25 -0
- data/lib/assets/javascripts/utils/formatPrice.js.coffee +24 -0
- data/lib/generators/nimbleshop/app/app_generator.rb +84 -0
- data/lib/generators/nimbleshop/app/templates/config/application.yml +61 -0
- data/lib/generators/nimbleshop/app/templates/config/initializers/airbrake.rb +3 -0
- data/lib/generators/nimbleshop/app/templates/config/initializers/cache_images.rb +4 -0
- data/lib/generators/nimbleshop/app/templates/config/initializers/carrierwave.rb +36 -0
- data/lib/generators/nimbleshop/app/templates/config/initializers/delayed_job.rb +15 -0
- data/lib/generators/nimbleshop/app/templates/config/initializers/setup_email.rb +24 -0
- data/lib/nimbleshop/core_ext/activerecord_base.rb +18 -0
- data/lib/nimbleshop/core_ext/filelessio.rb +4 -0
- data/lib/nimbleshop/core_ext/force_ssl.rb +26 -0
- data/lib/nimbleshop/core_ext/mustache_templater_handler.rb +10 -0
- data/lib/nimbleshop/engine.rb +23 -0
- data/lib/nimbleshop/permalink/builder.rb +46 -0
- data/lib/nimbleshop/processor/base.rb +51 -0
- data/lib/nimbleshop/processor.rb +3 -0
- data/lib/nimbleshop/product_group_search/base_field.rb +19 -0
- data/lib/nimbleshop/product_group_search/core_field_strategy.rb +31 -0
- data/lib/nimbleshop/product_group_search/custom_field_strategy.rb +39 -0
- data/lib/nimbleshop/product_group_search/date_field.rb +16 -0
- data/lib/nimbleshop/product_group_search/extension.rb +46 -0
- data/lib/nimbleshop/product_group_search/number_field.rb +17 -0
- data/lib/nimbleshop/product_group_search/text_field.rb +33 -0
- data/lib/nimbleshop/product_group_search.rb +74 -0
- data/lib/nimbleshop/sampledata/data.rb +246 -0
- data/lib/nimbleshop/sampledata/pictures/product1/pic1.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product2/pic1.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product2/pic2.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product3/pic1.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product3/pic2.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product3/pic3.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product3/pic4.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product3/pic5.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product4/pic1.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product4/pic2.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product5/pic1.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product5/pic2.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic1.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic10.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic11.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic12.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic13.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic14.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic15.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic16.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic17.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic2.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic3.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic4.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic5.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic6.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic7.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic8.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product6/pic9.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product7/pic1.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product7/pic2.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product7/pic3.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product8/pic1.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product8/pic2.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product8/pic3.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product8/pic4.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product8/pic5.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product8/pic6.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product8/pic7.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product8/pic8.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product9/pic1.jpg +0 -0
- data/lib/nimbleshop/sampledata/pictures/product9/pic2.jpg +0 -0
- data/lib/nimbleshop/util.rb +60 -0
- data/lib/nimbleshop/version.rb +18 -0
- data/lib/nimbleshop_core.rb +23 -0
- data/lib/tasks/localhost2public.rake +8 -0
- data/lib/tasks/setup.rake +26 -0
- data/test/factories/address_factory.rb +31 -0
- data/test/factories/creditcard_factory.rb +30 -0
- data/test/factories/custom_field_answer_factory.rb +6 -0
- data/test/factories/custom_field_factory.rb +21 -0
- data/test/factories/line_item_factory.rb +7 -0
- data/test/factories/link_factory.rb +6 -0
- data/test/factories/link_group_factory.rb +5 -0
- data/test/factories/navigation_factory.rb +6 -0
- data/test/factories/order_factory.rb +49 -0
- data/test/factories/payment_method_factory.rb +6 -0
- data/test/factories/payment_transaction_factory.rb +42 -0
- data/test/factories/picture_factory.rb +11 -0
- data/test/factories/product_group_condition_factory.rb +40 -0
- data/test/factories/product_group_factory.rb +5 -0
- data/test/factories/products_factory.rb +11 -0
- data/test/factories/shipment_carrier_factory.rb +6 -0
- data/test/factories/shipment_factory.rb +6 -0
- data/test/factories/shipping_method_factory.rb +15 -0
- data/test/factories/shipping_zone_factory.rb +5 -0
- data/test/factories/shop_factory.rb +8 -0
- data/test/fixtures/files/avatar.png +0 -0
- data/test/fixtures/link_groups.yml +13 -0
- data/test/fixtures/payment_methods.yml +39 -0
- data/test/fixtures/shops.yml +15 -0
- data/test/helpers/admin_helper_test.rb +37 -0
- data/test/helpers/nimbleshop_helper_test.rb +17 -0
- data/test/integration/admin/link_groups_acceptance_test.rb +39 -0
- data/test/integration/admin/orders_acceptance_test.rb +63 -0
- data/test/integration/admin/payment_methods_acceptance_test.rb +13 -0
- data/test/integration/admin/product_groups_acceptance_test.rb +89 -0
- data/test/integration/admin/products_acceptance_test.rb +105 -0
- data/test/integration/admin/shipping_methods_acceptance_test.rb +63 -0
- data/test/integration/admin/shipping_zones_acceptance_test.rb +16 -0
- data/test/integration/admin/shops_acceptance_test.rb +44 -0
- data/test/integration/checkout/cart_acceptance_test.rb +113 -0
- data/test/integration/checkout/payment_confirmation_acceptance_test.rb +24 -0
- data/test/integration/checkout/paypal_acceptance_test.rb +34 -0
- data/test/integration/checkout/shipping_address_acceptance_test.rb +91 -0
- data/test/integration/checkout/shipping_method_acceptance_test.rb +51 -0
- data/test/integration/homepage_acceptance_test.rb +24 -0
- data/test/integration/products_acceptance_test.rb +12 -0
- data/test/integration/static_pages_acceptance_test.rb +13 -0
- data/test/mailers/mailer_test.rb +25 -0
- data/test/rails_app/Gemfile +27 -0
- data/test/rails_app/Gemfile.lock +218 -0
- data/test/rails_app/Rakefile +10 -0
- data/test/rails_app/app/controllers/application_controller.rb +6 -0
- data/test/rails_app/app/helpers/application_helper.rb +3 -0
- data/test/rails_app/app/views/layouts/application.html.erb +10 -0
- data/test/rails_app/config/application.rb +25 -0
- data/test/rails_app/config/application.yml +61 -0
- data/test/rails_app/config/boot.rb +5 -0
- data/test/rails_app/config/database.yml +18 -0
- data/test/rails_app/config/environment.rb +5 -0
- data/test/rails_app/config/environments/development.rb +18 -0
- data/test/rails_app/config/environments/production.rb +33 -0
- data/test/rails_app/config/environments/test.rb +33 -0
- data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
- data/test/rails_app/config/initializers/inflections.rb +2 -0
- data/test/rails_app/config/initializers/secret_token.rb +2 -0
- data/test/rails_app/config/routes.rb +10 -0
- data/test/rails_app/config.ru +4 -0
- data/test/rails_app/db/development.sqlite3 +0 -0
- data/test/rails_app/db/migrate/20100401102949_create_tables.rb +74 -0
- data/test/rails_app/db/schema.rb +52 -0
- data/test/rails_app/log/development.log +94 -0
- data/test/rails_app/log/test.log +0 -0
- data/test/rails_app/public/404.html +26 -0
- data/test/rails_app/public/422.html +26 -0
- data/test/rails_app/public/500.html +26 -0
- data/test/rails_app/public/favicon.ico +0 -0
- data/test/rails_app/script/rails +10 -0
- data/test/support/address_test_helper.rb +24 -0
- data/test/support/checkout_test_helper.rb +40 -0
- data/test/support/dbify_sql_helper.rb +12 -0
- data/test/support/images/cookware.jpg +0 -0
- data/test/support/must_be_like.rb +24 -0
- data/test/support/shipping_method_test_helper.rb +5 -0
- data/test/support/wait_for_ajax.rb +4 -0
- data/test/test_helper.rb +65 -0
- data/test/unit/address_test.rb +33 -0
- data/test/unit/country_shipping_zone_test.rb +17 -0
- data/test/unit/creditcard_test.rb +33 -0
- data/test/unit/custom_field_answer/field_test.rb +93 -0
- data/test/unit/order_test.rb +70 -0
- data/test/unit/payment_method/authorizedotnet_test.rb +21 -0
- data/test/unit/payment_method/paypalwp_test.rb +17 -0
- data/test/unit/payment_method/splitable_test.rb +18 -0
- data/test/unit/picture_test.rb +24 -0
- data/test/unit/processor/authorize_net_test.rb +236 -0
- data/test/unit/processor/paypal_test.rb +40 -0
- data/test/unit/processor/splitable_test.rb +123 -0
- data/test/unit/product_group_condition_test.rb +188 -0
- data/test/unit/product_group_test.rb +109 -0
- data/test/unit/product_test.rb +60 -0
- data/test/unit/shipping_cost_calculator_test.rb +19 -0
- data/test/unit/shipping_method_test.rb +197 -0
- data/test/unit/shop_test.rb +11 -0
- data/test/unit/tax_calculator_test.rb +13 -0
- data/test/vcr_cassettes/authorize_net/authorize-failure.yml +38 -0
- data/test/vcr_cassettes/authorize_net/authorize-success.yml +38 -0
- data/test/vcr_cassettes/authorize_net/capture-failure.yml +38 -0
- data/test/vcr_cassettes/authorize_net/capture-success.yml +38 -0
- data/test/vcr_cassettes/authorize_net/purchase-failure.yml +38 -0
- data/test/vcr_cassettes/authorize_net/purchase-success.yml +38 -0
- data/test/vcr_cassettes/authorize_net/refund-failure.yml +38 -0
- data/test/vcr_cassettes/authorize_net/refund-success.yml +38 -0
- data/test/vcr_cassettes/authorize_net/void-authorize.yml +38 -0
- data/test/vcr_cassettes/authorize_net/void-failure.yml +38 -0
- data/test/vcr_cassettes/authorize_net/void-success.yml +38 -0
- data/test/vcr_cassettes/splitable/split-create-failure.yml +48 -0
- data/test/vcr_cassettes/splitable/split-create-success.yml +50 -0
- data/test/vcr_cassettes/splitable/split-draft-create-failure.yml +50 -0
- data/test/vcr_cassettes/splitable/split-draft-create-success.yml +50 -0
- data/vendor/assets/javascripts/accounting.js +406 -0
- data/vendor/assets/javascripts/autoresize.js +275 -0
- data/vendor/assets/javascripts/jquery-1.7.1.js +9267 -0
- data/vendor/assets/javascripts/jquery-form.js +980 -0
- data/vendor/assets/javascripts/jquery-json.js +193 -0
- data/vendor/assets/javascripts/jquery-ui-1.8.16.js +11768 -0
- data/vendor/assets/javascripts/jquery-ujs.js +374 -0
- data/vendor/assets/javascripts/mustache.js +436 -0
- data/vendor/assets/javascripts/nested_form.js +51 -0
- metadata +740 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class ProductsAcceptanceTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
setup do
|
|
6
|
+
visit admin_path
|
|
7
|
+
click_link 'Products'
|
|
8
|
+
click_link 'add_new_product'
|
|
9
|
+
assert page.has_content?("Add new product")
|
|
10
|
+
|
|
11
|
+
fill_in 'Name', with: 'the very wicked name for product'
|
|
12
|
+
fill_in 'Description', with: 'test desc for user'
|
|
13
|
+
fill_in 'Price', with: '45.99'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
test "should create a new product without image" do
|
|
17
|
+
click_button 'Submit'
|
|
18
|
+
assert_equal 0, Product.last.pictures.size
|
|
19
|
+
assert_equal 0, page.all('ul.product_pictures li').count
|
|
20
|
+
assert page.has_content?('Successfully added')
|
|
21
|
+
assert page.has_content?('the very wicked name for product')
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test 'editing a product with picture' do
|
|
25
|
+
create :picture
|
|
26
|
+
visit admin_path
|
|
27
|
+
click_link 'Products'
|
|
28
|
+
click_link 'Edit'
|
|
29
|
+
assert_equal 1, Product.last.pictures.size
|
|
30
|
+
assert_equal 1, page.all('ul.product_pictures li').count
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
test "should not create product with wrong params" do
|
|
34
|
+
visit admin_path
|
|
35
|
+
click_link 'Products'
|
|
36
|
+
click_link 'add_new_product'
|
|
37
|
+
click_button 'Submit'
|
|
38
|
+
|
|
39
|
+
assert page.has_content?("Name can't be blank")
|
|
40
|
+
assert page.has_content?("Description can't be blank")
|
|
41
|
+
assert page.has_content?("Price is not a number")
|
|
42
|
+
assert page.has_content?("Price can't be blank")
|
|
43
|
+
|
|
44
|
+
fill_in 'Price', with: 'wrong price'
|
|
45
|
+
click_button 'Submit'
|
|
46
|
+
|
|
47
|
+
assert page.has_content?("Price is not a number")
|
|
48
|
+
refute page.has_content?("Price can't be blank")
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
test "should delete a product" do
|
|
52
|
+
create(:product, name: 'ipad99')
|
|
53
|
+
visit admin_path
|
|
54
|
+
click_link 'Products'
|
|
55
|
+
click_link 'Delete'
|
|
56
|
+
assert page.has_content?("Successfully deleted")
|
|
57
|
+
refute page.has_content?('ipad99')
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
class ProductsAcceptance2Test < ActionDispatch::IntegrationTest
|
|
63
|
+
|
|
64
|
+
setup do
|
|
65
|
+
create(:product, name: 'test')
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
test "should edit a product" do
|
|
69
|
+
visit admin_path
|
|
70
|
+
click_link 'Products'
|
|
71
|
+
click_link 'Edit'
|
|
72
|
+
|
|
73
|
+
fill_in 'Name', with: 'the very wicked name for product'
|
|
74
|
+
fill_in 'Description', with: 'test desc for user'
|
|
75
|
+
fill_in 'Price', with: '45.99'
|
|
76
|
+
click_button 'Submit'
|
|
77
|
+
|
|
78
|
+
assert page.has_content?('Successfully updated')
|
|
79
|
+
assert page.has_content?('the very wicked name for product')
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
test "should not allow to save product with wrong params" do
|
|
83
|
+
visit admin_path
|
|
84
|
+
click_link 'Products'
|
|
85
|
+
click_link 'Edit'
|
|
86
|
+
|
|
87
|
+
fill_in 'Name', with: ''
|
|
88
|
+
fill_in 'Description', with: ''
|
|
89
|
+
fill_in 'Price', with: 'wrong price'
|
|
90
|
+
click_button 'Submit'
|
|
91
|
+
|
|
92
|
+
assert page.has_content?("Name can't be blank")
|
|
93
|
+
assert page.has_content?("Description can't be blank")
|
|
94
|
+
assert page.has_content?("Price is not a number")
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
test "show product" do
|
|
98
|
+
create(:product, name: 'ipad', description: 'the description', price: 46.99)
|
|
99
|
+
visit admin_path
|
|
100
|
+
click_link 'Products'
|
|
101
|
+
click_link 'ipad'
|
|
102
|
+
|
|
103
|
+
assert page.has_content?("Edit product")
|
|
104
|
+
end
|
|
105
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class ShippingMethodAcceptanceTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
def create_shipping_zone(code)
|
|
6
|
+
create(:country_shipping_zone, country_code: code)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
test "add new shipping method to country" do
|
|
10
|
+
bef = ShippingZone.count
|
|
11
|
+
shipping_zone = create_shipping_zone("US")
|
|
12
|
+
visit new_admin_shipping_zone_shipping_method_path(shipping_zone)
|
|
13
|
+
|
|
14
|
+
fill_in "shipping_method_name", with: "Ground Shipping"
|
|
15
|
+
fill_in "shipping_method_minimum_order_amount", with: "10"
|
|
16
|
+
fill_in "shipping_method_maximum_order_amount", with: "30"
|
|
17
|
+
fill_in "shipping_method_base_price", with: "10"
|
|
18
|
+
click_button('Submit')
|
|
19
|
+
|
|
20
|
+
skip "builda fails but local tests pass" do
|
|
21
|
+
assert_sanitized_equal 'Ground Shipping', find('table tr td').text
|
|
22
|
+
assert_equal 58, ShippingZone.count - bef
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
test "edit shipping method to country" do
|
|
27
|
+
shipping_zone = create_shipping_zone("US")
|
|
28
|
+
shipping_method = create(:country_shipping_method, shipping_zone: shipping_zone)
|
|
29
|
+
visit edit_admin_shipping_zone_shipping_method_path(shipping_method.shipping_zone, shipping_method)
|
|
30
|
+
fill_in "shipping_method_maximum_order_amount", with: "40"
|
|
31
|
+
click_button('Submit')
|
|
32
|
+
|
|
33
|
+
skip "builda fails but local tests pass" do
|
|
34
|
+
assert page.has_content?('Successfully updated')
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
test "disbale state shipping zone" do
|
|
39
|
+
Capybara.current_driver = :selenium
|
|
40
|
+
|
|
41
|
+
shipping_zone = create_shipping_zone("US")
|
|
42
|
+
state_zone = shipping_zone.regional_shipping_zones[0]
|
|
43
|
+
shipping_method = create(:country_shipping_method, shipping_zone: shipping_zone)
|
|
44
|
+
visit edit_admin_shipping_zone_shipping_method_path(shipping_zone, shipping_method)
|
|
45
|
+
|
|
46
|
+
find("a[@rel='disable-#{state_zone.id} nofollow']").click
|
|
47
|
+
|
|
48
|
+
assert page.has_content?('Enable')
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
test "enable state shipping zone" do
|
|
52
|
+
Capybara.current_driver = :selenium
|
|
53
|
+
|
|
54
|
+
shipping_zone = create_shipping_zone("US")
|
|
55
|
+
regional_shipping_zone = shipping_zone.regional_shipping_zones[0]
|
|
56
|
+
shipping_method = create(:country_shipping_method, shipping_zone: shipping_zone)
|
|
57
|
+
|
|
58
|
+
visit edit_admin_shipping_zone_shipping_method_path(shipping_zone,shipping_method)
|
|
59
|
+
find("a[@rel='disable-#{regional_shipping_zone.id} nofollow']").click
|
|
60
|
+
find("a[@rel='enable-#{regional_shipping_zone.id} nofollow']").click
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ShippingZonesAcceptanceTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
test "create new shipping zone and should add state level shipping methods" do
|
|
6
|
+
visit admin_path
|
|
7
|
+
click_link 'Shipping zones'
|
|
8
|
+
click_link 'add_new_shipping_zone'
|
|
9
|
+
bef = RegionalShippingZone.count
|
|
10
|
+
select 'Canada', from: 'Country name'
|
|
11
|
+
click_button('Submit')
|
|
12
|
+
assert page.has_content?('Successfully created')
|
|
13
|
+
assert_equal 13, RegionalShippingZone.count - bef
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ShopsAcceptanceTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
setup do
|
|
6
|
+
create(:shop)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
test "edit shop - good path" do
|
|
10
|
+
visit admin_path
|
|
11
|
+
click_link 'Shop configuration'
|
|
12
|
+
assert page.has_content?('Shop configuration')
|
|
13
|
+
fill_in 'Name', with: 'Jack Daniels'
|
|
14
|
+
fill_in 'Theme', with: 'my-awesome-theme'
|
|
15
|
+
fill_in 'Twitter handle', with: '@nimbleshop2'
|
|
16
|
+
fill_in 'Facebook url', with: 'http://www.facebook.com/pages/NimbleSHOP/119319381517845'
|
|
17
|
+
fill_in 'From email', with: 'shop@nimbleshop.com'
|
|
18
|
+
choose 'Authorize and capture the credit card for the total amount of the order .'
|
|
19
|
+
select(find(:xpath, "//*[@id='shop_time_zone']/option[2]").text, from: 'shop_time_zone')
|
|
20
|
+
click_button 'Submit'
|
|
21
|
+
|
|
22
|
+
assert page.has_content?('Shop was successfully updated')
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test "edit shop - wrong path" do
|
|
26
|
+
visit admin_path
|
|
27
|
+
click_link 'Shop configuration'
|
|
28
|
+
fill_in 'Name', with: ''
|
|
29
|
+
fill_in 'Theme', with: ''
|
|
30
|
+
fill_in 'Twitter handle', with: ''
|
|
31
|
+
fill_in 'Facebook url', with: ''
|
|
32
|
+
fill_in 'From email', with: ''
|
|
33
|
+
click_button 'Submit'
|
|
34
|
+
|
|
35
|
+
assert page.has_content?('From email is invalid')
|
|
36
|
+
assert page.has_content?("Name can't be blank")
|
|
37
|
+
assert page.has_content?("Theme can't be blank")
|
|
38
|
+
|
|
39
|
+
fill_in 'Facebook url', with: 'wrong url'
|
|
40
|
+
click_button 'Submit'
|
|
41
|
+
|
|
42
|
+
assert page.has_content?('Facebook url is invalid')
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class CartAcceptanceTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
include ::ShippingMethodSpecHelper
|
|
6
|
+
include ::CheckoutTestHelper
|
|
7
|
+
|
|
8
|
+
setup do
|
|
9
|
+
create(:product, name: 'Bracelet Set', price: 25)
|
|
10
|
+
create(:product, name: 'Necklace Set', price: 14)
|
|
11
|
+
create_regional_shipping_method
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
test "after going all the way to checkout if buyer comes back to cart only line items amount should be shown" do
|
|
15
|
+
visit root_path
|
|
16
|
+
add_item_to_cart('Bracelet Set')
|
|
17
|
+
assert_equal "Total: $25.00", find('.line-items-total').text.chomp.strip
|
|
18
|
+
|
|
19
|
+
click_link 'Checkout'
|
|
20
|
+
|
|
21
|
+
enter_valid_email_address
|
|
22
|
+
enter_valid_shipping_address
|
|
23
|
+
|
|
24
|
+
click_button 'Submit'
|
|
25
|
+
|
|
26
|
+
choose 'Ground'
|
|
27
|
+
click_button 'Submit'
|
|
28
|
+
|
|
29
|
+
assert_sanitized_equal 'Total: $29.30', find('.order-total-amount').text
|
|
30
|
+
click_link 'edit_cart'
|
|
31
|
+
|
|
32
|
+
assert_sanitized_equal "Total: $25.00", find('.line-items-total').text
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
test "should be able to change the quantity even if product is deleted" do
|
|
36
|
+
visit root_path
|
|
37
|
+
add_item_to_cart('Bracelet Set')
|
|
38
|
+
|
|
39
|
+
p = Product.find_by_name('Bracelet Set')
|
|
40
|
+
fill_in "updates_#{p.id}", with: '10'
|
|
41
|
+
p.destroy
|
|
42
|
+
click_button 'Update'
|
|
43
|
+
assert_sanitized_equal "Total: $250.00", find('.line-items-total').text
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
test "should be able to increase the quantities of items in the cart" do
|
|
47
|
+
visit root_path
|
|
48
|
+
add_item_to_cart('Bracelet Set')
|
|
49
|
+
visit root_path
|
|
50
|
+
add_item_to_cart 'Necklace Set'
|
|
51
|
+
p1 = Product.find_by_name 'Bracelet Set'
|
|
52
|
+
p2 = Product.find_by_name 'Necklace Set'
|
|
53
|
+
|
|
54
|
+
fill_in "updates_#{p1.id}", with: '4'
|
|
55
|
+
fill_in "updates_#{p2.id}", with: '2'
|
|
56
|
+
|
|
57
|
+
click_button 'Update'
|
|
58
|
+
assert page.has_content?('$128')
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
test "when admin has not setup any payment method then there should not be any error" do
|
|
62
|
+
PaymentMethod.delete_all
|
|
63
|
+
visit root_path
|
|
64
|
+
add_item_to_cart('Bracelet Set')
|
|
65
|
+
click_link 'Checkout'
|
|
66
|
+
enter_valid_email_address
|
|
67
|
+
enter_valid_shipping_address
|
|
68
|
+
click_button 'Submit'
|
|
69
|
+
choose 'Ground'
|
|
70
|
+
click_button 'Submit'
|
|
71
|
+
assert page.has_content?('No payment method has been setup. Please setup atleast one payment method.')
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
test "should be able to add 2 items to cart and title should be reflect that" do
|
|
75
|
+
visit root_path
|
|
76
|
+
add_item_to_cart('Bracelet Set')
|
|
77
|
+
visit root_path
|
|
78
|
+
add_item_to_cart 'Necklace Set'
|
|
79
|
+
assert page.has_content?('2 Items')
|
|
80
|
+
assert page.has_content?('$39')
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
class CartWithOrderExpiredAcceptanceTest < ActionDispatch::IntegrationTest
|
|
85
|
+
|
|
86
|
+
include ::ShippingMethodSpecHelper
|
|
87
|
+
include ::CheckoutTestHelper
|
|
88
|
+
|
|
89
|
+
setup do
|
|
90
|
+
create(:product, name: 'Bracelet Set', price: 25)
|
|
91
|
+
create(:product, name: 'Necklace Set', price: 14)
|
|
92
|
+
create(:country_shipping_method)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
test 'on cart page' do
|
|
96
|
+
visit root_path
|
|
97
|
+
add_item_to_cart('Bracelet Set')
|
|
98
|
+
click_link 'Checkout'
|
|
99
|
+
Order.last.destroy
|
|
100
|
+
click_link 'edit_cart'
|
|
101
|
+
assert page.has_content?('powered by')
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
test 'on shipping address page' do
|
|
105
|
+
visit root_path
|
|
106
|
+
add_item_to_cart('Bracelet Set')
|
|
107
|
+
assert page.has_css?('.line-items-total', text: '$25.00')
|
|
108
|
+
click_link 'Checkout'
|
|
109
|
+
Order.last.destroy
|
|
110
|
+
visit current_path
|
|
111
|
+
assert page.has_content?('powered by')
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class PaymentConfirmationAcceptanceTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
test "show order when it was paid using splitable" do
|
|
6
|
+
order = create :order_paid_using_splitable
|
|
7
|
+
visit nimbleshop_simply.order_path(order)
|
|
8
|
+
assert page.has_content?('Purchase is complete')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
test "show order when it was paid using paypalwp" do
|
|
12
|
+
order = create :order_paid_using_paypalwp
|
|
13
|
+
visit nimbleshop_simply.order_path(order)
|
|
14
|
+
assert page.has_content?('Purchase is complete')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
test "show order when it was paid using authorizedotnet" do
|
|
18
|
+
order = create :order_paid_using_authorizedotnet
|
|
19
|
+
visit nimbleshop_simply.order_path(order)
|
|
20
|
+
assert page.has_content?('Purchase is complete')
|
|
21
|
+
assert page.has_content?('In the credit card statement name of the company would appear as Nimbleshop LLC')
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class PaypalAcceptanceTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
include ::ShippingMethodSpecHelper
|
|
6
|
+
include ::CheckoutTestHelper
|
|
7
|
+
|
|
8
|
+
setup do
|
|
9
|
+
create(:product, name: 'Bracelet Set', price: 25)
|
|
10
|
+
create(:product, name: 'Necklace Set', price: 14)
|
|
11
|
+
create_regional_shipping_method
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
test 'paypal variables' do
|
|
15
|
+
visit root_path
|
|
16
|
+
add_item_to_cart('Bracelet Set')
|
|
17
|
+
assert_sanitized_equal "Total: $25.00", find('.line-items-total').text
|
|
18
|
+
|
|
19
|
+
click_link 'Checkout'
|
|
20
|
+
|
|
21
|
+
enter_valid_email_address
|
|
22
|
+
enter_valid_shipping_address
|
|
23
|
+
|
|
24
|
+
click_button 'Submit'
|
|
25
|
+
|
|
26
|
+
choose 'Ground'
|
|
27
|
+
click_button 'Submit'
|
|
28
|
+
|
|
29
|
+
assert_sanitized_equal 'Total: $29.30', find('.order-total-amount').text
|
|
30
|
+
assert_sanitized_equal "25.0", page.find("#amount_1").value
|
|
31
|
+
assert_sanitized_equal "3.99", page.find("#handling_cart").value
|
|
32
|
+
assert_sanitized_equal "0.31", page.find("#tax_cart").value
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class ShippingAddressAcceptanceTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
include ::ShippingMethodSpecHelper
|
|
6
|
+
include ::CheckoutTestHelper
|
|
7
|
+
|
|
8
|
+
setup do
|
|
9
|
+
create(:product, name: 'Bracelet Set', price: 25)
|
|
10
|
+
create(:product, name: 'Necklace Set', price: 14)
|
|
11
|
+
create_regional_shipping_method
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
test "Billing address is same as shipping address" do
|
|
15
|
+
visit root_path
|
|
16
|
+
add_item_to_cart('Bracelet Set')
|
|
17
|
+
click_link 'Checkout'
|
|
18
|
+
assert page.has_content?('Shipping address')
|
|
19
|
+
enter_valid_email_address
|
|
20
|
+
enter_valid_shipping_address
|
|
21
|
+
click_button 'Submit'
|
|
22
|
+
|
|
23
|
+
assert_sanitized_equal "Neeaj Singh 100 N Miami Ave Suite 500 Miami Florida 33333 United States", find('.shipping-address').text
|
|
24
|
+
assert_sanitized_equal "Same as shipping address", find('.billing-address').text
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
test "Billing address is not same as shipping address" do
|
|
28
|
+
visit root_path
|
|
29
|
+
add_item_to_cart('Bracelet Set')
|
|
30
|
+
click_link 'Checkout'
|
|
31
|
+
enter_valid_email_address
|
|
32
|
+
enter_valid_shipping_address
|
|
33
|
+
uncheck 'order_shipping_address_attributes_use_for_billing'
|
|
34
|
+
enter_valid_billing_address
|
|
35
|
+
|
|
36
|
+
click_button 'Submit'
|
|
37
|
+
|
|
38
|
+
assert_sanitized_equal "Neeaj Singh 100 N Miami Ave Suite 500 Miami Florida 33333 United States", find('.shipping-address').text
|
|
39
|
+
assert_sanitized_equal "Neil Singh 100 N Pines Ave Suite 400 Pembroke Pines Florida 33332 United States", find('.billing-address').text
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
test 'editing shipping address' do
|
|
43
|
+
visit root_path
|
|
44
|
+
add_item_to_cart('Bracelet Set')
|
|
45
|
+
click_link 'Checkout'
|
|
46
|
+
enter_valid_email_address
|
|
47
|
+
enter_valid_shipping_address
|
|
48
|
+
click_button 'Submit'
|
|
49
|
+
choose 'Ground'
|
|
50
|
+
click_button 'Submit'
|
|
51
|
+
click_link 'edit_shipping_address'
|
|
52
|
+
fill_in "order_shipping_address_attributes_first_name", with: 'Neeraj1234'
|
|
53
|
+
click_button 'Submit'
|
|
54
|
+
assert page.has_content?('Neeraj1234')
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
test 'shipping_address validations' do
|
|
58
|
+
visit root_path
|
|
59
|
+
add_item_to_cart('Bracelet Set')
|
|
60
|
+
click_link 'Checkout'
|
|
61
|
+
|
|
62
|
+
click_button 'Submit'
|
|
63
|
+
assert page.has_content?('Email is invalid')
|
|
64
|
+
|
|
65
|
+
enter_valid_email_address
|
|
66
|
+
click_button 'Submit'
|
|
67
|
+
|
|
68
|
+
assert page.has_content?('Shipping address error !')
|
|
69
|
+
assert page.has_content?("First name can't be blank")
|
|
70
|
+
assert page.has_content?("Last name can't be blank")
|
|
71
|
+
assert page.has_content?("Address1 can't be blank")
|
|
72
|
+
assert page.has_content?("Zipcode can't be blank")
|
|
73
|
+
assert page.has_content?("City can't be blank")
|
|
74
|
+
|
|
75
|
+
enter_valid_shipping_address
|
|
76
|
+
uncheck 'order_shipping_address_attributes_use_for_billing'
|
|
77
|
+
click_button 'Submit'
|
|
78
|
+
|
|
79
|
+
assert page.has_content?('Billing address error !')
|
|
80
|
+
assert page.has_content?("First name can't be blank")
|
|
81
|
+
assert page.has_content?("Last name can't be blank")
|
|
82
|
+
assert page.has_content?("Address1 can't be blank")
|
|
83
|
+
assert page.has_content?("Zipcode can't be blank")
|
|
84
|
+
assert page.has_content?("City can't be blank")
|
|
85
|
+
|
|
86
|
+
check 'order_shipping_address_attributes_use_for_billing'
|
|
87
|
+
click_button 'Submit'
|
|
88
|
+
assert page.has_content?("Pick shipping method")
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class ShippingMethodAcceptanceTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
include ::CheckoutTestHelper
|
|
6
|
+
|
|
7
|
+
setup do
|
|
8
|
+
Capybara.current_driver = :selenium
|
|
9
|
+
create(:product, name: 'Bracelet Set', price: 25)
|
|
10
|
+
create(:product, name: 'Necklace Set', price: 14)
|
|
11
|
+
create(:country_shipping_method, name: 'Ground Shipping', base_price: 3.99, minimum_order_amount: 1, maximum_order_amount: 99999)
|
|
12
|
+
create(:country_shipping_method, name: 'Express Shipping', base_price: 13.99, minimum_order_amount: 1, maximum_order_amount: 99999)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
test "shipping method is required" do
|
|
16
|
+
visit root_path
|
|
17
|
+
add_item_to_cart('Bracelet Set')
|
|
18
|
+
click_link 'Checkout'
|
|
19
|
+
|
|
20
|
+
enter_valid_email_address
|
|
21
|
+
enter_valid_shipping_address
|
|
22
|
+
click_button 'Submit'
|
|
23
|
+
|
|
24
|
+
# Submit without choosing a shipping method
|
|
25
|
+
click_button 'Submit'
|
|
26
|
+
|
|
27
|
+
assert page.has_content?('Please select a shipping method')
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
test "ability to change shipping method" do
|
|
31
|
+
visit root_path
|
|
32
|
+
add_item_to_cart('Bracelet Set')
|
|
33
|
+
click_link 'Checkout'
|
|
34
|
+
|
|
35
|
+
enter_valid_email_address
|
|
36
|
+
enter_valid_shipping_address
|
|
37
|
+
click_button 'Submit'
|
|
38
|
+
|
|
39
|
+
choose 'Ground Shipping'
|
|
40
|
+
click_button 'Submit'
|
|
41
|
+
|
|
42
|
+
assert_sanitized_equal 'Ground Shipping ( $3.99 )', find('.shipping-method').text
|
|
43
|
+
click_link 'edit_shipping_method'
|
|
44
|
+
|
|
45
|
+
choose 'Express Shipping'
|
|
46
|
+
click_button 'Submit'
|
|
47
|
+
|
|
48
|
+
assert_sanitized_equal 'Express Shipping ( $13.99 )', find('.shipping-method').text
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class HomepageAcceptanceTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
test 'home page with link groups' do
|
|
6
|
+
assert_equal 1, Shop.count
|
|
7
|
+
visit root_path
|
|
8
|
+
|
|
9
|
+
assert_equal 1, Shop.count
|
|
10
|
+
|
|
11
|
+
assert page.has_content?('powered by')
|
|
12
|
+
assert page.has_content?('Shop by category')
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
test 'home page without link groups' do
|
|
16
|
+
assert_equal 1, Shop.count
|
|
17
|
+
LinkGroup.delete_all
|
|
18
|
+
|
|
19
|
+
visit root_path
|
|
20
|
+
|
|
21
|
+
assert page.has_content?('powered by')
|
|
22
|
+
refute page.has_content?('Shop by category')
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ProductAcceptanceTest < ActionDispatch::IntegrationTest
|
|
4
|
+
setup do
|
|
5
|
+
@product = create(:product, name: 'ipad', description: 'awesome ipad from Apple')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
test "show page" do
|
|
9
|
+
visit nimbleshop_simply.product_path(@product)
|
|
10
|
+
assert page.has_content?('awesome ipad from Apple')
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class StaticPagesAcceptanceTest < ActionDispatch::IntegrationTest
|
|
4
|
+
test "static pages" do
|
|
5
|
+
visit root_path
|
|
6
|
+
|
|
7
|
+
click_link 'About us'
|
|
8
|
+
assert page.has_content?('is a would be open source Ruby on Rails e-commerce framework')
|
|
9
|
+
|
|
10
|
+
click_link 'Contact us'
|
|
11
|
+
assert page.has_content?('hello.nimbleshop@gmail.com')
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class MailerTest < ActiveSupport::TestCase
|
|
4
|
+
|
|
5
|
+
test "sends out order notification" do
|
|
6
|
+
order = create(:order_with_line_items)
|
|
7
|
+
|
|
8
|
+
mail = Mailer.order_notification_to_buyer(order.number)
|
|
9
|
+
|
|
10
|
+
assert_equal "Order confirmation for order ##{order.number}", mail.subject
|
|
11
|
+
assert_equal ['john@nimbleshop.com'], mail.to
|
|
12
|
+
assert_match /Here is receipt for your purchase/, mail.encoded
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
test "sends out shipment notification" do
|
|
16
|
+
order = create(:order_paid_using_authorizedotnet)
|
|
17
|
+
|
|
18
|
+
mail = Mailer.shipment_notification_to_buyer(order.number)
|
|
19
|
+
|
|
20
|
+
assert_equal "Items for order ##{order.number} have been shipped", mail.subject
|
|
21
|
+
assert_equal ['john@nimbleshop.com'], mail.to
|
|
22
|
+
assert_match /Items have been shipped/, mail.encoded
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
gem 'rails', '3.2.6'
|
|
4
|
+
|
|
5
|
+
gem 'sqlite3'
|
|
6
|
+
|
|
7
|
+
# Gems used only for assets and not required
|
|
8
|
+
# in production environments by default.
|
|
9
|
+
group :assets do
|
|
10
|
+
gem 'sass-rails', '~> 3.2.3'
|
|
11
|
+
gem 'coffee-rails', '~> 3.2.1'
|
|
12
|
+
|
|
13
|
+
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
|
14
|
+
# gem 'therubyracer', :platforms => :ruby
|
|
15
|
+
|
|
16
|
+
gem 'uglifier', '>= 1.0.3'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
gem 'jquery-rails'
|
|
20
|
+
|
|
21
|
+
gem 'nimbleshop_core', path: '/Users/nsingh/dev/nimbleshop_inc/nimbleshop/nimbleshop_core'
|
|
22
|
+
gem 'nimbleshop_simply', path: '/Users/nsingh/dev/nimbleshop_inc/nimbleshop/nimbleshop_simply'
|
|
23
|
+
|
|
24
|
+
gem 'nimbleshop_authorizedotnet', path: '/Users/nsingh/dev/nimbleshop_inc/nimbleshop/nimbleshop_authorizedotnet'
|
|
25
|
+
gem 'nimbleshop_paypalwp', path: '/Users/nsingh/dev/nimbleshop_inc/nimbleshop/nimbleshop_paypalwp'
|
|
26
|
+
gem 'nimbleshop_splitable', path: '/Users/nsingh/dev/nimbleshop_inc/nimbleshop/nimbleshop_splitable'
|
|
27
|
+
gem 'nimbleshop_cod', path: '/Users/nsingh/dev/nimbleshop_inc/nimbleshop/nimbleshop_cod'
|