Web,ruby, Ajax ou qualquer outra coisa que me venha a cabeça (com prioridade para esta última)

10 outubro, 2005

Rails e Validação XHTML

Validar (X)HTML em Rails

Quase todos os programadores que utilizam técnicas recentes, e entre estas, os testes unitários desejaram automatizar a possibilidade de validar os seus projectos. O que resulta em (X)HTML de um projecto em Rails pode facilmente ser validado pois em Julho de 2005 o Validator do W3C o tornou mais fácil ao permitir que fragmentos fossem lançados POSTed no seu serviço. Agora com uma simples asserção à medida, os testes funcionais podem assegurar-se que a sua marcação é e se mantém válida.

Basta adicionar isto ao seu test/test_helper.rb:

  def assert_valid_markup(markup=@response.body)
    require 'net/http'
    response = Net::HTTP.start('validator.w3.org') do |w3c|
      query = 'fragment=' + CGI.escape(markup) + '&output=xml'
      w3c.post2('/check', query)
    end
    assert_equal 'Valid', response['x-w3c-validator-status']
  end

E depois (dada uma acção designada por 'home') chamar a asserção a partir dos seus testes funcionais como em:

  def test_home
    get :home
    assert_valid_markup
  end

E pronto, a sua marcação passa a ser validada de cada vez que executar os testes, e se alguma coisa invalidar o resultado, vai sabê-lo de imediato.

assert_valid_markup() irá validar o conteúdo de @response.body (que recebe o seu valor pela linha get ); Pode ainda passar um argumento para verificar algo mais. Se desejar mais detalhes sobre erros de validação pode alterar a asserção de modo a ver response.body que é um ficheiro XML com informação sobre cada erro.

Sem comentários: