Sha256: 1686a6c2873e32e72ec700d88df3e9998c739dae6c4995a27f97d52a8481630f

Contents?: true

Size: 1.76 KB

Versions: 2

Compression:

Stored size: 1.76 KB

Contents

require 'spec_helper'

require 'rom/lint/spec'

RSpec.describe ROM::SQL::Gateway, :postgres do
  include_context 'users and tasks'

  let(:gateway) { container.gateways[:default] }

  it_behaves_like 'a rom gateway' do
    let(:identifier) { :sql }
    let(:gateway) { ROM::SQL::Gateway }
  end

  describe 'sqlite with a file db', :sqlite, postgres: false do
    before do
      Tempfile.new('test.sqlite')
    end

    it 'establishes an sqlite connection' do
      gateway = ROM::SQL::Gateway.new(uri)
      expect(gateway).to be_instance_of(ROM::SQL::Gateway)
    end
  end

  describe '#dataset?' do
    it 'returns true if a table exists' do
      expect(gateway.dataset?(:users)).to be(true)
    end

    it 'returns false if a table does not exist' do
      expect(gateway.dataset?(:not_here)).to be(false)
    end
  end

  describe 'using options' do
    it 'allows custom sequel-specific options' do
      migrator = double('migrator')

      expect(Sequel).to receive(:connect)
        .with(uri, host: '127.0.0.1')
        .and_return(conn)

      gateway = ROM::SQL::Gateway.new(uri, migrator: migrator, host: '127.0.0.1')

      expect(gateway.options).to eql(migrator: migrator)
    end

    it 'allows extensions' do
      extensions = [:pg_array, :pg_enum]
      connection = Sequel.connect uri

      expect(connection).to receive(:extension).with(:pg_array, :pg_json, :pg_enum)

      ROM::SQL::Gateway.new(connection, extensions: extensions)
    end
  end

  describe '#disconnect' do
    let(:gateway) { ROM::SQL::Gateway.new(uri) }

    it 'disconnects via sequel connection' do
      # FIXME: no idea how to test it in a different way
      # FIXME: we are leaking connection here
      expect(gateway.connection).to receive(:disconnect)
      gateway.disconnect
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rom-sql-0.9.1 spec/unit/gateway_spec.rb
rom-sql-0.9.0 spec/unit/gateway_spec.rb