Sha256: 53de32d52038a4aee2a12315cada563841fd14cd90964372c3389cddf506a79b

Contents?: true

Size: 1.59 KB

Versions: 2

Compression:

Stored size: 1.59 KB

Contents

require 'spec_helper'

describe Csv2hash::Definition do

  context 'regular context' do
    subject do
      Csv2hash::Definition.new(
        [ { position: [0,0], key: 'name' } ],
        Csv2hash::Definition::MAPPING
      )
    end

    it 'variable should be assigned' do
      subject.type.should eql Csv2hash::Definition::MAPPING
      subject.rules.should eql [ { position: [0,0], key: 'name' } ]
    end
  end

  describe '#validate!' do
    context 'rules failling validation' do
      subject do
        Csv2hash::Definition.new nil, 'unsuitable_type'
      end
      it 'should throw exception' do
        expect {
          subject.validate!
        }.to raise_error("not suitable type, please use '#{Csv2hash::Definition::MAPPING}' " \
          "or '#{Csv2hash::Definition::COLLECTION}'")
      end
    end
    context 'rules failling validation' do
      subject do
        Csv2hash::Definition.new 'rules',Csv2hash::Definition::MAPPING
      end
      it 'should throw exception' do
        expect { subject.validate! }.to raise_error 'rules must be an Array of rules'
      end
    end
  end

  describe '#default!' do
    subject do
      Csv2hash::Definition.new [ { position: [0,0], key: 'name' } ], Csv2hash::Definition::MAPPING
    end

    before { subject.default! }

    it 'missing key must be filled' do
      subject.rules.should eql([{ position: [0, 0],
        key: 'name',
        message: 'undefined :key on :position',
        mappable: true,
        type: 'string',
        values: nil,
        nested: nil,
        allow_blank: false,
        extra_validator: nil }])
    end
  end
end




Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
csv2hash-0.1.1 spec/csv2hash/definition_spec.rb
csv2hash-0.1 spec/csv2hash/definition_spec.rb