Sha256: 15c9dab31875a101b70177c3a9c29942e997bcc0bbebbfe38dd835c2d47542b2

Contents?: true

Size: 1.78 KB

Versions: 24

Compression:

Stored size: 1.78 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

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

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

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

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

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

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

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

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

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

  it "plugin block should be called with each subclass created" do
    c = Class.new(Sequel::Model)
    a = []
    c.plugin(:subclasses){|sc| a << sc}
    sc1 = Class.new(c)
    a.must_equal [sc1]
    sc2 = Class.new(c)
    a.must_equal [sc1, sc2]
    sc3 = Class.new(sc1)
    a.must_equal [sc1, sc2, sc3]
    sc4 = Class.new(sc3)
    a.must_equal [sc1, sc2, sc3, sc4]
  end
end

Version data entries

24 entries across 24 versions & 2 rubygems

Version Path
sequel-4.43.0 spec/extensions/subclasses_spec.rb
sequel-4.42.1 spec/extensions/subclasses_spec.rb
sequel-4.42.0 spec/extensions/subclasses_spec.rb
sequel-4.41.0 spec/extensions/subclasses_spec.rb
sequel-4.40.0 spec/extensions/subclasses_spec.rb
sequel-4.39.0 spec/extensions/subclasses_spec.rb
tdiary-5.0.2 vendor/bundle/gems/sequel-4.37.0/spec/extensions/subclasses_spec.rb
sequel-4.38.0 spec/extensions/subclasses_spec.rb
sequel-4.37.0 spec/extensions/subclasses_spec.rb
sequel-4.36.0 spec/extensions/subclasses_spec.rb
tdiary-5.0.1 vendor/bundle/gems/sequel-4.35.0/spec/extensions/subclasses_spec.rb
sequel-4.35.0 spec/extensions/subclasses_spec.rb
sequel-4.34.0 spec/extensions/subclasses_spec.rb
sequel-4.33.0 spec/extensions/subclasses_spec.rb
sequel-4.32.0 spec/extensions/subclasses_spec.rb
sequel-4.31.0 spec/extensions/subclasses_spec.rb
sequel-4.30.0 spec/extensions/subclasses_spec.rb
sequel-4.29.0 spec/extensions/subclasses_spec.rb
sequel-4.28.0 spec/extensions/subclasses_spec.rb
sequel-4.27.0 spec/extensions/subclasses_spec.rb