Sha256: 5333a32a2ce70b9a5e5185376cc7821172627d4a19706cc5112a59eb5b9b0369

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

RSpec.describe ROM::Changeset, '.map' do
  subject(:changeset) do
    Class.new(ROM::Changeset) do
      map do
        unwrap :address
        rename_keys street: :address_street, city: :address_city, country: :address_country
      end

      def default_command_type
        :test
      end
    end.new(relation, __data__: user_data)
  end

  let(:relation) { double(:relation) }

  context 'with a hash' do
    let(:user_data) do
      { name: 'Jane', address: { street: 'Street 1', city: 'NYC', country: 'US' } }
    end

    it 'sets up custom data pipe' do
      expect(changeset.to_h)
        .to eql(name: 'Jane', address_street: 'Street 1', address_city: 'NYC', address_country: 'US' )
    end
  end

  context 'with an array' do
    let(:user_data) do
      [{ name: 'Jane', address: { street: 'Street 1', city: 'NYC', country: 'US' } },
       { name: 'Joe', address: { street: 'Street 2', city: 'KRK', country: 'PL' } }]
    end

    it 'sets up custom data pipe' do
      expect(changeset.to_a)
        .to eql([
                  { name: 'Jane', address_street: 'Street 1', address_city: 'NYC', address_country: 'US' },
                  { name: 'Joe', address_street: 'Street 2', address_city: 'KRK', address_country: 'PL' }
                ])
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rom-repository-1.0.0.beta2 spec/unit/changeset/map_spec.rb
rom-repository-1.0.0.beta1 spec/unit/changeset/map_spec.rb