require 'rails_helper'
RSpec.describe Csvable do
describe '.from_array_of_hashes' do
let(:data) do
[
{ column1: 'value row1.1', column2: 'value row1.2' },
{ column1: 'value row2.1', column2: 'value row2.2' },
{ column1: 'value row3.1', column2: 'value row3.2' },
]
end
it 'returns empty string' do
stringified_csv = described_class.from_array_of_hashes([])
expect(stringified_csv).to be_empty
end
it 'first row describes columns' do
stringified_csv = described_class.from_array_of_hashes(data)
header = /[^\n]+/.match(stringified_csv)[0]
expect("Column1,Column2").to eq(header)
end
it 'returns each hash within the array' do
stringified_csv = described_class.from_array_of_hashes(data)
output = <<~HERE
Column1,Column2
value row1.1,value row1.2
value row2.1,value row2.2
value row3.1,value row3.2
HERE
expect(stringified_csv).to eq(output)
end
end
end