Sha256: 894cbe6975e402e5907e468593359e4efad6d3e0eab3eada5a2b1126829c2d8e

Contents?: true

Size: 1.7 KB

Versions: 22

Compression:

Stored size: 1.7 KB

Contents

require 'spec_helper'

class ::TestSaveFailure < Volt::Model
  validate :name, length: 5
end

class ::TestChangedAttribute < Volt::Model
  before_save :change_attributes

  def change_attributes
    set('one', 1)
    set('two', 2)
  end
end

describe Volt::Buffer do
  it 'should let you pass a block that evaluates to the then of the promise' do
    buffer = the_page._items.buffer

    count = 0
    result = buffer.save! do
      count += 1
    end

    expect(count).to eq(1)
    expect(result.class).to eq(Promise)
  end

  it 'should clear the buffer\'s changed attributes after a save' do
    buffer = the_page._items.buffer

    buffer._name = 'Jimithy'

    expect(buffer.changed_attributes).to eq({name: [nil]})

    buffer.save!

    expect(buffer.changed_attributes).to eq({})
  end

  if RUBY_PLATFORM != 'opal'
    it 'should copy attributes back from the save_to model incase it changes them during save' do
      buffer = the_page._test_changed_attributes.buffer

      buffer.save!.sync
      expect(buffer.save_to.attributes.without(:id)).to eq({one: 1, two: 2})
      expect(buffer.attributes.without(:id)).to eq({one: 1, two: 2})
      expect(buffer.id).to eq(buffer.save_to.id)
    end

    it 'should reject a failed save! with the errors object' do
      buffer = the_page._test_save_failures.buffer

      buffer._name = 'Ryan'

      then_count = 0
      fail_count = 0
      error = nil

      buffer.save!.then do
        then_count += 1
      end.fail do |err|
        fail_count += 1
        error = err
      end

      expect(then_count).to eq(0)
      expect(fail_count).to eq(1)
      expect(error.class).to eq(Volt::Errors)
      expect(error).to eq(name: ['must be at least 5 characters'])
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
volt-0.9.7.pre8 spec/models/buffer_spec.rb
volt-0.9.7.pre7 spec/models/buffer_spec.rb
volt-0.9.7.pre6 spec/models/buffer_spec.rb
volt-0.9.7.pre5 spec/models/buffer_spec.rb
volt-0.9.7.pre3 spec/models/buffer_spec.rb
volt-0.9.7.pre2 spec/models/buffer_spec.rb
volt-0.9.6 spec/models/buffer_spec.rb
volt-0.9.6.pre3 spec/models/buffer_spec.rb
volt-0.9.6.pre2 spec/models/buffer_spec.rb
volt-0.9.6.pre1 spec/models/buffer_spec.rb
volt-0.9.5 spec/models/buffer_spec.rb
volt-0.9.5.pre12 spec/models/buffer_spec.rb
volt-0.9.5.pre11 spec/models/buffer_spec.rb
volt-0.9.5.pre9 spec/models/buffer_spec.rb
volt-0.9.5.pre8 spec/models/buffer_spec.rb
volt-0.9.5.pre7 spec/models/buffer_spec.rb
volt-0.9.5.pre6 spec/models/buffer_spec.rb
volt-0.9.5.pre5 spec/models/buffer_spec.rb
volt-0.9.5.pre4 spec/models/buffer_spec.rb
volt-0.9.5.pre3 spec/models/buffer_spec.rb