Sha256: b3613d411f2afdd022753d0061b2d793e45ab791461bfb7a4d2291058dc7dfee

Contents?: true

Size: 1.59 KB

Versions: 3

Compression:

Stored size: 1.59 KB

Contents

require "test_helper"

class InheritanceColumnTest < ActiveSupport::TestCase
  context "STI models" do
    setup do
      @animal = Animal.create name: "Animal"
      @animal.update_attributes name: "Animal from the Muppets"
      @animal.update_attributes name: "Animal Muppet"
      @animal.destroy

      @dog = Dog.create name: "Snoopy"
      @dog.update_attributes name: "Scooby"
      @dog.update_attributes name: "Scooby Doo"
      @dog.destroy

      @cat = Cat.create name: "Garfield"
      @cat.update_attributes name: "Garfield (I hate Mondays)"
      @cat.update_attributes name: "Garfield The Cat"
      @cat.destroy
    end

    should "work with custom STI inheritance column" do
      assert_equal 12, PaperTrail::Version.count
      assert_equal 4, @animal.versions.count
      assert_nil @animal.versions.first.reify
      @animal.versions[1..-1].each { |v| assert_equal "Animal", v.reify.class.name }

      # For some reason `@dog.versions` doesn't include the final `destroy` version.
      # Neither do `@dog.versions.scoped` nor `@dog.versions(true)` nor `@dog.versions.reload`.
      dog_versions = PaperTrail::Version.where(item_id: @dog.id).order(:created_at)
      assert_equal 4, dog_versions.count
      assert_nil dog_versions.first.reify
      assert_equal %w(NilClass Dog Dog Dog), dog_versions.map { |v| v.reify.class.name }

      cat_versions = PaperTrail::Version.where(item_id: @cat.id).order(:created_at)
      assert_equal 4, cat_versions.count
      assert_nil cat_versions.first.reify
      assert_equal %w(NilClass Cat Cat Cat), cat_versions.map { |v| v.reify.class.name }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
paper_trail-6.0.2 test/unit/inheritance_column_test.rb
paper_trail-6.0.1 test/unit/inheritance_column_test.rb
paper_trail-6.0.0 test/unit/inheritance_column_test.rb