123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #---
- # Excerpted from "Agile Web Development with Rails",
- # published by The Pragmatic Bookshelf.
- # Copyrights apply to this code. It may not be used to create training material,
- # courses, books, articles, and the like. Contact us if you are in doubt.
- # We make no guarantees that this code is fit for any purpose.
- # Visit http://www.pragmaticprogrammer.com/titles/rails4 for more book information.
- #---
- #---
- # Excerpted from "Agile Web Development with Rails, 4rd Ed.",
- # published by The Pragmatic Bookshelf.
- # Copyrights apply to this code. It may not be used to create training material,
- # courses, books, articles, and the like. Contact us if you are in doubt.
- # We make no guarantees that this code is fit for any purpose.
- # Visit http://www.pragmaticprogrammer.com/titles/rails4 for more book information.
- #---
- require 'test_helper'
- class UserStoriesTest < ActionDispatch::IntegrationTest
- fixtures :products
- # A user goes to the index page. They select a product, adding it to their
- # cart, and check out, filling in their details on the checkout form. When
- # they submit, an order is created containing their information, along with a
- # single line item corresponding to the product they added to their cart.
-
- test "buying a product" do
- LineItem.delete_all
- Order.delete_all
- ruby_book = products(:ruby)
- get "/"
- assert_response :success
- assert_template "index"
-
- xml_http_request :post, '/line_items', :product_id => ruby_book.id
- assert_response :success
-
- cart = Cart.find(session[:cart_id])
- assert_equal 1, cart.line_items.size
- assert_equal ruby_book, cart.line_items[0].product
-
- get "/orders/new"
- assert_response :success
- assert_template "new"
-
- post_via_redirect "/orders",
- :order => { :name => "Dave Thomas",
- :address => "123 The Street",
- :email => "dave@example.com",
- :pay_type => "Check" }
- assert_response :success
- assert_template "index"
- cart = Cart.find(session[:cart_id])
- assert_equal 0, cart.line_items.size
-
- orders = Order.all
- assert_equal 1, orders.size
- order = orders[0]
-
- assert_equal "Dave Thomas", order.name
- assert_equal "123 The Street", order.address
- assert_equal "dave@example.com", order.email
- assert_equal "Check", order.pay_type
-
- assert_equal 1, order.line_items.size
- line_item = order.line_items[0]
- assert_equal ruby_book, line_item.product
- mail = ActionMailer::Base.deliveries.last
- assert_equal ["dave@example.com"], mail.to
- assert_equal 'Sam Ruby <depot@example.com>', mail[:from].value
- assert_equal "Pragmatic Store Order Confirmation", mail.subject
- end
- end
|