Sha256: ad2c40268e4bf4002b0268475bd33d4fafa0ed517220cccf705eb7cece7c889d

Contents?: true

Size: 932 Bytes

Versions: 6

Compression:

Stored size: 932 Bytes

Contents

require 'spec_helper'

describe 'Cistern::Model#dirty' do
  subject {
    Class.new(Sample::Model) do
      identity :id

      attribute :name
      attribute :properties, type: :array

      def save
        merge_attributes(attributes)
      end
    end
  }

  it 'should mark a existing record as dirty' do
    model = subject.new(id: 1, name: 'steve')
    expect(model.changed).to be_empty

    expect do
      model.properties = [1]
    end.to change { model.dirty? }.to(true)

    expect(model.changed).to eq(properties: [nil, [1]])
    expect(model.dirty_attributes).to eq(properties: [1])

    expect do
      model.properties = [2]
    end.to change { model.changed }.to(properties: [nil, [2]])
    expect(model.dirty_attributes).to eq(properties: [2])

    expect do
      model.save
    end.to change { model.dirty? }.to(false)

    expect(model.changed).to eq({})
    expect(model.dirty_attributes).to eq({})
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
cistern-2.8.0 spec/dirty_spec.rb
cistern-2.7.2 spec/dirty_spec.rb
cistern-2.7.1 spec/dirty_spec.rb
cistern-2.7.0 spec/dirty_spec.rb
cistern-2.6.0 spec/dirty_spec.rb
cistern-2.5.0 spec/dirty_spec.rb