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.0.65 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.64 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.63 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.62 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.61 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.60 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.59 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.58 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.57 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.56 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.55 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.54 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.53 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.52 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.51 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.50 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.49 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.48 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.47 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb
ree_lib-1.0.46 lib/ree_lib/packages/ree_swagger/spec/functions/register_type_spec.rb