JavaFree.org | RubyOnBr.org

dúvida com rspec e nested resources

Acompanhar dúvida com rspec e nested resources 7 posts, 4 participantes

Avatar oliver 95 posts

galera, to quebrando a cabeça para aprender a testar controllers com o rspec :P

como eu faço para gerar o post certo para um teste de criação de um nested resource?

tenho esses routes:

e estou testando a criação de um work assim:

que me dá o seguinte erro:


1)
ActionController::RoutingError in ‘WorksController handling POST /categories/1/works with successful save should create a new work’
work_url failed to generate from {:category_id=>#<Work:0×1a3685c @name="Work_1048">, :controller=>"works", :action=>"show"}, expected: {:controller=>"works", :action=>"show"}, diff: {:category_id=>#<Work:0×1a3685c @name="Work_1048">}
(eval):17:in `work_url’
/Users/oliver/Sites/portfolio/app/controllers/works_controller.rb:50:in `create’
/Users/oliver/Sites/portfolio/app/controllers/works_controller.rb:47:in `create’
/Users/oliver/Sites/portfolio/vendor/plugins/haml/lib/sass/plugin/rails.rb:14:in `process_without_test’
./spec/controllers/works_controller_spec.rb:207:in `do_post’
./spec/controllers/works_controller_spec.rb:212:

2)
ActionController::RoutingError in ‘WorksController handling POST /categories/1/works with successful save should redirect to the new work’
work_url failed to generate from {:category_id=>#<Work:0×1a2d374 @name="Work_1051">, :controller=>"works", :action=>"show"}, expected: {:controller=>"works", :action=>"show"}, diff: {:category_id=>#<Work:0×1a2d374 @name="Work_1051">}
(eval):17:in `work_url’
/Users/oliver/Sites/portfolio/app/controllers/works_controller.rb:50:in `create’
/Users/oliver/Sites/portfolio/app/controllers/works_controller.rb:47:in `create’
/Users/oliver/Sites/portfolio/vendor/plugins/haml/lib/sass/plugin/rails.rb:14:in `process_without_test’
./spec/controllers/works_controller_spec.rb:207:in `do_post’
./spec/controllers/works_controller_spec.rb:216:


qual é o problema com o meu do_post? não sei se é o meu cérebro é que já fritou por hoje, mas não estou vendo como um objeto Work está sendo passado para o :category_id.

alguma luz?

[]s
Oliver

 
Avatar antonio 196 posts

dia Oliver ;)

deixa eu fazer uma pergunta antes, você consegue rodar seus testes normalmente com a biblioteca tradicional?

 
Avatar oliver 95 posts

oi Antonio,
então, não estou testando com o test::unit… a intenção é aprender a testar usando só o rspec mesmo.
mas imagino que também não passaria, afinal eu teria que simular um post da mesma maneira, e acho que o erro está na interpretação de como gerar este post

 
Avatar oliver 95 posts

acabei tirando o :name_prefix => nil, e mudando o work_url() para category_work_path(), e funcionou. tirar o :name_prefix acabou dando mais dor de cabeça que qualquer coisa :P

 
Avatar excel 3 posts

Duvida !!!

Ruby tem duas coisas que melam a vida de quem quer fazer metaprogramação mais hardcode. Não existe como sobrescrever o mecanismo de resolução de nomes e tão pouco como definir escopos no qual alterações a classes acontecem.

Isso poderia ser afirmado ?

Att.
Excel

 
Avatar oliver 95 posts

oi excel, não sei te responder, mas acho que você vai ter mais sorte se você postar a sua dúvida num post separado…

 
Avatar Fabio Kung 16 posts

Ruby tem duas coisas que melam a vida de quem quer fazer metaprogramação mais hardcode. Não existe como sobrescrever o mecanismo de resolução de nomes e tão pouco como definir escopos no qual alterações a classes acontecem.
Isso poderia ser afirmado ?
Att. Excel

Excel, podia ao menos citar a fonte:
http://forum.rubyonbr.org/forums/1/topics/2783

Você é o Marcio Duran do GUJ?