riot-datamapper

Riot assertion macros for datamapper.

Riot is a fast, expressive, and contextual ruby unit testing framework.

DataMapper is an ORM which is fast, thread-safe and feature rich.

These macros provide an easy way to test some properties of your DataMapper models.

Installation

Install it via rubygems:

gem install riot-datamapper

Or stick it in your Gemfile:

# Gemfile

group :test do
  gem 'riot-datamapper'
end

Examples / Usage

Given a model like:

# foo_bar.rb

class User
  include DataMapper::Resource

  property :foo,    String
  property :bar,    Serial
  property :monkey, Boolean, :default => false
  property :name,   String,  :default => 'monkey', :required => true

  has n, :comments
  has 1, :address
end

class Address
  property :street, String
  property :city,   String

  belongs_to :user
end

class Comment

  property :title, String
  property :body,  Text

  belongs_to :user
end

You can test this like so:

# foo_bar_test.rb

context "User Model" do
  setup { User }

  asserts_topic.has_property :foo
  asserts_topic.has_property :bar,    'Serial'
  asserts_topic.has_property :monkey, 'Boolean', :default => false
  asserts_topic.has_property :name,   'String',  :default => 'monkey', :required => true

  asserts_topic.has_association :has_n, :comments
  asserts_topic.has_association :has 1, :address
end

context "Address Model" do
  setup { Address }

  asserts_topic.has_property :street, String
  asserts_topic.has_property :city,   String

  asserts_topic.has_association :belongs_to, :user
end

context "Comment Model" do
  setup { Comment }

  asserts_topic.has_property :title, String
  asserts_topic.has_property :body,  Text

  asserts_topic.has_association :belongs_to, :user
end

TODO

  • Add more macros
  • Add validation macros so you can do something like #has_validation :validates_presence_of

Copyright © 2011 Arthur Chiu. See MIT-LICENSE for details.