class Soaspec::TemplateReader

Handles reading templates for tests

Attributes

template_name[RW]

Name of file where template is stored

Public Instance Methods

file_location() click to toggle source

@return [String] Path to where template file is stored

# File lib/soaspec/template_reader.rb, line 12
def file_location
  File.join(*Soaspec.template_folder, template_name)
end
render_body(template_name, test_values) click to toggle source

@param [String] template_name File where template is stored @return [String] Body of template after determining test_values

# File lib/soaspec/template_reader.rb, line 18
def render_body(template_name, test_values)
  test_values = IndifferentHash.new(test_values) # Allow test_values to be either Symbol or String
  test_values&.each do |key, value|
    instance_variable_set("@#{key}", value)
  end
  self.template_name = template_name
  unless File.exist? file_location
    raise "Cannot see file at #{file_location}. "\
          "Global folder is '#{Soaspec.template_folder}' and filename is '#{template_name}'"
  end
  request_body = File.read file_location
  raise "Template at #{file_location} not parsed correctly" if request_body.strip.empty?

  ERB.new(request_body).result(binding)
end