module Rspec::Swagger::RoutesWithSampleValues

Public Instance Methods

test_sample_values_for_path_params_on_get_routes() click to toggle source
# File lib/rspec/swagger/routes_with_sample_values.rb, line 4
def test_sample_values_for_path_params_on_get_routes
  @loader.documented_paths.each do |api|
    if api =~ /\{.*\}/
      if operation = @loader.operation(:GET, api)
        ["200", "403", "404"].each do |code|
          api_with_values = api.clone

          operation["parameters"].each do |param|
            if sample_value = sample_value_from_param(param, code)
              api_with_values = api_with_values.gsub("{#{param['name']}}", sample_value)
            end
          end

          unless api_with_values.include?("{")
            begin
              get api_with_values

              @formatter.format passed:     last_response.status.to_i == code.to_i,
                                left_text:  api_with_values,
                                right_text: "was <#{last_response.status}>"

              @formatter.format passed:     last_response.status.to_i == code.to_i,
                                left_text:  api_with_values,
                                right_text: "#{code} <documented>"
            rescue
              @formatter.format passed:     false,
                                left_text:  api_with_values,
                                right_text: "<#{$!.message}>"

              @formatter.format passed:     false,
                                left_text:  api_with_values,
                                right_text: "#{code} <documented>"
            end
          end
        end
      end
    end
  end
end

Private Instance Methods

environment() click to toggle source
# File lib/rspec/swagger/routes_with_sample_values.rb, line 59
def environment
  ENV["ENVIRONMENT"] || "development"
end
sample_value_from_param(param, code) click to toggle source
# File lib/rspec/swagger/routes_with_sample_values.rb, line 46
def sample_value_from_param(param, code)
  has_sample_values_hash = param["sampleValues"].respond_to?(:has_key?) &&
    param["sampleValues"].has_key?(code.to_s)

  if has_sample_values_hash
    if param["sampleValues"][code.to_s].respond_to?(:has_key?)
      param["sampleValues"][code.to_s][environment]
    else
      param["sampleValues"][code.to_s]
    end
  end
end