Sha256: 7f7fbbf355ce4717353294b87ad2a09e9a695c2e816b87ae3cd560c937c2e4da

Contents?: true

Size: 1.73 KB

Versions: 9

Compression:

Stored size: 1.73 KB

Contents

require 'spec_helper'

describe Soulless::Dirty do
  before(:each) do
    @dummy_class = DummyClass.new
  end
  
  it 'should support dirty attributes' do
    defined?(:changed?).should be_true
  end
  
  it 'should record attribute changes' do
    @dummy_class.name_changed?.should be_false
    @dummy_class.name = 'Yaw'
    @dummy_class.name_changed?.should be_true
  end
  
  it 'should correctly record changes to objects with initialized values' do
    @dummy_class = DummyClass.new(name: 'Biff')
    @dummy_class.name_changed?.should be_false
    @dummy_class.name = 'Anthony'
    @dummy_class.name_changed?.should be_true
  end
  
  it 'should record changes in a has_one association' do
    @dummy_association = DummyAssociation.new(spouse: { name: 'Megan' })
    @dummy_association.spouse.name_changed?.should be_false
    @dummy_association.spouse.name = 'Megan Jr'
    @dummy_association.spouse.name_changed?.should be_true
  end
  
  it 'should record changes in a has_many association' do
    @dummy_association = DummyAssociation.new(friends: [{ name: 'Yaw' }])
    @dummy_association.friends[0].name_changed?.should be_false
    @dummy_association.friends[0].name = 'Biff'
    @dummy_association.friends[0].name_changed?.should be_true
  end
  
  it 'should reset its dirty state when saved' do
    @dummy_class.name = 'Biff'
    @dummy_class.save
    @dummy_class.changed?.should be_false
  end
  
  it 'should not reset its dirty state if validations fail' do
    @dummy_class.name = nil
    @dummy_class.save
    @dummy_class.changed?.should be_true
  end
  
  it 'should record changed made before #save was called in previous_changes' do
    @dummy_class.name = 'Biff'
    @dummy_class.save
    @dummy_class.previous_changes.should_not be_empty
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
soulless-0.5.0.rc5 spec/dirty_spec.rb
soulless-0.5.0.rc4 spec/dirty_spec.rb
soulless-0.5.0.rc3 spec/dirty_spec.rb
soulless-0.5.0.rc2 spec/dirty_spec.rb
soulless-0.5.0.rc1 spec/dirty_spec.rb
soulless-0.4.3 spec/dirty_spec.rb
soulless-0.4.1 spec/dirty_spec.rb
soulless-0.4.0 spec/dirty_spec.rb
soulless-0.3.0 spec/dirty_spec.rb