Sha256: f644259475e3f3f44cbec17db38702959df3540c6d82b0b570c480b0422464af

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

RSpec.describe ROM::HTTP::Dataset::ResponseTransformers::Schemad do
  subject(:transformer) { ROM::HTTP::Dataset::ResponseTransformers::Schemad.new(schema) }

  let(:schema) do
    { id: ROM::Types::Form::Int,
      name: ROM::Types::Strict::String,
      active: ROM::Types::Form::Bool }
  end

  describe '#call' do
    let(:response) do
      [
        {
          id: '1',
          name: 'Jill',
          email: 'jill@fakemail.com',
          active: 'true'
        }
      ]
    end
    let(:dataset) do
      double('ROM::HTTP::Dataset', projections: projections)
    end

    context 'with no projections' do
      let(:projections) { [] }

      it 'returns original tuples' do
        result = transformer.call(response, dataset)

        expect(result).to eql([id: 1, name: 'Jill', active: true])
      end
    end

    context 'with projections' do
      let(:projections) { [:id, :name, :active] }

      it 'returns projected relation tuples' do
        result = transformer.call(response, dataset)

        expect(result).to eql([id: 1, name: 'Jill', active: true])
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rom-http-0.5.0 spec/unit/rom/http/dataset/response_transformers/schemad_spec.rb