Loading spec/class_spec.rb +51 −12 Original line number Diff line number Diff line Loading @@ -18,9 +18,23 @@ describe JsDuck::Class do }); @classes["ParentClass"] = @parent @parent.relations = @classes @mixin = JsDuck::Class.new({ :name => "MixinClass", :members => { :method => [ {:name => "xxx", :owner => "MixinClass"}, {:name => "pri", :owner => "MixinClass", :private => true}, ] } }); @classes["MixinClass"] = @mixin @mixin.relations = @classes @child = JsDuck::Class.new({ :name => "ChildClass", :extends => "ParentClass", :mixins => ["MixinClass"], :members => { :method => [ {:name => "foo", :owner => "ChildClass"}, Loading @@ -31,21 +45,46 @@ describe JsDuck::Class do }); @classes["ChildClass"] = @child @child.relations = @classes @members = @child.members_hash(:method) end it "returns all public members in current class" do ms = @parent.members_hash(:method) ms.values.length.should == 2 ms["foo"][:owner].should == "ParentClass" ms["baz"][:owner].should == "ParentClass" end it "also returns all public members in parent class" do ms = @child.members_hash(:method) ms.values.length.should == 3 ms["foo"][:owner].should == "ChildClass" ms["bar"][:owner].should == "ChildClass" ms["baz"][:owner].should == "ParentClass" @members.should have_key("foo") @members.should have_key("bar") end it "doesn't return private members of current class" do @members.should_not have_key("zappa") end it "inherites public members of parent class" do @members.should have_key("baz") @members.should have_key("foo") end it "doesn't inherit private members of parent class" do @members.should_not have_key("frank") end it "inherites public members of mixin classes" do @members.should have_key("xxx") end it "doesn't inherit private members of mixin classes" do @members.should_not have_key("pri") end it "keeps ownership of current class members" do @members["bar"][:owner].should == "ChildClass" end it "keeps ownership of non-overridden parent class members" do @members["baz"][:owner].should == "ParentClass" end it "overrides parent class members with the same name" do @members["foo"][:owner].should == "ChildClass" end end Loading Loading
spec/class_spec.rb +51 −12 Original line number Diff line number Diff line Loading @@ -18,9 +18,23 @@ describe JsDuck::Class do }); @classes["ParentClass"] = @parent @parent.relations = @classes @mixin = JsDuck::Class.new({ :name => "MixinClass", :members => { :method => [ {:name => "xxx", :owner => "MixinClass"}, {:name => "pri", :owner => "MixinClass", :private => true}, ] } }); @classes["MixinClass"] = @mixin @mixin.relations = @classes @child = JsDuck::Class.new({ :name => "ChildClass", :extends => "ParentClass", :mixins => ["MixinClass"], :members => { :method => [ {:name => "foo", :owner => "ChildClass"}, Loading @@ -31,21 +45,46 @@ describe JsDuck::Class do }); @classes["ChildClass"] = @child @child.relations = @classes @members = @child.members_hash(:method) end it "returns all public members in current class" do ms = @parent.members_hash(:method) ms.values.length.should == 2 ms["foo"][:owner].should == "ParentClass" ms["baz"][:owner].should == "ParentClass" end it "also returns all public members in parent class" do ms = @child.members_hash(:method) ms.values.length.should == 3 ms["foo"][:owner].should == "ChildClass" ms["bar"][:owner].should == "ChildClass" ms["baz"][:owner].should == "ParentClass" @members.should have_key("foo") @members.should have_key("bar") end it "doesn't return private members of current class" do @members.should_not have_key("zappa") end it "inherites public members of parent class" do @members.should have_key("baz") @members.should have_key("foo") end it "doesn't inherit private members of parent class" do @members.should_not have_key("frank") end it "inherites public members of mixin classes" do @members.should have_key("xxx") end it "doesn't inherit private members of mixin classes" do @members.should_not have_key("pri") end it "keeps ownership of current class members" do @members["bar"][:owner].should == "ChildClass" end it "keeps ownership of non-overridden parent class members" do @members["baz"][:owner].should == "ParentClass" end it "overrides parent class members with the same name" do @members["foo"][:owner].should == "ChildClass" end end Loading