Alguns de vocês já devem conhecer o método assert_queries que ajuda a validar nos testes a quantidade de queries executadas. Por exemplo:
assert_queries(Firm.partial_updates? ? 0 : 1) {firm.save! }
No teste acima estou afirmando que se houver partial_updates uma query deve ser executada no banco de dados, caso contrário nenhuma deve ser executada.
Agora ganhamos mais um helper para ajudar a testar o tipo de query executada, o método assert_sql. Um exemplo:
company = Firm.find(:first)
assert_sql /COUNT/i do
assert_equal false, company.clients.empty?
end
end
No exemplo acima estou afirmando que no bloco informado ao método pelo menos uma query deve conter a palavra COUNT. Obviamente você pode ser mais especifico na expressão regular que estiver usando. Vamos pegar um outro exemplo:
assert_sql(/\(\"companies\".\"id\" IN \(1\)\)/) do
Account.find(1, :include => :firm)
end
Use com parcimônia!
2 Comentários em "Edge Rails: Novo helper para testes (assert_sql)"
Novo no Rails Edge: Suporte simples a “Conditional-Get” (ETags)…
O Carlos Brando vem fazendo um excelente trabalho em trazer para nós as novidades do Rails Edge (no caso, o 2.2). Mas ao me deparar com esta atualização não pude me conter em blogar sobre. Na verdade, apenas traduzir o artigo do Ryan.
——……
Interessante ver isso aqui. Eu fiz a primeira versão deste patch para resolver um problema que acabou se resolvendo. Que bom ver que alguém o completou.
Deixe o seu comentário!