Mudança no RSpec 1.1.4 remove inclusão automática de módulos
25/06/08
No RSpec 1.1.4, a inclusão de módulos deixou de ser automática. Você só irá perceber esta mudança se está testando algum módulo, como é o caso dos helpers.
Antes, você só precisava fazer algo como isto:
describe ApplicationHelper do
it "should render flash[:notice]" do
flash[:notice] = "Some notice"
flash_messages.should have_tag('p.notice', 'Some notice')
end
end
Nesta nova versão, se você tentar testar o método flash_messages, irá receber uma mensagem de aviso:
Modules will no longer be automatically included in RSpec version 1.1.4. Called from ./spec/helpers/application_helper_spec.rb:6
A solução é fazer a inclusão manual dos módulos, como este exemplo
describe ApplicationHelper do
include ApplicationHelper
it "should render flash[:notice]" do
flash[:notice] = "Some notice"
flash_messages.should have_tag('p.notice', 'Some notice')
end
end
ou utilizar o objeto helper, que possui todos os métodos do módulo especificado em describe
describe ApplicationHelper do
it "should render flash[:notice]" do
flash[:notice] = "Some notice"
helper.flash_messages.should have_tag('p.notice', 'Some notice')
end
end
Em um primeiro momento, eu não tinha gostado nem um pouco desta alteração, mas depois de
ler os motivos, acho que ficou muito melhor. Você teria dúvidas de que está testando um helper se utilizar helper.flash_messages? E se você tivesse um módulo com um método describe?
As respostas já justificam a alteração por si sós.
- Permalink
- Trackback
- Comentários (0)
- Ao som de: Propagandhi – A Public Dis-service Announcement From Shell
Expandindo o helper DateTime do Rails
28/11/06
No projeto que estou desenvolvendo, preciso exibir um select com os dias da semana. Como o Rails não tem nada parecido (pelo menos não achei), estendi o helper DateTime adicionando um novo método chamado select_weekday. Para utilizá-lo basta adicionar o código abaixo no seu arquivo "environment.rb".
module ActionView
module Helpers
module DateHelper
def select_weekday(date, options = {})
week_options = []
date = Date.today if date.nil?
date_holder = Date.today.cwday.day.ago
0.upto(6) do |day|
week_options << (((date.kind_of?(Fixnum) ? date : date.cwday) == day) ?
%(<option value="#{day}" selected="selected">#{date_holder.strftime("%A")}</option>\n) :
%(<option value="#{day}">#{date_holder.strftime("%A")}</option>\n)
)
date_holder = date_holder.to_date.next
end
select_html(options[:field_name] || 'weekday', week_options, options[:prefix], options[:include_blank], options[:discard_type], options[:disabled])
end
end
end
end
Estou gostando muito da flexibilidade que o Ruby oferece e, por conseguinte, o Ruby on Rails.
- Permalink
- Trackback
- Comentários (0)
- Ao som de: No Fun At All – Nobody's Perfect
