Sha256: b1453d97eb8e71a4f8f4bdbe871081f99fcb48004feb8c56775b397e3aea4e7b

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

require 'spec_helper'

describe ROM::Setup do
  describe '#finalize' do
    context 'with an adapter that supports schema inferring' do
      it 'builds relation from inferred schema' do
        adapter = double('adapter').as_null_object
        repo = double('repo', adapter: adapter).as_null_object
        dataset = double('dataset')

        allow(repo).to receive(:schema).and_return([
          [:users, dataset, [:name, :email]]
        ])

        setup = ROM::Setup.new(memory: repo)
        env = setup.finalize

        users = env.relations.users

        expect(users.dataset).to be(dataset)
        expect(users.header).to eql([:name, :email])
      end
    end
  end

  describe '#method_missing' do
    it 'returns a repository if it is defined' do
      repo = double('repo')
      setup = ROM::Setup.new(repo: repo)

      expect(setup.repo).to be(repo)
    end

    it 'raises error if repo is not defined' do
      setup = ROM::Setup.new({})

      expect { setup.not_here }.to raise_error(NoMethodError, /not_here/)
    end
  end

  describe '#[]' do
    it 'returns a repository if it is defined' do
      repo = double('repo')
      setup = ROM::Setup.new(repo: repo)

      expect(setup[:repo]).to be(repo)
    end

    it 'raises error if repo is not defined' do
      setup = ROM::Setup.new({})

      expect { setup[:not_here] }.to raise_error(KeyError, /not_here/)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rom-0.5.0 spec/unit/rom/setup_spec.rb