You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.4 KiB
50 lines
1.4 KiB
require 'spec_helper' |
|
|
|
describe Squib::Deck do |
|
context '#csv' do |
|
it 'loads basic csv data' do |
|
expect(Squib.csv(file: csv_file('basic.csv'))).to eq({ |
|
'h1' => [1, 3], |
|
'h2' => [2, 4] |
|
}) |
|
end |
|
|
|
it 'collapses duplicate columns and warns' do |
|
expect(Squib.logger).to receive(:warn) |
|
.with('CSV duplicated the following column keys: h1,h1') |
|
expect(Squib.csv(file: csv_file('dup_cols.csv'))).to eq({ |
|
'h1' => [1, 3], |
|
'h2' => [5, 7], |
|
'H2' => [6, 8], |
|
'h3' => [9, 10], |
|
}) |
|
end |
|
|
|
it 'handles spaces properly' do |
|
expect(Squib.csv(file: csv_file('with_spaces.csv'))).to eq({ |
|
'With Spaces' => ['a b c ', 3], |
|
'h2' => [2, 4], |
|
'h3' => [3, nil] |
|
}) |
|
end |
|
end |
|
|
|
context '#xlsx' do |
|
it 'loads basic xlsx data' do |
|
expect(Squib.xlsx(file: xlsx_file('basic.xlsx'))).to eq({ |
|
'Name' => %w(Larry Curly Mo), |
|
'General Number' => %w(1 2 3), #general types always get loaded as strings with no conversion |
|
'Actual Number' => [4.0, 5.0, 6.0], #numbers get auto-converted to integers |
|
}) |
|
end |
|
|
|
it 'loads xlsx with formulas' do |
|
expect(Squib.xlsx(file: xlsx_file('formulas.xlsx'))).to eq({ |
|
'A' => %w(1 2), |
|
'B' => %w(3 4), |
|
'Sum' => %w(4 6), |
|
}) |
|
end |
|
|
|
end |
|
end |