Rails3 対応 MongoDB ORM、Mongoid 詳解―エクステンション
FABRICATION
Paul Eliott さんの Fabrication Gem は、オブジェクト生成ライブラリです。Mongoid を最初からサポートしており、テストの簡便のために、オブジェクトを生成する素敵な構文を提供しています。
Fabricator(:person) do title "Grand Poobah" addresses(:count => 2) do |address, i| Fabricate(:address, :streeet => "#{i} Bond St.") end end
MONGOID-RSPEC
Evan Sagge さんの mongoid-rspec は、Mongoid 用の RSpec のマッチャーを提供します。マッチャーには、関連、オプション、バリデーション、フィールドが含まれます。
describe Person do it { should reference_one :account } it { should reference_many :posts } it { should be_referenced_in :organization } it { should validate_presence_of(:name) } it { should have_field(:age).of_type(Integer) } end describe Address do it { should be_embedded_in(:person).as_inverse_of(:addresses) } end
REMARKABLE
Brian Cardarella さんの remarkable-mongoid Gem は、Mongoid 用の RSpec マッチャーの素敵な代替を提供します。マッチャーは以下の例の他に、Remarkable::ActiveModel を元に、全てのバリデーションを含みます。
describe Person do it { should reference_one :account } it { should reference_many :posts } it { should be_referenced_in :organization } it { should embed_one :name } it { should embed_many :addresses } it { should be_embedded_in :group } it { should validate_uniqueness_of :dob } end
RIOT
Riot-Mongoid Gem は、Mongoid 用の riot アサーションを提供します。フィールド、キー、関連、バリデーションのアサーションが含まれます。
context "Person Model" do setup { Person.new } asserts_topic.has_field :title, :type => String asserts_topic.has_association :references_one, :account asserts_topic.has_association :embeds_many, :addresses asserts_topic.has_validation :validates_presence_of, :title end
エクステンションは以上です。