一分一秒真剣勝負!

Ruby, Railsなど。Web系の技術ネタを充実させたい・・が、そうなるかは分からない。

RailsでCustom FormBuilderのテストってみんなどう書いているんだろう

RailsでFormBuilderを独自拡張した場合のSpecってあまり言及されていないよなと思う。

例えば、こんな感じで独自FormBuilderを書いたとする。

app/forms/application_form_builder.rb

するとSpecはこんな感じかなあと思っているのだけど・・・。

spec/forms/application_form_builder_spec.rb

なんかしっくりこない。 ActionView::Helpers::FormBuilderのコミットログを見ると、initializeメソッドの引数が変更になることもあるので、form_forを呼んでから書くというのがいいかなとか考えてる。 コードとしてはこんな感じ。 form_forから書いた方がClassを直で呼ぶより保守性が高いかな?

参考URL

Factory Girlの新しいシンタックスが素敵

 キタコレ。

 旧シンタックスがこれ。なんだか残念な感じですね。

Factory.sequence :email do |n|
  "email#{n}@example.com"
end

Factory.define :user do |factory|
  factory.name  { "Ron Burgundy" }
  factory.email { Factory.next(:email) }
end

Factory.define :admin, :parent => :user do |factory|
  factory.admin { true }
end

Factory.define :dog do |factory|
  factory.name { "Baxter" }
  factory.association(:owner, :factory => :user)
end

 新シンタックスがこれ!素晴らしい!

FactoryGirl.define do
  sequence :email do |n|
    "email#{n}@example.com"
  end

  factory :user, :aliases => [:owner] do
    name "Ron Burgundy"
    email

    factory :admin do
      admin true
    end
  end

  factory :dog do
    name "Baxter"
    owner
  end
end

 素敵過ぎる。こりゃ今までblueprintとか使ってた人も流れてくるんじゃねと思った。
【追記】コメ欄でblueprintってCSSじゃない?というツッコミがありましたが、これは書式のことです。FGでもMachinistでも使えるんですが、CSSフレームワークでも同名のものがありますね。紛らわしい。