Sha256: 3ddfbb1c47c9d7cabfe36c08578eb1c547c09ab8ca661bd978d605a6172b5965

Contents?: true

Size: 1.19 KB

Versions: 16

Compression:

Stored size: 1.19 KB

Contents

require 'spec_helper'

describe 'overriding virtus behavior' do

  before do
    module Examples
      class Article
        include Virtus

        attribute :title, String

        def title
          super || '<unknown>'
        end

        def title=(name)
          super unless self.title == "can't be changed"
        end
      end
    end
  end

  describe 'overriding an attribute getter' do
    specify 'calls the defined getter' do
      expect(Examples::Article.new.title).to eq('<unknown>')
    end

    specify 'super can be used to access the getter defined by virtus' do
      expect(Examples::Article.new(:title => 'example article').title).to eq('example article')
    end
  end

  describe 'overriding an attribute setter' do
    specify 'calls the defined setter' do
      article = Examples::Article.new(:title => "can't be changed")
      article.title = 'this will never be assigned'
      expect(article.title).to eq("can't be changed")
    end

    specify 'super can be used to access the setter defined by virtus' do
      article = Examples::Article.new(:title => 'example article')
      article.title = 'my new title'
      expect(article.title).to eq('my new title')
    end
  end
end

Version data entries

16 entries across 14 versions & 5 rubygems

Version Path
cm-admin-1.5.22 vendor/bundle/ruby/3.3.0/gems/virtus-2.0.0/spec/integration/overriding_virtus_spec.rb
cm-admin-1.5.21 vendor/bundle/ruby/3.3.0/gems/virtus-2.0.0/spec/integration/overriding_virtus_spec.rb
cm-admin-1.5.20 vendor/bundle/ruby/3.3.0/gems/virtus-2.0.0/spec/integration/overriding_virtus_spec.rb
virtus2-2.1.0 spec/integration/overriding_virtus_spec.rb
virtus2-2.0.2 spec/integration/overriding_virtus_spec.rb
virtus2-2.0.1 spec/integration/overriding_virtus_spec.rb
virtus-2.0.0 spec/integration/overriding_virtus_spec.rb
grape-extra_validators-2.0.0 vendor/bundle/ruby/2.6.0/gems/virtus-1.0.5/spec/integration/overriding_virtus_spec.rb
grape-extra_validators-1.0.0 vendor/bundle/ruby/2.4.0/gems/virtus-1.0.5/spec/integration/overriding_virtus_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/integration/overriding_virtus_spec.rb
config_gems_initialization_aim-0.1.4 vendor/bundle/ruby/2.5.0/gems/virtus-1.0.5/spec/integration/overriding_virtus_spec.rb
config_gems_initialization_aim-0.1.3 vendor/bundle/ruby/2.5.0/gems/virtus-1.0.5/spec/integration/overriding_virtus_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/integration/overriding_virtus_spec.rb
virtus-1.0.5 spec/integration/overriding_virtus_spec.rb
virtus-1.0.4 spec/integration/overriding_virtus_spec.rb
virtus-1.0.3 spec/integration/overriding_virtus_spec.rb