Sha256: 5531c0f5552beb54f599db2b1be7603930c678cb6b9e16f57ebfa2c584dfabb9

Contents?: true

Size: 1.87 KB

Versions: 2

Compression:

Stored size: 1.87 KB

Contents

RSpec.shared_context 'database' do
  let(:configuration) { ROM::Configuration.new(:sql, uri) }
  let(:conn) { configuration.gateways[:default].connection }
  let(:rom) { ROM.container(configuration) }
  let(:uri) do
    if defined? JRUBY_VERSION
      'jdbc:postgresql://localhost/rom_repository'
    else
      'postgres://localhost/rom_repository'
    end
  end

  before do
    conn.loggers << LOGGER

    [:tags, :tasks, :posts, :users, :posts_labels, :labels, :books,
     :reactions, :messages].each { |table| conn.drop_table?(table) }

    conn.create_table :books do
      primary_key :id
      column :title, String
      column :created_at, Time
      column :updated_at, Time
    end

    conn.create_table :users do
      primary_key :id
      column :name, String
    end

    conn.create_table :tasks do
      primary_key :id
      foreign_key :user_id, :users, null: false, on_delete: :cascade
      column :title, String
    end

    conn.create_table :tags do
      primary_key :id
      foreign_key :task_id, :tasks, null: false, on_delete: :cascade
      column :name, String
    end

    conn.create_table :labels do
      primary_key :id
      column :name, String
    end

    conn.create_table :posts do
      primary_key :id
      foreign_key :author_id, :users, null: false, on_delete: :cascade
      column :title, String
      column :body, String
    end

    conn.create_table :posts_labels do
      foreign_key :post_id, :labels, null: false, on_delete: :cascade
      foreign_key :label_id, :labels, null: false, on_delete: :cascade
      primary_key [:post_id, :label_id]
    end

    conn.create_table :messages do
      primary_key :message_id
      column :author, String
      column :body, String
    end

    conn.create_table :reactions do
      primary_key :reaction_id
      foreign_key :message_id, :messages, null: false
      column :author, String
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rom-repository-0.3.1 spec/shared/database.rb
rom-repository-0.3.0 spec/shared/database.rb