spec/csv2hash/parser/mapping_spec.rb in csv2hash-0.5.0 vs spec/csv2hash/parser/mapping_spec.rb in csv2hash-0.6.0

- old
+ new

@@ -1,36 +1,41 @@ require 'spec_helper' -describe Csv2hash::Parser::Mapping do +module Csv2hash + describe Parser::Mapping do - let(:definition) do - Csv2hash::Definition.new [ { position: [0,0], key: 'name' } ], Csv2hash::Definition::MAPPING - end + let(:definition) do + Main.generate_definition :foo do + set_type { Definition::MAPPING } + mapping { cell position: [0,0], key: 'name' } + end + end - let(:data_source) { [ [ 'John Doe' ] ] } + let(:data_source) { [ [ 'John Doe' ] ] } - subject do - Csv2hash::Main.new(definition, data_source, ignore_blank_line: false) - end + subject do + Main.new(definition, data_source, ignore_blank_line: false) + end - context 'regular way' do - it { expect { subject.parse }.to_not raise_error } - it { - expect(subject.tap do |csv2hash| - csv2hash.parse - end.data).to eql({ data: [ { 'name' => 'John Doe' } ] }) - } - end + context 'regular way' do + it { expect { subject.parse! }.to_not raise_error } + it { + expect(subject.tap do |csv2hash| + csv2hash.parse! + end.data).to eql({ data: [ { 'name' => 'John Doe' } ] }) + } + end - context 'with nested' do - let(:data_source) { [ [ 'John Doe', 22 ] ] } - before do - definition.rules << { position: [0,1], key: 'age', nested: 'infos' } + context 'with nested' do + let(:data_source) { [ [ 'John Doe', 22 ] ] } + before do + definition.cells << Cell.new({ position: [0,1], key: 'age', nested: 'infos' }) + end + it { + expect(subject.tap { |c| c.parse! }.data).to eql( + { data: [ { 'name' => 'John Doe', 'infos' => { 'age' => 22 } } ] } + ) + } end - it { - expect(subject.tap { |c| c.parse }.data).to eql( - { data: [ { 'name' => 'John Doe', 'infos' => { 'age' => 22 } } ] } - ) - } - end + end end