Sha256: 9f35f0cb7e8f2da410582b63c63906706fa2f85e85bdd0c904b5d420b7688f99

Contents?: true

Size: 1.15 KB

Versions: 4

Compression:

Stored size: 1.15 KB

Contents

require 'spec_helper'

describe "default values" do

  before do
    module Examples
      class Page
        include Virtus

        attribute :title,        String
        attribute :slug,         String,  :default => lambda { |post, attribute| post.title.downcase.gsub(' ', '-') }
        attribute :view_count,   Integer, :default => 0
        attribute :published,    Boolean, :default => false, :accessor => :private
        attribute :editor_title, String,  :default => :default_editor_title

        def default_editor_title
          published? ? title : "UNPUBLISHED: #{title}"
        end
      end

    end
  end

  subject { Examples::Page.new }

  specify 'without a default the value is nil' do
    subject.title.should be_nil
  end

  specify 'can be supplied with the :default option' do
    subject.view_count.should == 0
  end

  specify "you can pass a 'callable-object' to the :default option" do
    subject.title = 'Example Blog Post'
    subject.slug.should == 'example-blog-post'
  end

  specify 'you can set defaults for private attributes' do
    subject.title = 'Top Secret'
    subject.editor_title.should == 'UNPUBLISHED: Top Secret'
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
virtus-0.4.2 spec/integration/default_values_spec.rb
virtus-0.4.1 spec/integration/default_values_spec.rb
virtus-0.4.0 spec/integration/default_values_spec.rb
virtus-0.3.0 spec/integration/default_values_spec.rb