Sha256: 8343f8595863a2ebde56b6d557b84812679c7512242397e0f4abbb02d18c638f

Contents?: true

Size: 792 Bytes

Versions: 15

Compression:

Stored size: 792 Bytes

Contents

require 'spec_helper'

describe Virtus::Attribute, '#get' do
  subject { object.get(instance) }

  let(:object) { described_class.build(String, options.update(:name => name)) }

  let(:model)    { Class.new { attr_accessor :test } }
  let(:name)     { :test }
  let(:instance) { model.new }
  let(:value)    { 'Jane Doe' }
  let(:options)  { {} }

  context 'with :lazy is set to false' do
    before do
      instance.test = value
    end

    it { is_expected.to be(value) }
  end

  context 'with :lazy is set to true' do
    let(:options) { { :lazy => true, :default => value } }

    it { is_expected.to eql(value) }

    it 'sets default only on first access' do
      expect(object.get(instance)).to eql(value)
      expect(object.get(instance)).to be(instance.test)
    end
  end
end

Version data entries

15 entries across 13 versions & 5 rubygems

Version Path
cm-admin-1.5.22 vendor/bundle/ruby/3.3.0/gems/virtus-2.0.0/spec/unit/virtus/attribute/get_spec.rb
cm-admin-1.5.21 vendor/bundle/ruby/3.3.0/gems/virtus-2.0.0/spec/unit/virtus/attribute/get_spec.rb
cm-admin-1.5.20 vendor/bundle/ruby/3.3.0/gems/virtus-2.0.0/spec/unit/virtus/attribute/get_spec.rb
virtus2-2.1.0 spec/unit/virtus/attribute/get_spec.rb
virtus2-2.0.2 spec/unit/virtus/attribute/get_spec.rb
virtus2-2.0.1 spec/unit/virtus/attribute/get_spec.rb
virtus-2.0.0 spec/unit/virtus/attribute/get_spec.rb
grape-extra_validators-2.0.0 vendor/bundle/ruby/2.6.0/gems/virtus-1.0.5/spec/unit/virtus/attribute/get_spec.rb
grape-extra_validators-1.0.0 vendor/bundle/ruby/2.4.0/gems/virtus-1.0.5/spec/unit/virtus/attribute/get_spec.rb
config_gems_initialization_aim-0.1.4 vendor/bundle/ruby/2.5.0/gems/virtus-1.0.5/spec/unit/virtus/attribute/get_spec.rb
config_gems_initialization_aim-0.1.4 vendor/bundle/ruby/2.5.0/gems/config_gems_initialization_aim-0.1.1/vendor/bundle/ruby/2.5.0/gems/virtus-1.0.5/spec/unit/virtus/attribute/get_spec.rb
config_gems_initialization_aim-0.1.3 vendor/bundle/ruby/2.5.0/gems/virtus-1.0.5/spec/unit/virtus/attribute/get_spec.rb
config_gems_initialization_aim-0.1.3 vendor/bundle/ruby/2.5.0/gems/config_gems_initialization_aim-0.1.1/vendor/bundle/ruby/2.5.0/gems/virtus-1.0.5/spec/unit/virtus/attribute/get_spec.rb
virtus-1.0.5 spec/unit/virtus/attribute/get_spec.rb
virtus-1.0.4 spec/unit/virtus/attribute/get_spec.rb