Hi Brandon. The error message gives a pretty big clue as to what’s going wrong: 
"undefined method `todo_lists' for :user:Symbol”. That means that 
`current_user` is returning a symbol.

I traced it to here:

https://github.com/Baron-burton/odot/blob/master/spec/support/authentication_helpers.rb#L4

If you return the `user` object instead you’ll find your tests pass.

As an aside, why not implement your `sign_in` test method by setting 
`session[:user_id]` to the user’s ID, and then you’ll be able to use the same 
authentication logic in your tests that is used by the app.

Cheers,
Graham


On Sun, 3 Jan 2016, at 12:34 PM, Brandon Burton wrote:
> To practice RoR I'm working on a tutorial which has me build a todo list. 
> Everything has been going swimmingly so far until the tutorial had me ensure 
> that each todo list belongs to a user. 
> 
> I've spent quite a few hours trying to fiddle with ways to ensure the app is 
> recognizing that a user is signed in but I just can't seem to get it to work. 
> 
> The current state of my app is on my github at 
> https://github.com/Baron-burton/odot 
> 
> From the state of my todo list on my Git page I go to my todo list controller 
> spec to test if a todo list is assigned to a user, will that test pass? I do 
> this by changing:
> 
>  "
>   let(:valid_session) { {} }
> 
>     before do
>       sign_in(build_stubbed(:user))
>     end
>  "
> 
> to
> 
>  "
>   let(:valid_session) { {} }
>   let!(:user) { create(:user) }
> 
>     before do
>       sign_in(user)
>     end
>  "
> 
> To fix the sign in error this creates in rspec I then head to my 
> app/controller/todo_lists_controller and ensure when a todo list is created 
> it is assigned to a user. I do this by changing:
> 
>  "
>   def create
>     @todo_list = TodoList.new(todo_list_params)
>  "
> 
> to 
> 
>  "
>   def create
>     @todo_list = current_user.todo_lists.new(todo_list_params)
>  "
> 
> This is where the problems start to arise. Instead of fixing the 1 error as 
> it shows it does in the tutorial I end up breaking every test in my todo list 
> controller spec folder under " describe "POST create" do "
> 
> The error is: 
> 
> "
>  TodoListsController POST create with valid params creates a new TodoList
>      Failure/Error: post :create, {:todo_list => valid_attributes}, 
> valid_session
>      NoMethodError:
>        undefined method `todo_lists' for :user:Symbol
>      # ./app/controllers/todo_lists_controller.rb:28:in `create'
>      # ./spec/controllers/todo_lists_controller_spec.rb:75:in `block (5 
> levels) in <top (required)>'
>       # ./spec/controllers/todo_lists_controller_spec.rb:74:in `block (4 
> levels) in <top (required)>'
> "
> 
> This is repeated 4 more times for each test within the POST create method. 
> 
> I would love for someone to take a look at my code if they have the time or 
> offer any potential solution to my error.
> 
> Happy New Year to everyone!
> 
> - Brandon
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "North West Ruby User Group (NWRUG)" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send an email to [email protected].
> Visit this group at https://groups.google.com/group/nwrug-members.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"North West Ruby User Group (NWRUG)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send an email to [email protected].
Visit this group at https://groups.google.com/group/nwrug-members.
For more options, visit https://groups.google.com/d/optout.

Reply via email to