Sha256: 6f19c88233cfa97e633a98b6bc018f1f8901c45698e08c1e17cf372ddb91e99a

Contents?: true

Size: 1.6 KB

Versions: 8

Compression:

Stored size: 1.6 KB

Contents

require_relative '../../spec_helper'
require 'virtus'

module Barometer
  class TestClass
    include Virtus.model
    attribute :distance, Data::Attribute::Distance
  end

  describe Data::Attribute::Distance do
    let(:model) { TestClass.new }

    context 'when setting to nil' do
      it 'resets the value' do
        model.distance = Data::Distance.new(42.2)
        model.distance = nil
        expect( model.distance ).to be_nil
      end
    end

    context 'when setting with data of exact values' do
      it 'initializes Barometer::Data::Distance' do
        model.distance = [42.2]
        expect( model.distance ).to be_a Data::Distance
      end

      it 'prints correctly' do
        model.distance = [42.2]
        expect( model.distance.to_s ).to eq '42.2 km'
      end
    end

    context 'when setting to multiple values' do
      it 'initializes Barometer::Data::Distance' do
        model.distance = [42.2, 26.2]
        expect( model.distance ).to be_a Data::Distance
      end

      it 'prints correctly (as metric)' do
        model.distance = [42.2, 26.2]
        expect( model.distance.to_s ).to eq '42.2 km'
      end

      it 'prints correctly (as imperial)' do
        model.distance = [:imperial, 42.2, 26.2]
        expect( model.distance.to_s ).to eq '26.2 m'
      end
    end

    context 'when setting with Barometer::Data::Distance' do
      it 'uses the passed in value' do
        distance = Data::Distance.new(42.2)
        model.distance = distance

        expect( model.distance ).to eq distance
        expect( model.distance.object_id ).to eq distance.object_id
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
barometer-0.9.7 spec/data/attributes/distance_spec.rb
barometer-0.9.6 spec/data/attributes/distance_spec.rb
barometer-0.9.5 spec/data/attributes/distance_spec.rb
barometer-0.9.4 spec/data/attributes/distance_spec.rb
barometer-0.9.3 spec/data/attributes/distance_spec.rb
barometer-0.9.2 spec/data/attributes/distance_spec.rb
barometer-0.9.1 spec/data/attributes/distance_spec.rb
barometer-0.9.0 spec/data/attributes/distance_spec.rb