require 'test_helper' module Workarea module Storefront class OrderLookupIntegrationTest < Workarea::IntegrationTest def test_redirects_to_the_order_on_match order = create_placed_order payment = Payment.find(order.id) post storefront.lookup_orders_path, params: { order_id: order.id, postal_code: payment.address.postal_code } assert(session[:lookup_order_id].present?) assert_redirected_to storefront.order_path(order) end def test_redirects_back_on_no_match order = create_placed_order payment = Payment.find(order.id) post storefront.lookup_orders_path, params: { order_id: "#{order.id}FOO", postal_code: payment.address.postal_code } assert_redirected_to(storefront.check_orders_path) assert(session[:lookup_order_id].blank?) assert(flash[:error].present?) post storefront.lookup_orders_path, params: { order_id: order.id, postal_code: 'foobar' } assert_redirected_to(storefront.check_orders_path) assert(session[:lookup_order_id].blank?) assert(flash[:error].present?) end def test_clearing_lookup_order_without_match order = create_placed_order payment = Payment.find(order.id) post storefront.lookup_orders_path, params: { order_id: order.id, postal_code: payment.address.postal_code } assert(session[:lookup_order_id].present?) assert_redirected_to storefront.order_path(order) post storefront.lookup_orders_path, params: { order_id: order.id, postal_code: 'foobar' } assert_redirected_to(storefront.check_orders_path) assert(session[:lookup_order_id].blank?) assert(flash[:error].present?) end def test_showing_order_without_lookup order = create_placed_order(user_id: create_user.id) get storefront.order_path(order) refute(response.ok?) assert_redirected_to(storefront.check_orders_path) assert(flash[:error].present?) end def test_checking_different_lookup_order order = create_placed_order(id: '1') payment = Payment.find(order.id) other_order = create_placed_order(id: '2') post storefront.lookup_orders_path, params: { order_id: order.id, postal_code: payment.address.postal_code } get storefront.order_path(order) assert(response.ok?) get storefront.order_path(other_order) refute(response.ok?) assert_redirected_to(storefront.check_orders_path) assert(flash[:error].present?) end def test_lookup_order_status_from_url order = create_placed_order payment = Payment.find(order.id) get storefront.orders_path( order_id: order.id, postal_code: payment.address.postal_code ) assert_redirected_to(storefront.order_path(order)) follow_redirect! assert_nil(flash[:error]) assert_response(:success) end end end end