Testando respostas em RJS

Como testar o render desta ação?

1
2
3
4
5
6
def minha_acao
  novo_valor = params[:novo_valor]
  render :update do |page|
    page.replace_html "div_valor_total", novo_valor
  end
end

Simples:

1
2
3
4
def test_minha_acao
  get :minha_acao, :novo_valor => '100.00'
  assert_match Regexp.new("Element.update('div_valor_total', '100.00');"), @response.body
end

Mas achei um plugin muito legal que ajuda a fazer esses tipos de festa. Vos apresento o ARTS - Another RJS Testing System de Kevin Clark.

Veja como ficaria o código do teste:

1
2
3
4
def test_minha_acao
  get :minha_acao
  assert_rjs :replace_html, :div_valor_total, '100.00'
end

Na minha opinião, bem melhor! :)

Para instalar o plugin:

  1. Ir até a raiz da pasta do projeto
  2. Executar: $ script/plugin discover
  3. Executar: $ script/plugin install arts

Maiores detalhes está no guia no próprio blog do Kevin!