rspec-openapi 0.4.8 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +13 -5
- data/CHANGELOG.md +5 -0
- data/Gemfile +1 -1
- data/README.md +2 -0
- data/lib/rspec/openapi/hooks.rb +2 -2
- data/lib/rspec/openapi/schema_merger.rb +11 -10
- data/lib/rspec/openapi/version.rb +1 -1
- metadata +2 -3
- data/.travis.yml +0 -6
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b35634b5756cb3719f38bdb5bbb501033b69472d0680615b5e1dcdba2251f41f
         | 
| 4 | 
            +
              data.tar.gz: 6600c602466bf0ea6a468c22a2762c6717086ed2ee1ae89c4d132b7d5edc21cc
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 13c6e8ad06467426186336d53a387e7e92207d5caf5c6838a076275674e3f334a490185cbf20d889f59b04160d6ec056b3030e35862217d6425f88ccef7fc97c
         | 
| 7 | 
            +
              data.tar.gz: 4393d139ac38acd1ccf1b8404482671932b39491eed44ab69cbf57c28e06a186cdf452cb610b01377d2237f28ee4fe024fd43e28780b8662e8c76626be414332
         | 
    
        data/.github/workflows/test.yml
    CHANGED
    
    | @@ -15,11 +15,19 @@ jobs: | |
| 15 15 | 
             
                strategy:
         | 
| 16 16 | 
             
                  fail-fast: false
         | 
| 17 17 | 
             
                  matrix:
         | 
| 18 | 
            -
                     | 
| 19 | 
            -
                      - ruby:2.5
         | 
| 20 | 
            -
                      - ruby:2.6
         | 
| 21 | 
            -
                      - ruby:2.7
         | 
| 22 | 
            -
                      - ruby:3.0
         | 
| 18 | 
            +
                    include:
         | 
| 19 | 
            +
                      - ruby: ruby:2.5
         | 
| 20 | 
            +
                      - ruby: ruby:2.6
         | 
| 21 | 
            +
                      - ruby: ruby:2.7
         | 
| 22 | 
            +
                      - ruby: ruby:3.0
         | 
| 23 | 
            +
                      - ruby: ruby:3.1
         | 
| 24 | 
            +
                        rails: 6.0.5
         | 
| 25 | 
            +
                      - ruby: ruby:3.1
         | 
| 26 | 
            +
                        rails: 6.1.6
         | 
| 27 | 
            +
                      - ruby: ruby:3.1
         | 
| 28 | 
            +
                        rails: 7.0.3
         | 
| 29 | 
            +
                env:
         | 
| 30 | 
            +
                  RAILS_VERSION: ${{ matrix.rails == '' && '6.1.6' || matrix.rails }}
         | 
| 23 31 | 
             
                steps:
         | 
| 24 32 | 
             
                  - uses: actions/checkout@v2
         | 
| 25 33 | 
             
                  - name: bundle install
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/Gemfile
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -105,6 +105,8 @@ and the schema file can be used as an input of [Swagger UI](https://github.com/s | |
| 105 105 | 
             
            The following configurations are optional.
         | 
| 106 106 |  | 
| 107 107 | 
             
            ```rb
         | 
| 108 | 
            +
            require 'rspec/openapi'
         | 
| 109 | 
            +
             | 
| 108 110 | 
             
            # Change the path to generate schema from `doc/openapi.yaml`
         | 
| 109 111 | 
             
            RSpec::OpenAPI.path = 'doc/schema.yaml'
         | 
| 110 112 |  | 
    
        data/lib/rspec/openapi/hooks.rb
    CHANGED
    
    | @@ -22,10 +22,10 @@ RSpec.configuration.after(:suite) do | |
| 22 22 | 
             
                RSpec::OpenAPI::SchemaFile.new(path).edit do |spec|
         | 
| 23 23 | 
             
                  schema = RSpec::OpenAPI::DefaultSchema.build(title)
         | 
| 24 24 | 
             
                  schema[:info].merge!(RSpec::OpenAPI.info)
         | 
| 25 | 
            -
                  RSpec::OpenAPI::SchemaMerger. | 
| 25 | 
            +
                  RSpec::OpenAPI::SchemaMerger.merge!(spec, schema)
         | 
| 26 26 | 
             
                  records.each do |record|
         | 
| 27 27 | 
             
                    begin
         | 
| 28 | 
            -
                      RSpec::OpenAPI::SchemaMerger. | 
| 28 | 
            +
                      RSpec::OpenAPI::SchemaMerger.merge!(spec, RSpec::OpenAPI::SchemaBuilder.build(record))
         | 
| 29 29 | 
             
                    rescue StandardError, NotImplementedError => e # e.g. SchemaBuilder raises a NotImplementedError
         | 
| 30 30 | 
             
                      error_records[e] = record # Avoid failing the build
         | 
| 31 31 | 
             
                    end
         | 
| @@ -1,9 +1,9 @@ | |
| 1 1 | 
             
            class << RSpec::OpenAPI::SchemaMerger = Object.new
         | 
| 2 2 | 
             
              # @param [Hash] base
         | 
| 3 3 | 
             
              # @param [Hash] spec
         | 
| 4 | 
            -
              def  | 
| 4 | 
            +
              def merge!(base, spec)
         | 
| 5 5 | 
             
                spec = normalize_keys(spec)
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                merge_schema!(base, spec)
         | 
| 7 7 | 
             
              end
         | 
| 8 8 |  | 
| 9 9 | 
             
              private
         | 
| @@ -22,25 +22,26 @@ class << RSpec::OpenAPI::SchemaMerger = Object.new | |
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 24 | 
             
              # Not doing `base.replace(deep_merge(base, spec))` to preserve key orders.
         | 
| 25 | 
            -
              # Also this needs to be aware of OpenAPI details  | 
| 26 | 
            -
              #  | 
| 25 | 
            +
              # Also this needs to be aware of OpenAPI details because a Hash-like structure 
         | 
| 26 | 
            +
              # may be an array whose Hash elements have a key name.
         | 
| 27 27 | 
             
              #
         | 
| 28 | 
            -
              # TODO: Perform more intelligent merges like rerouting edits / merging types
         | 
| 29 28 | 
             
              # TODO: Should we probably force-merge `summary` regardless of manual modifications?
         | 
| 30 | 
            -
              def  | 
| 29 | 
            +
              def merge_schema!(base, spec)
         | 
| 31 30 | 
             
                spec.each do |key, value|
         | 
| 32 31 | 
             
                  if base[key].is_a?(Hash) && value.is_a?(Hash)
         | 
| 33 | 
            -
                     | 
| 34 | 
            -
             | 
| 35 | 
            -
                     | 
| 32 | 
            +
                    if !base[key].key?("$ref")
         | 
| 33 | 
            +
                      merge_schema!(base[key], value)
         | 
| 34 | 
            +
                    end
         | 
| 36 35 | 
             
                  elsif base[key].is_a?(Array) && value.is_a?(Array)
         | 
| 37 36 | 
             
                    # parameters need to be merged as if `name` and `in` were the Hash keys.
         | 
| 38 37 | 
             
                    if key == 'parameters'
         | 
| 39 38 | 
             
                      base[key] |= value
         | 
| 40 39 | 
             
                      base[key].uniq! { |param| param.slice('name', 'in') }
         | 
| 40 | 
            +
                    else
         | 
| 41 | 
            +
                      base[key] = value
         | 
| 41 42 | 
             
                    end
         | 
| 42 43 | 
             
                  else
         | 
| 43 | 
            -
                     | 
| 44 | 
            +
                    base[key] = value
         | 
| 44 45 | 
             
                  end
         | 
| 45 46 | 
             
                end
         | 
| 46 47 | 
             
                base
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rspec-openapi
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.5.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Takashi Kokubun
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022- | 
| 11 | 
            +
            date: 2022-05-19 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: actionpack
         | 
| @@ -49,7 +49,6 @@ files: | |
| 49 49 | 
             
            - ".github/workflows/test.yml"
         | 
| 50 50 | 
             
            - ".gitignore"
         | 
| 51 51 | 
             
            - ".rspec"
         | 
| 52 | 
            -
            - ".travis.yml"
         | 
| 53 52 | 
             
            - CHANGELOG.md
         | 
| 54 53 | 
             
            - Gemfile
         | 
| 55 54 | 
             
            - LICENSE.txt
         |