0.0
No commit activity in last 3 years
No release in over 3 years
Riot Assertion Macros for DataMapper
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

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 :buzz,   Integer
  property :monkey, Boolean, :default => false
  property :name,   String,  :default => 'monkey', :required => true

  has n, :comments, :through => :posts
  has 1, :address

  validates_presence_of  :foo
  validates_uniquness_of :bar
  validates_length_of    :buzz, :maximum => 20
end

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

  belongs_to :user
end

class Comment

  property :title, String
  property :body,  Text

  belongs_to :post
  belongs_to :user, :required => false
end


class Post

  property :title, String
  property :body,  Text

  has n, :comments
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, :through => :posts
  asserts_topic.has_association :has 1, :address

  asserts_topic.has_validation :validates_presence_of,  :foo
  asserts_topic.has_validation :validates_uniquness_of, :bar
  asserts_topic.has_validation :validates_length_of,    :buzz, :maximum => 20
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, :post
  asserts_topic.has_association :belongs_to, :user, :required => false
end

context "Post Model" do
  setup { Post }

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


  asserts_topic.has_association :has_n, :comments
end

Copyright

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