Sha256: c75146abf413a2aafb80b3ac445d5f0b6c6f564aace9caed9f8b32fa4c1eea57

Contents?: true

Size: 1.21 KB

Versions: 76

Compression:

Stored size: 1.21 KB

Contents

package_require('ree_mapper/dsl')

RSpec.describe ReeMapper::DSL do
  before {
    Ree.enable_irb_mode
  }

  after {
    Ree.disable_irb_mode
  }

  it {
    class ReeMapper::UserCaster
      include ReeMapper::DSL

      mapper :user_caster

      build_mapper(register_as: :user).use(:cast) do
        integer :id
        string  :name
        user    :created_by, null: true
      end
    end

    class ReeMapper::ProductCaster
      include ReeMapper::DSL

      mapper :product_caster do
        link :user_caster
      end

      build_mapper.use(:cast) do
        integer :id
        string  :title
        user    :creator
      end
    end

    result = ReeMapper::ProductCaster.new.cast(
      OpenStruct.new(
        {
          id: 1,
          title: 'Product',
          creator: {
            id: 1,
            name: 'John',
            created_by: {
              id: 2,
              name: 'Jane',
              created_by: nil
            }
          }
        }
      )
    )

    expect(result).to eq({
      id: 1, 
      title: 'Product', 
      creator: { 
        id: 1, 
        name: 'John',
        created_by: {
          id: 2,
          name: 'Jane',
          created_by: nil
        }
      }
    })
  }
end

Version data entries

76 entries across 76 versions & 1 rubygems

Version Path
ree_lib-1.1.1 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.1.0 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.124 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.123 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.122 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.121 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.120 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.119 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.118 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.117 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.116 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.115 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.114 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.113 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.112 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.111 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.110 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.109 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.108 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb
ree_lib-1.0.107 lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb