Sha256: dec1c7723baa78ae0271f7e9829fbdde282b52c62d094ffee141d3862fc16fbf

Contents?: true

Size: 926 Bytes

Versions: 1

Compression:

Stored size: 926 Bytes

Contents

require 'spec_helper'
require 'csv'

describe DbMod::Statements::Configuration::As::Csv do
  subject do
    Module.new do
      include DbMod

      def_statement(:statement, 'SELECT a, b FROM foo').as(:csv)
      def_prepared(:prepared, 'SELECT a, b FROM bar').as(:csv)
    end.create(db: 'testdb')
  end

  before do
    @conn = instance_double 'PGconn'
    allow(@conn).to receive(:prepare)
    allow(PGconn).to receive(:connect).and_return @conn
  end

  {
    statement: :query,
    prepared: :exec_prepared
  }.each do |method_type, exec_type|
    context "#{method_type} methods" do
      it 'coerces results to csv' do
        expect(@conn).to receive(exec_type).and_return([
          { 'a' => '1', 'b' => '2' },
          { 'a' => '3', 'b' => '4' },
          { 'a' => nil, 'b' => '5' }
        ])

        csv = subject.send(method_type)
        expect(csv).to eq("a,b\n1,2\n3,4\n,5\n")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
db_mod-0.0.4 spec/db_mod/statements/configuration/as/csv_spec.rb