Welcome to the Treehouse Community
The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Chris Chambers
5,634 PointsMy test on "Edit Todo_list" did not fail without the reloading database. Why?
I like to pause the video and guess at the code as Jason explains what it's going to do. I wrote my test without reloading the database and it passed immediately. Jason's failed because the page had the old title and description.
If I edit my expect(page) to expect the old text, it fails.
Also, why is the todo_list ID required if the database is wiped for each test? Wouldn't the edit page in the test environment only have a single list (the one i create in the test script?)
My code:
require 'spec_helper'
# Added to remove degradation error in rspec.
# Cab seems to be calling an obselete method.
RSpec.configure do |c|
c.expose_current_running_example_as :example
end
describe "Editing todo_lists" do
it "updates a todo list successfully with correct information" do
todo_list = TodoList.create(title: "Former Title", description: "This is the previous description.")
visit "/todo_lists"
within "#todo_list_#{todo_list.id}" do
click_link "Edit"
end
fill_in "Title", with: "New title"
fill_in "Description", with: "New description"
click_button "Update Todo list"
expect(page).to have_content("Todo list was successfully updated.")
expect(page).to have_content("New title")
expect(page).to have_content("New description")
end
end
1 Answer

Jason Seifer
Treehouse Guest TeacherHey Chris Chambers you are correct about there being only one todo list in the database! The reason for the specification of the todo list id is in case we add another one, which is very common in applications. Your code above looks correct. The test will fail with the old information because when you call click_button "Update Todo list"
the test will follow the redirect after the form submission.
Chris Chambers
5,634 PointsChris Chambers
5,634 PointsOk, just wanted to make sure I wasn't missing something. Thanks for the reply Jason!