Sha256: 6fc0d3260d6857707ddec681b0222b990bd067993688eda9cc3aac64543ccf42

Contents?: true

Size: 1.4 KB

Versions: 29

Compression:

Stored size: 1.4 KB

Contents

require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")

describe Sequel::Model, "Subclasses plugin" do
  before do
    @c = Class.new(Sequel::Model)
    @c.plugin :subclasses
  end

  specify "#subclasses should record direct subclasses of the given model" do
    @c.subclasses.should == []

    sc1 = Class.new(@c)
    @c.subclasses.should == [sc1]
    sc1.subclasses.should == []

    sc2 = Class.new(@c)
    @c.subclasses.should == [sc1, sc2]
    sc1.subclasses.should == []
    sc2.subclasses.should == []

    ssc1 = Class.new(sc1)
    @c.subclasses.should == [sc1, sc2]
    sc1.subclasses.should == [ssc1]
    sc2.subclasses.should == []
  end

  specify "#descendents should record all descendent subclasses of the given model" do
    @c.descendents.should == []

    sc1 = Class.new(@c)
    @c.descendents.should == [sc1]
    sc1.descendents.should == []

    sc2 = Class.new(@c)
    @c.descendents.should == [sc1, sc2]
    sc1.descendents.should == []
    sc2.descendents.should == []

    ssc1 = Class.new(sc1)
    @c.descendents.should == [sc1, ssc1, sc2]
    sc1.descendents.should == [ssc1]
    sc2.descendents.should == []
    ssc1.descendents.should == []

    sssc1 = Class.new(ssc1)
    @c.descendents.should == [sc1, ssc1, sssc1, sc2]
    sc1.descendents.should == [ssc1, sssc1]
    sc2.descendents.should == []
    ssc1.descendents.should == [sssc1]
    sssc1.descendents.should == []
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
sequel-3.38.0 spec/extensions/subclasses_spec.rb
sequel-3.37.0 spec/extensions/subclasses_spec.rb
sequel-3.36.1 spec/extensions/subclasses_spec.rb
sequel-3.36.0 spec/extensions/subclasses_spec.rb
sequel-3.35.0 spec/extensions/subclasses_spec.rb
sequel-3.34.1 spec/extensions/subclasses_spec.rb
sequel-3.34.0 spec/extensions/subclasses_spec.rb
sequel-3.33.0 spec/extensions/subclasses_spec.rb
sequel-3.32.0 spec/extensions/subclasses_spec.rb
sequel-3.31.0 spec/extensions/subclasses_spec.rb
sequel-3.30.0 spec/extensions/subclasses_spec.rb
sequel-3.29.0 spec/extensions/subclasses_spec.rb
sequel-3.28.0 spec/extensions/subclasses_spec.rb
sequel-3.27.0 spec/extensions/subclasses_spec.rb
sequel-3.26.0 spec/extensions/subclasses_spec.rb
sequel-3.25.0 spec/extensions/subclasses_spec.rb
sequel-3.24.1 spec/extensions/subclasses_spec.rb
sequel-3.24.0 spec/extensions/subclasses_spec.rb
sequel-3.23.0 spec/extensions/subclasses_spec.rb
sequel-3.22.0 spec/extensions/subclasses_spec.rb