Carlos Brando

Nome do Jogo

Ruby Shoulda Bundle para Textmate

Começamos a usar faz pouco tempo o Rspec em um projeto aqui na Surgeworks. Como eu nunca tinha trabalhado com ele até então, tive de passar por um período de aprendizado/adaptação.

Gostei, mas confesso que não consegui me sentir totalmente à vontade com ele, não pelo menos, da mesma forma que me sinto quando estou usando o Unit::Test.

Depois de um tempos começamos um novo projeto e resolvi testar o Shoulda criado pela Thoughtbot, que prometia adicionar a sintaxe do Rspec ao Test::Unit. Agora sim!

O Shoulda vêm em forma de plugin ou gem e acrescenta diversos helpers ao Test::Unit deixando ele turbinado. Veja como o Shoulda pode ser útil e fácil:

class UserTest < Test::Unit::TestCase
  load_all_fixtures

  should_have_many :posts

  should_not_allow_values_for :email, "blah", "b lah"
  should_allow_values_for :email, "a@b.com", "asdf@asdf.com"
  should_ensure_length_in_range :email, 1..100
  should_ensure_value_in_range :age, 1..100
  should_protect_attributes :password

  context "A User instance" do
    setup do
      @user = User.find(:first)
    end

    should "return its full name" do
      assert_equal 'John Doe', @user.full_name
    end

    context "with a profile" do
      setup do
        @user.profile = Profile.find(:first)
      end

      should "return true when sent #has_profile?" do
        assert @user.has_profile?
      end
    end
  end
end

Muito bom!

Para facilitar meu desenvolvimento peguei o bundle para o Textmate que estava sendo mantido pelo Dr. Nic, e fiz uma série de correções e alterações para contemplar todos os helpers disponíveis no plugin. Neste momento o bundle está completo.

O projeto como sempre está no GitHub e pode ser pego aqui.

Comments