Sha256: 109bb3d3fe1f1b0fdc71d44d55ac774ed0218ac439c8ee1d98b235ee130a24b0

Contents?: true

Size: 1.57 KB

Versions: 1

Compression:

Stored size: 1.57 KB

Contents

RSpec.describe 'Plugins / :auto_wrap' do
  with_adapters do
    include_context 'users and tasks'

    describe '#for_wrap' do
      shared_context 'joined tuple' do
        it 'returns joined tuples' do
          task_with_user = tasks
            .for_wrap({ id: :user_id }, users.name.relation)
            .where(tasks__id: 2)
            .one

          expect(task_with_user).to eql(
            id: 2, user_id: 1, title: "Jane's task", users_name: "Jane", users_id: 1
          )
        end

        it 'works with by_pk' do
          task_with_user = tasks
                             .for_wrap({ id: :user_id }, users.name.relation)
                             .by_pk(1)
                             .one

          expect(task_with_user).
            to eql(id: 1, user_id: 2, title: "Joe's task", users_name: "Joe", users_id: 2)
        end
      end

      context 'when parent relation is registered under dataset name' do
        subject(:tasks) { relations[:tasks] }

        let(:users) { relations[:users] }

        before do
          conf.relation(:tasks) { schema(infer: true) }
          conf.relation(:users) { schema(infer: true) }
        end

        include_context 'joined tuple'
      end

      context 'when parent relation is registered under a custom name' do
        subject(:tasks) { relations[:tasks] }

        let(:users) { relations[:authors] }

        before do
          conf.relation(:tasks) { schema(infer: true) }
          conf.relation(:authors) { schema(:users, infer: true) }
        end

        include_context 'joined tuple'
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rom-sql-1.0.0 spec/integration/plugins/auto_wrap_spec.rb