Sha256: 5e1e3a1997b8a633738cc3a48f881714899531ce22a89576987f2ff95804820c

Contents?: true

Size: 1.72 KB

Versions: 87

Compression:

Stored size: 1.72 KB

Contents

RSpec.describe :register_type do
  link :build_mapper_factory, from: :ree_mapper
  link :build_mapper_strategy, from: :ree_mapper
  link :build_request_body_schema, from: :ree_swagger
  link :build_serializer_schema, from: :ree_swagger
  link :register_type, from: :ree_swagger

  class ReeSwagger::MyType < ReeMapper::AbstractType
    def serialize(obj, role: nil)
      obj.inspect
    end

    def cast(obj, **)
      obj
    end
  end

  let(:mapper_factory) {
    strategies = [
      build_mapper_strategy(method: :serialize, dto: Hash),
      build_mapper_strategy(method: :cast, dto: Hash),
    ]

    build_mapper_factory(strategies: strategies)
      .register_type(:my_type, ReeSwagger::MyType.new)
  }

  let(:mapper) {
    mapper_factory.call.use(:serialize).use(:cast) do
      my_type :name
      array :ids, integer
    end
  }

  before do
    register_type(
      :serializers,
      ReeSwagger::MyType,
      ->(my_type, build_serializer_schema) {
        {
          type: 'string'
        }
      }
    )

    register_type(
      :casters,
      ReeSwagger::MyType,
      ->(my_type, build_serializer_schema) {
        {
          type: 'string'
        }
      }
    )
  end

  it {
    expect(build_serializer_schema(mapper)).to eq(
      {
        type: 'object',
        properties: {
          name: {
            type: 'string'
          },
          ids: { items: { type: "integer" }, type: "array" }
        }
      }
    )
  }

  it {
    expect(build_request_body_schema(mapper)).to eq(
      {
        type: 'object',
        required: ["name", "ids"],
        properties: {
          name: {
            type: 'string'
          },
          ids: { items: { type: "integer" }, type: "array" }
        }
      }
    )
  }
end

Version data entries

87 entries across 87 versions & 1 rubygems

Version Path
ree_lib-1.1.0 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.124 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.123 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.122 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.121 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.120 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.119 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.118 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.117 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.116 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.115 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.114 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.113 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.112 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.111 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.110 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.109 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.108 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.107 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.106 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb