Sha256: a36c1ed3b54f4df2a2cd43e5d3142046e898fa17ae58fe1c5b2d08fc3abb28f3

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

require 'memoizer'
require File.expand_path('test_connection', File.dirname(__FILE__))

module TestSupport
  class TestDatabase

    include Memoizer

    attr_reader :connection_args

    NAME_PREFIX = 'sqlpostgres_test_'

    def initialize(name, connection_args, encoding)
      @name = name
      @connection_args = connection_args
      @encoding = encoding
    end

    def create(template)
      template.create_database(db_name, database_encoding)
    end

    def drop(template)
      template.drop_database(db_name)
    end

    def context
      "db=#{@name} db-encoding=#{database_encoding}"
    end

    def test_connections
      client_encodings.map do |client_encoding|
        TestConnection.new(self, client_encoding)
      end
    end
    memoize :test_connections

    def connection_args
      @connection_args.merge('db_name' => db_name)
    end

    def db_name
      "#{NAME_PREFIX}#{database_encoding}"
    end

    private

    def database_encoding
      @encoding['database_encoding']
    end

    def client_encodings
      @encoding['client_encodings']
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sqlpostgres-1.3.0 spec/lib/test_database.rb