Module: Minitest::OpenAPI::Schema

Defined in:
lib/minitest/openapi/schema.rb

Constant Summary collapse

ALLOWED_EXTENSIONS =
%w[.json .yaml .yml].freeze

Class Method Summary collapse

Class Method Details

.buildObject



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/minitest/openapi/schema.rb', line 10

def self.build
  file_paths = self.parse_files

  Dir.mkdir("docs") unless File.exist?("docs")
  file_paths.each do |file|
    raise InvalidFileFormat unless valid_file_ext?(file)

    File.open(file, "w") do |f|
      f.write(JSON.pretty_generate(json_schema(file), indent: "  "))
      puts "File generated!"
    end
  end
end

.json_schema(file) ⇒ Object

IDK



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/minitest/openapi/schema.rb', line 25

def self.json_schema(file)
  JSON.parse({
    openapi: "3.1.0",
    info: {
      title: Minitest::OpenAPI.title,
      version: Minitest::OpenAPI.version
    },
    servers: Minitest::OpenAPI.servers,
    paths: Minitest::OpenAPI.paths[file],
    webhooks: Minitest::OpenAPI.webhooks[file]
  }.to_json)
end

.parse_filesObject



38
39
40
41
42
43
44
45
# File 'lib/minitest/openapi/schema.rb', line 38

def self.parse_files
  file_paths = []
  file_paths.concat(
    Minitest::OpenAPI.paths.keys,
    Minitest::OpenAPI.webhooks.keys
  )
  file_paths.uniq
end

.valid_file_ext?(file) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/minitest/openapi/schema.rb', line 47

def self.valid_file_ext?(file)
  ALLOWED_EXTENSIONS.include?(File.extname(file))
end