test/abstract.rb in dm-is-reflective-1.0.1 vs test/abstract.rb in dm-is-reflective-1.1.0
- old
+ new
@@ -2,12 +2,13 @@
require 'dm-core'
require 'dm-migrations'
require 'dm-is-reflective'
module Abstract
- def setup_data_mapper
- raise 'please provide a clean database because it is a destructive test!!'
+ def self.next_id
+ @id ||= 0
+ @id += 1
end
AttrCommon = {:allow_nil => true}
AttrCommonPK = {:serial => true, :key => true, :allow_nil => false}
AttrText = {:length => 65535}.merge(AttrCommon)
@@ -72,33 +73,33 @@
property :body, Text
is :reflective
end
- class Model; end
-
Tables = ['abstract_comments', 'abstract_super_users', 'abstract_users']
def sort_fields fields
fields.sort_by{ |field|
field.first.to_s
}
end
def create_fake_model
- model = Model.dup.send(:include, DataMapper::Resource)
- model.is :reflective
- [ model, setup_data_mapper ]
+ model = Class.new
+ model.module_eval do
+ include DataMapper::Resource
+ property :id, DataMapper::Property::Serial
+ is :reflective
+ end
+ Abstract.const_set("Model#{Abstract.next_id}", model)
+ [model, self.class.setup_data_mapper]
end
attr_reader :dm
def setup
- @dm = setup_data_mapper
- # this is significant faster than DataMapper.auto_migrate!
- User.auto_migrate!
- Comment.auto_migrate!
- SuperUser.auto_migrate!
+ @dm = self.class.setup_data_mapper
+ [User, Comment, SuperUser].each(&:auto_migrate!)
end
def new_scope
self.class.const_set("Scope#{object_id.object_id}", Module.new)
end
@@ -108,18 +109,16 @@
assert_equal comment_fields, sort_fields(dm.fields('abstract_comments'))
end
def test_create_comment
Comment.create(:title => 'XD')
- assert_equal 1, Comment.first.id
assert_equal 'XD', Comment.first.title
end
def test_create_user
now = Time.now
User.create(:created_at => now)
- assert_equal 1, User.first.id
assert_equal now.asctime, User.first.created_at.asctime
return now
end
@@ -134,24 +133,22 @@
model.send :reflect
assert_equal 1, model.all.size
assert_equal comment_fields, sort_fields(model.fields)
assert_equal 'XD', model.first.title
- assert_equal 1, model.first.id
end
def test_reflect_and_create
model, local_dm = create_fake_model
model.storage_names[:default] = 'abstract_comments'
model.send :reflect
model.create(:title => 'orz')
assert_equal 'orz', model.first.title
- assert_equal 1, model.first.id
model.create
- assert_equal 'default title', model.get(2).title
+ assert_equal 'default title', model.last.title
end
def test_storages_and_fields
assert_equal user_fields, sort_fields(dm.fields('abstract_users'))
assert_equal( {'abstract_users' => user_fields,
@@ -214,11 +211,11 @@
test_create_comment
assert_equal 'XD', comment.first.title
comment.create(:title => 'orz', :body => 'dm-reflect')
- assert_equal 'dm-reflect', comment.get(2).body
+ assert_equal 'dm-reflect', comment.last.body
end
def test_auto_genclass
scope = new_scope
assert_equal ["#{scope}::AbstractUser"],
@@ -230,11 +227,11 @@
now = test_create_user
assert_equal now.asctime, user.first.created_at.asctime
user.create(:login => 'godfat')
- assert_equal 'godfat', user.get(2).login
+ assert_equal 'godfat', user.last.login
end
def test_auto_genclass_with_regexp
scope = new_scope
assert_equal ["#{scope}::AbstractSuperUser", "#{scope}::AbstractUser"],
@@ -250,7 +247,6 @@
model.storage_names[:default] = 'abstract_comments'
mapped = model.send :reflect, /.*/
assert_equal model.properties.map(&:object_id).sort, mapped.map(&:object_id).sort
end
-
end