Sha256: 63a6575087b80fb1381417aeef2cd38f9750b31815342c88086ead147348f52c
Contents?: true
Size: 1.62 KB
Versions: 1
Compression:
Stored size: 1.62 KB
Contents
module OasRails module Builders class ContentBuilder def initialize(specification, context) @context = context || :incoming @specification = specification @media_type = Spec::MediaType.new(specification) end def with_schema(schema) @media_type.schema = @specification.components.add_schema(schema) self end def with_examples(examples) @media_type.examples = @specification.components.add_example(examples) self end def with_examples_from_tags(tags) @media_type.examples = @media_type.examples.merge(tags.each_with_object({}).with_index(1) do |(example, result), _index| key = example.text.downcase.gsub(' ', '_') value = { "summary" => example.text, "value" => example.content } result[key] = @specification.components.add_example(value) end) self end def from_model_class(klass) return self unless klass.ancestors.map(&:to_s).include? 'ActiveRecord::Base' model_schema = Builders::EsquemaBuilder.send("build_#{@context}_schema", klass:) model_schema["required"] = [] schema = { type: "object", properties: { klass.to_s.downcase => model_schema } } examples = Spec::MediaType.search_for_examples_in_tests(klass, context: @context) @media_type.schema = @specification.components.add_schema(schema) @media_type.examples = @media_type.examples.merge(examples) self end def build { "application/json": @media_type } end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
oas_rails-0.9.0 | lib/oas_rails/builders/content_builder.rb |