Sha256: b206a196323f36e6f0753004c99049eaacc3f609192c4e47b47a2fea13c8f150

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

require 'test_helper'

class DirtyDummy < ActiveRecord::Base
  set_table_name 'dummies'
  as_enum :gender, [:male, :female], :dirty => true
end

class DirtyAttributesTest < ActiveSupport::TestCase
  def setup
    reload_db
  end

  test "setting using changed? on enum" do
    jane = DirtyDummy.create!(:gender => :female)
    assert_equal 1, jane.gender_cd
    jane.gender = :male # operation? =)
    assert_equal :male, jane.gender
    assert_equal true, jane.gender_cd_changed?
    assert_equal true, jane.gender_changed?
  end

  test "access old value via gender_was" do
    john = DirtyDummy.create!(:gender => :male)
    assert_equal 0, john.gender_cd
    john.gender = :female
    assert_equal :female, john.gender
    assert_equal 0, john.gender_cd_was
    assert_equal :male, john.gender_was
  end

  test "dirty methods are disabled by default (opt-in)" do
    no_dirty = Dummy.new
    assert !no_dirty.respond_to?(:gender_was), "should not respond_to :gender_was"
    assert !no_dirty.respond_to?(:gender_changed?), "should not respond_to :gender_changed?"
    assert !no_dirty.respond_to?(:word_was), "should not respond_to :word_was"
    assert !no_dirty.respond_to?(:word_changed?), "should not respond_to :word_changed?"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
simple_enum-1.4.1 test/dirty_attributes_test.rb