Sha256: 477b68a4fd3beb8805d68af90e68cfd30ec1739e095c064a141c6518a9827a8d

Contents?: true

Size: 2 KB

Versions: 8

Compression:

Stored size: 2 KB

Contents

require 'spec_helper'
require 'volt/models'

describe Volt::Persistors::Store do
  it 'should tell the persistor when the model has changed' do
    persistor = double('volt/persistor')
    persistor_instance = double('volt/persistor instance')
    expect(persistor_instance).to receive(:loaded)
    expect(persistor).to receive(:new).and_return(persistor_instance)

    @model = Volt::Model.new({}, persistor: persistor)

    expect(persistor_instance).to receive(:changed)

    @model._attr = 'yes'
  end

  it 'should tell the persistor when something is added to an array model' do
    persistor = double('volt/persistor')
    persistor_instance = double('volt/persistor instance')
    expect(persistor_instance).to receive(:loaded)
    expect(persistor).to receive(:new).and_return(persistor_instance)

    @model = Volt::ArrayModel.new([1, 2, 3], persistor: persistor)

    expect(persistor_instance).to receive(:added).with(4, 3)

    @model << 4
  end

  it 'passes removed() to changed() by default' do
    model     = Volt::Model.new(abc: 123)
    persistor = Volt::Persistors::Store.new(model)
    expect(persistor.removed(:abc)).to eq(persistor.changed(:abc))
    model._abc = 456
    expect(persistor.removed(:abc)).to eq(persistor.changed(:abc))
  end

  unless RUBY_PLATFORM == 'opal'
    before do
      model = store._nesters.create(name: 'One').sync
      model._subone = {name: 'Two'}
    end

    it 'should reload a model with nested hash models' do
      model2 = store._nesters.first.sync

      expect(model2.to_h.without(:id, :subone)).to eq(name: 'One')
      expect(model2._subone.to_h.without(:id)).to eq(name: 'Two')
    end

    it 'should reload nested hash models with the same parent persistor' do
      model = store._nesters.first.sync
      expect(model.persistor).to eq(model._subone.persistor)
    end
  end

  unless RUBY_PLATFORM == 'opal'
    it 'should sync properties on the root' do
      store._name = 'Jim'
      store._name.then do |name|
        expect(name).to eq('Jim')
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
volt-0.9.4.pre3 spec/models/persistors/store_spec.rb
volt-0.9.4.pre2 spec/models/persistors/store_spec.rb
volt-0.9.4.pre1 spec/models/persistors/store_spec.rb
volt-0.9.3 spec/models/persistors/store_spec.rb
volt-0.9.3.pre6 spec/models/persistors/store_spec.rb
volt-0.9.3.pre5 spec/models/persistors/store_spec.rb
volt-0.9.3.pre4 spec/models/persistors/store_spec.rb
volt-0.9.3.pre3 spec/models/persistors/store_spec.rb