Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Ruby Build a Todo List Application with Rails 4 Build a Todo List Application with Rails 4 Editing Todo Lists

Anthony Ho
Anthony Ho
10,228 Points

test failed after todo_list.reload

 require 'spec_helper'

describe "Editing todo lists" do
    it "updates a todo list successfully with correct information" do

    todo_list = TodoList.create(title: "Groceries", description: "Grocery list.")
    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"

    todo_list.reload

    expect(page).to have_content("Todo list was successfully updated")
    expect(todo_list.title).to eq("New title")
    expect(todo_list.description).to eq("New description")


    end

end
Maciej Czuchnowski
Maciej Czuchnowski
36,441 Points

What is the exact error? It always shows you which line, what it expected and what it got.

Anthony Ho
Anthony Ho
10,228 Points

rspec ./spec/features/todo_lists/edit_spec.rb:4 # Editing todo lists updates a todo list successfully with correct information line 4

Maciej Czuchnowski
Maciej Czuchnowski
36,441 Points

This is not the full error. Please copy everything from your console from the moment you entered rspec until the next prompt. You may have to scroll up for that.

Anthony Ho
Anthony Ho
10,228 Points
  1) Editing todo lists updates a todo list successfully with correct information
     Failure/Error: within "#todo_list_#{todo_list.id}" do
     Capybara::ElementNotFound:
       Unable to find css "#todo_list_1"
     # ./spec/features/todo_lists/edit_spec.rb:8:in `block (2 levels) in <top (required)>'

Deprecation Warnings:

--------------------------------------------------------------------------------
RSpec::Core::ExampleGroup#example is deprecated and will be removed
in RSpec 3. There are a few options for what you can use instead:

  - rspec-core's DSL methods (`it`, `before`, `after`, `let`, `subject`, etc)
    now yield the example as a block argument, and that is the recommended
    way to access the current example from those contexts.
  - The current example is now exposed via `RSpec.current_example`,
    which is accessible from any context.
  - If you can't update the code at this call site (e.g. because it is in
    an extension gem), you can use this snippet to continue making this
    method available in RSpec 2.99 and RSpec 3:

      RSpec.configure do |c|
        c.expose_current_running_example_as :example
      end

(Called from /Users/AnthonyHo/.rvm/gems/ruby-2.1.2/gems/capybara-2.1.0/lib/capybara/rspec.rb:20:in `block (2 levels) in <top (required)>')
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
RSpec::Core::ExampleGroup#example is deprecated and will be removed
in RSpec 3. There are a few options for what you can use instead:

  - rspec-core's DSL methods (`it`, `before`, `after`, `let`, `subject`, etc)
    now yield the example as a block argument, and that is the recommended
    way to access the current example from those contexts.
  - The current example is now exposed via `RSpec.current_example`,
    which is accessible from any context.
  - If you can't update the code at this call site (e.g. because it is in
    an extension gem), you can use this snippet to continue making this
    method available in RSpec 2.99 and RSpec 3:

      RSpec.configure do |c|
        c.expose_current_running_example_as :example
      end

(Called from /Users/AnthonyHo/.rvm/gems/ruby-2.1.2/gems/capybara-2.1.0/lib/capybara/rspec.rb:21:in `block (2 levels) in <top (required)>')
--------------------------------------------------------------------------------


If you need more of the backtrace for any of these deprecations to
identify where to make the necessary changes, you can configure
`config.raise_errors_for_deprecations!`, and it will turn the
deprecation warnings into errors, giving you the full backtrace.

2 deprecation warnings total

Finished in 0.34429 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/features/todo_lists/edit_spec.rb:4 # Editing todo lists updates a todo list successfully with correct information

1 Answer

Maciej Czuchnowski
Maciej Czuchnowski
36,441 Points

OK, so as you can see here:

Unable to find css "#todo_list_1"

It isn't able to find the proper css element, the problem is not with .reload. Run the server, go to the browser and make sure you can find such element in the page source code. Also, please post the code for the index view, Maybe it will tell us something.

Anthony Ho
Anthony Ho
10,228 Points

it's ok found the problem in the index view