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