Sha256: b75091639a1ed7087fd40a25276421b4a9989c498a5d51258eeea85454df63a3

Contents?: true

Size: 1.16 KB

Versions: 8

Compression:

Stored size: 1.16 KB

Contents

require 'spec_helper'
require 'volt/models'

class ExampleModelWithField < Volt::Model
  field :name
  field :value, Numeric
end

describe 'field helpers' do
  let(:model) { ExampleModelWithField.new }
  it 'should allow a user to setup a field that can be written to and read' do

    expect(model.name).to eq(nil)
    model.name = 'jimmy'
    expect(model.name).to eq('jimmy')

    expect(model.value).to eq(nil)
    model.value = '20.5'

    # Should be cast to float
    expect(model.value).to eq(20.5)
  end

  it 'should raise an error when an invalid cast type is provided' do
    expect do
      ExampleModelWithField.field :awesome, Array
    end.to raise_error(FieldHelpers::InvalidFieldClass)
  end

  it 'should convert numeric strings to Fixnum when Fixnum is specified as a type restriction' do
    model.value = '22'
    expect(model.value).to eq(22)
  end

  it 'should not convert non-numeric strings (and have a validation error)' do
    # use a buffer, so we can put the model into an invalid state
    buf = model.buffer
    buf.value = 'cats'
    expect(buf.value).to eq('cats')

    buf.validate!.fail do |error|
      expect(error).to eq({})
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
volt-0.9.5.pre3 spec/models/field_helpers_spec.rb
volt-0.9.5.pre2 spec/models/field_helpers_spec.rb
volt-0.9.5.pre1 spec/models/field_helpers_spec.rb
volt-0.9.4 spec/models/field_helpers_spec.rb
volt-0.9.4.pre5 spec/models/field_helpers_spec.rb
volt-0.9.4.pre3 spec/models/field_helpers_spec.rb
volt-0.9.4.pre2 spec/models/field_helpers_spec.rb
volt-0.9.4.pre1 spec/models/field_helpers_spec.rb