lib/rspec/openapi/hooks.rb in rspec-openapi-0.6.1 vs lib/rspec/openapi/hooks.rb in rspec-openapi-0.7.0

- old
+ new

@@ -1,11 +1,13 @@ require 'rspec' +require 'rspec/openapi/components_updater' require 'rspec/openapi/default_schema' require 'rspec/openapi/record_builder' require 'rspec/openapi/schema_builder' require 'rspec/openapi/schema_file' require 'rspec/openapi/schema_merger' +require 'rspec/openapi/schema_cleaner' path_records = Hash.new { |h, k| h[k] = [] } error_records = {} RSpec.configuration.after(:each) do |example| @@ -21,16 +23,21 @@ path_records.each do |path, records| RSpec::OpenAPI::SchemaFile.new(path).edit do |spec| schema = RSpec::OpenAPI::DefaultSchema.build(title) schema[:info].merge!(RSpec::OpenAPI.info) RSpec::OpenAPI::SchemaMerger.merge!(spec, schema) + new_from_zero = {} records.each do |record| begin - RSpec::OpenAPI::SchemaMerger.merge!(spec, RSpec::OpenAPI::SchemaBuilder.build(record)) + record_schema = RSpec::OpenAPI::SchemaBuilder.build(record) + RSpec::OpenAPI::SchemaMerger.merge!(spec, record_schema) + RSpec::OpenAPI::SchemaMerger.merge!(new_from_zero, record_schema) rescue StandardError, NotImplementedError => e # e.g. SchemaBuilder raises a NotImplementedError error_records[e] = record # Avoid failing the build end end + RSpec::OpenAPI::SchemaCleaner.cleanup!(spec, new_from_zero) + RSpec::OpenAPI::ComponentsUpdater.update!(spec, new_from_zero) end end if error_records.any? error_message = <<~EOS RSpec::OpenAPI got errors building #{error_records.size} requests