Sha256: a7088b275766dfdc91a43fdcb6f7ba1dbd9e15bccec448e95d9fdc6bc6513cd5

Contents?: true

Size: 1.92 KB

Versions: 1

Compression:

Stored size: 1.92 KB

Contents

require 'spec_helper'

describe BikePOA::Helpers::ForceField do
  describe 'enforcer installation' do
    before :each do
      module BikePOA::Helpers::ForceField::Enforcers
        def self.force_something(value)
          "#{value}, forced"
        end
      end
      class DummySubject < Hashie::Dash
        include BikePOA::Helpers::ForceField
        property :forced
        force_something :forced
      end
    end

    context 'when setting property directly' do
      let(:dummy) { DummySubject.new }

      it 'applies the enforcer' do
        dummy.forced = 'a value'
        dummy.forced.should == 'a value, forced'
      end
    end
    context 'when creating the object from a hash' do
      let(:dummy) { DummySubject.new(forced: 'a value') }

      it 'forces the value to become something else' do
        dummy = DummySubject.new(forced: 'a value')
        dummy.forced.should == 'a value, forced'
      end
    end
  end

  describe :Enforcers do
    let(:mod) { BikePOA::Helpers::ForceField::Enforcers }

    describe :force_utf8 do
      it 'encodes a iso-8859-1 value to utf-8' do
        mod.force_utf8("Jo\xE3o da Silva").bytes.to_a.should == "Jo\xC3\xA3o da Silva".bytes.to_a
      end

      it 'does not try to over-convert an utf-8 value' do
        mod.force_utf8("Jo\xC3\xA3o da Silva").bytes.to_a.should == "Jo\xC3\xA3o da Silva".bytes.to_a
      end
    end

    describe 'force integer' do
      it "accepts any value that is castable to integer" do
        expect { mod.force_integer('42') }.to_not raise_error(ArgumentError)
        expect { mod.force_integer(42)   }.to_not raise_error(ArgumentError)
        expect { mod.force_integer(42.0) }.to_not raise_error(ArgumentError)
      end
      it "raises when the value is not castable to integer" do
        expect { mod.force_integer("abc") }.to raise_error(ArgumentError)
        expect { mod.force_integer("a12") }.to raise_error(ArgumentError)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bikepoa-tools-0.4.0 spec/helpers_spec.rb