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
