test/unit/associations/test_base.rb in mongo_mapper-0.8.6 vs test/unit/associations/test_base.rb in mongo_mapper-0.9.0

- old
+ new

@@ -5,208 +5,132 @@ class AssociationBaseTest < Test::Unit::TestCase include MongoMapper::Plugins::Associations should "initialize with type and name" do - base = Base.new(:many, :foos) - base.type.should == :many + base = ManyAssociation.new(:foos) base.name.should == :foos end should "also allow options when initializing" do - base = Base.new(:many, :foos, :polymorphic => true) + base = ManyAssociation.new(:foos, :polymorphic => true) base.options[:polymorphic].should be_true end - context "class_name" do - should "work for belongs_to" do - Base.new(:belongs_to, :user).class_name.should == 'User' - end - - should "work for many" do - Base.new(:many, :smart_people).class_name.should == 'SmartPerson' - end - - should "be changeable using class_name option" do - base = Base.new(:many, :smart_people, :class_name => 'IntelligentPerson') - base.class_name.should == 'IntelligentPerson' - end - end - context "klass" do should "default to class_name constantized" do - Base.new(:belongs_to, :foo_monster).klass.should == FooMonster + BelongsToAssociation.new(:foo_monster).klass.should == FooMonster end should "be the specified class" do anonnymous_class = Class.new - Base.new(:belongs_to, :foo_monster, :class => anonnymous_class).klass.should == anonnymous_class + BelongsToAssociation.new(:foo_monster, :class => anonnymous_class).klass.should == anonnymous_class end end - context "many?" do - should "be true if many" do - Base.new(:many, :foos).many?.should be_true - end - - should "be false if not many" do - Base.new(:belongs_to, :foo).many?.should be_false - Base.new(:one, :foo).many?.should be_false - end - end - - context "one?" do - should "be true if one" do - Base.new(:one, :foo).one?.should be_true - end - - should "be false if not one" do - Base.new(:many, :foo).one?.should be_false - end - end - - context "belongs_to?" do - should "be true if belongs_to" do - Base.new(:belongs_to, :foo).belongs_to?.should be_true - end - - should "be false if not belongs_to" do - Base.new(:many, :foos).belongs_to?.should be_false - end - end - context "polymorphic?" do should "be true if polymorphic" do - Base.new(:many, :foos, :polymorphic => true).polymorphic?.should be_true + ManyAssociation.new(:foos, :polymorphic => true).polymorphic?.should be_true end should "be false if not polymorphic" do - Base.new(:many, :bars).polymorphic?.should be_false + ManyAssociation.new(:bars).polymorphic?.should be_false end end context "as?" do should "be true if one" do - Base.new(:one, :foo, :as => :commentable).as?.should be_true + OneAssociation.new(:foo, :as => :commentable).as?.should be_true end should "be false if not one" do - Base.new(:many, :foo).as?.should be_false + ManyAssociation.new(:foo).as?.should be_false end end context "in_array?" do should "be true if one" do - Base.new(:one, :foo, :in => :list_ids).in_array?.should be_true + OneAssociation.new(:foo, :in => :list_ids).in_array?.should be_true end should "be false if not one" do - Base.new(:many, :foo).in_array?.should be_false + ManyAssociation.new(:foo).in_array?.should be_false end end context "query_options" do should "default to empty hash" do - base = Base.new(:many, :foos) + base = ManyAssociation.new(:foos) base.query_options.should == {} end should "work with order" do - base = Base.new(:many, :foos, :order => 'position') + base = ManyAssociation.new(:foos, :order => 'position') base.query_options.should == {:order => 'position'} end should "correctly parse from options" do - base = Base.new(:many, :foos, :order => 'position', :somekey => 'somevalue') + base = ManyAssociation.new(:foos, :order => 'position', :somekey => 'somevalue') base.query_options.should == {:order => 'position', :somekey => 'somevalue'} end end context "type_key_name" do - should "be _type for many" do - Base.new(:many, :foos).type_key_name.should == '_type' - end - should "be association name _ type for belongs_to" do - Base.new(:belongs_to, :foo).type_key_name.should == 'foo_type' + BelongsToAssociation.new(:foo).type_key_name.should == 'foo_type' end end context "foreign_key" do should "default to assocation name _id for belongs to" do - base = Base.new(:belongs_to, :foo) + base = BelongsToAssociation.new(:foo) base.foreign_key.should == 'foo_id' end should "be overridable with :foreign_key option" do - base = Base.new(:belongs_to, :foo, :foreign_key => 'foobar_id') + base = BelongsToAssociation.new(:foo, :foreign_key => 'foobar_id') base.foreign_key.should == 'foobar_id' end end should "have ivar that is association name" do - Base.new(:belongs_to, :foo).ivar.should == '@_foo' + BelongsToAssociation.new(:foo).ivar.should == '@_foo' end context "embeddable?" do should "be true if class is embeddable" do - base = Base.new(:many, :medias) + base = ManyAssociation.new(:medias) base.embeddable?.should be_true end should "be false if class is not embeddable" do - base = Base.new(:many, :statuses) + base = ManyAssociation.new(:statuses) base.embeddable?.should be_false - base = Base.new(:belongs_to, :project) + base = BelongsToAssociation.new(:project) base.embeddable?.should be_false end end context "proxy_class" do - should "be ManyDocumentsProxy for many" do - base = Base.new(:many, :statuses) - base.proxy_class.should == ManyDocumentsProxy - end - - should "be ManyPolymorphicProxy for polymorphic many" do - base = Base.new(:many, :messages, :polymorphic => true) - base.proxy_class.should == ManyPolymorphicProxy - end - - should "be ManyEmbeddedProxy for many embedded" do - base = Base.new(:many, :medias) - base.proxy_class.should == ManyEmbeddedProxy - end - - should "be ManyEmbeddedPolymorphicProxy for polymorphic many embedded" do - base = Base.new(:many, :medias, :polymorphic => true) - base.proxy_class.should == ManyEmbeddedPolymorphicProxy - end - should "be BelongsToProxy for belongs_to" do - base = Base.new(:belongs_to, :project) + base = BelongsToAssociation.new(:project) base.proxy_class.should == BelongsToProxy end should "be BelongsToPolymorphicProxy for polymorphic belongs_to" do - base = Base.new(:belongs_to, :target, :polymorphic => true) + base = BelongsToAssociation.new(:target, :polymorphic => true) base.proxy_class.should == BelongsToPolymorphicProxy end should "be OneProxy for one" do - base = Base.new(:one, :status, :polymorphic => true) + base = OneAssociation.new(:status, :polymorphic => true) base.proxy_class.should == OneProxy end should "be OneEmbeddedProxy for one embedded" do - base = Base.new(:one, :media) + base = OneAssociation.new(:media) base.proxy_class.should == OneEmbeddedProxy - end - - should "be InArrayProxy for many with :in option" do - base = Base.new(:many, :messages, :in => :message_ids) - base.proxy_class.should == InArrayProxy end end end