From 241ccaef88e494657ff4121ef31d73160237fd6c Mon Sep 17 00:00:00 2001 From: Zachary Scott Date: Mon, 29 Dec 2014 17:28:15 -0800 Subject: Move longer form example from integration guide to api reference, below an existing example. [ci skip] My reasoning is that this is probably too much information for the complete Rails testing guide, as we're trying to cover testing all aspects of the framework. --- guides/source/testing.md | 74 ------------------------------------------------ 1 file changed, 74 deletions(-) (limited to 'guides/source') diff --git a/guides/source/testing.md b/guides/source/testing.md index 506f84b9e9..144a92df3e 100644 --- a/guides/source/testing.md +++ b/guides/source/testing.md @@ -795,80 +795,6 @@ In addition to the standard testing helpers, there are some additional helpers a | `delete_via_redirect(path, [parameters], [headers])` | Allows you to make an HTTP DELETE request and follow any subsequent redirects.| | `open_session` | Opens a new session instance.| -### Integration Testing Examples - -A simple integration test that exercises multiple controllers: - -```ruby -require 'test_helper' - -class UserFlowsTest < ActionDispatch::IntegrationTest - test "login and browse site" do - # login via https - https! - get "/login" - assert_response :success - - post_via_redirect "/login", username: users(:david).username, password: users(:david).password - assert_equal '/welcome', path - assert_equal 'Welcome david!', flash[:notice] - - https!(false) - get "/articles/all" - assert_response :success - assert assigns(:articles) - end -end -``` - -As you can see the integration test involves multiple controllers and exercises the entire stack from database to dispatcher. In addition you can have multiple session instances open simultaneously in a test and extend those instances with assertion methods to create a very powerful testing DSL (domain-specific language) just for your application. - -Here's an example of multiple sessions and custom DSL in an integration test - -```ruby -require 'test_helper' - -class UserFlowsTest < ActionDispatch::IntegrationTest - test "login and browse site" do - # User david logs in - david = login(:david) - # User guest logs in - guest = login(:guest) - - # Both are now available in different sessions - assert_equal 'Welcome david!', david.flash[:notice] - assert_equal 'Welcome guest!', guest.flash[:notice] - - # User david can browse site - david.browses_site - # User guest can browse site as well - guest.browses_site - - # Continue with other assertions - end - - private - - module CustomDsl - def browses_site - get "/products/all" - assert_response :success - assert assigns(:products) - end - end - - def login(user) - open_session do |sess| - sess.extend(CustomDsl) - u = users(user) - sess.https! - sess.post "/login", username: u.username, password: u.password - assert_equal '/welcome', sess.path - sess.https!(false) - end - end -end -``` Rake Tasks for Running your Tests --------------------------------- -- cgit v1.2.3