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 Validating Length

JAKZ AIZZAT
JAKZ AIZZAT
7,813 Points

CapyBara Element Not Found

Its give me an error. I'm using capybara and its said ElementNotFound

Failures:

1) Creating todo lists displays an error when the todo list has a title less than 3 characters Failure/Error: fill_in "Description", with: "This is what I'm doing today." Capybara::ElementNotFound: Unable to find field "Description" # ./spec/features/todo_lists/create_spec.rb:44:in `block (2 levels) in '

2) Creating todo lists displays an error when the todo list has no title Failure/Error: fill_in "Description", with: "This is what I'm doing today." Capybara::ElementNotFound: Unable to find field "Description" # ./spec/features/todo_lists/create_spec.rb:24:in `block (2 levels) in '

3) Creating todo lists redirects to the todo list index page on success Failure/Error: fill_in "Description", with: "This is what I'm doing today." Capybara::ElementNotFound: Unable to find field "Description" # ./spec/features/todo_lists/create_spec.rb:11:in `block (2 levels) in '

create_spec.rb

require "spec_helper"

describe "Creating todo lists" do

 it "redirects to the todo list index page on success" do
    visit "/todo_lists"
    click_link "New Todo list"
    expect(page).to have_content("New todo_list")

    fill_in "Title", with: "My todo list"
    fill_in "Description", with: "This is what I'm doing today."
    click_button "Create Todo list"
    expect(page).to have_content("My todo list")
 end

 it "displays an error when the todo list has no title" do
    expect(TodoList.count).to eq(0)

    visit "/todo_lists"
    click_link "New Todo list"
    expect(page).to have_content("New todo_list")

    fill_in "Title", with: ""
    fill_in "Description", with: "This is what I'm doing today."
    click_button "Create Todo list"


    expect(page).to have_content("error")
    expect(TodoList.count).to eq(0)

    visit "/todo_lists"
    expect(page).to_not have_content("This is what I'm doing today.")

 end

 it "displays an error when the todo list has a title less than 3 characters" do
    expect(TodoList.count).to eq(0)

    visit "/todo_lists"
    click_link "New Todo list"
    expect(page).to have_content("New todo_list")

    fill_in "Title", with: "Hi"
    fill_in "Description", with: "This is what I'm doing today."
    click_button "Create Todo list"



    expect(page).to have_content("error")
    expect(TodoList.count).todo eq(0)

    visit "/todo_lists"
    expect(page).to_not have_content("This is what I'm doing today.")

 end
end

todo_list.rb

class TodoList < ActiveRecord::Base
 validates :title, presence: true
 validates :title, length: { minimum: 3}




end

1 Answer

Brandon Barrette
Brandon Barrette
20,485 Points

So in your todo_list form you have a label on the text_area for Description. It's either spelled wrong or not capitalized and capybara can't find it.

If the label is "description" but you are asking for it to find "Description" it's going to error out.