class Textualize::RequestSpecs

Public Instance Methods

create_airborne_specs() click to toggle source
# File lib/textualize/tasks/request_specs.rb, line 11
def create_airborne_specs
  add_airborne_specs
end

Private Instance Methods

add_airborne_specs() click to toggle source
# File lib/textualize/tasks/request_specs.rb, line 17
def add_airborne_specs
  RouteHashes.filenames_and_hashes.each do |(filename, hashes)|
    request_directory = "dist/#{filename}/spec/requests/"

    FileUtils.mkdir_p(request_directory)

    hashes.each do |route_hash|
      modified_hash = replace_ids_with_interpolated_ruby(route_hash)

      File.open(
        "#{request_directory}#{route_hash.verb}_"\
        "#{route_hash.name}_spec.rb", 'w'
      ) do |file|
        file.write(request_spec_template(modified_hash))
      end
    end
  end
end
non_ro_type(route_hash) click to toggle source
# File lib/textualize/tasks/request_specs.rb, line 49
def non_ro_type(route_hash)
  route_hash.type.gsub(/-ro$/, '')
end
replace_ids_with_interpolated_ruby(route_hash) click to toggle source
# File lib/textualize/tasks/request_specs.rb, line 53
def replace_ids_with_interpolated_ruby(route_hash)
  modified_hash = route_hash
  modified_hash.relative_path.gsub!(/({|_id)/, '{' => '#{', '_id' => '.id')
  modified_hash.url.gsub!(/({|_id)/, '{' => '#{', '_id' => '.id')
  modified_hash
end
request_spec_template(route_hash) click to toggle source
# File lib/textualize/tasks/request_specs.rb, line 36
def request_spec_template(route_hash)
  ERB.new(
    File.read(
      "#{template_directory}#{route_hash.verb}"\
      "_#{non_ro_type(route_hash)}.rb.erb"
    )
  ).result(route_hash.instance_eval { binding })
end
template_directory() click to toggle source
# File lib/textualize/tasks/request_specs.rb, line 45
def template_directory
  @_directory ||= __dir__.chomp('tasks') + 'templates/request_specs/'
end