module UserDocs

User Documentation module

Extends Capybara's Actions to create end user documentation

:nocov:

Constants

VERSION

Public Instance Methods

before_setup() click to toggle source
Calls superclass method
# File lib/user_docs/capybara_extension.rb, line 9
def before_setup
  super

  check_installation

  @class_name = class_name.chomp("Procedure")
  @method = name.sub("test_", "")
  make_version_data_directory
  make_version_index
  Capybara.save_path =
    Rails.root.join(".docs/assets/#{version}/#{klass_name}/#{@method}")

  @json = { name: @method.humanize, steps: [] }
end
before_teardown() click to toggle source
Calls superclass method
# File lib/user_docs/capybara_extension.rb, line 24
def before_teardown
  path = ".docs/_data/versions/#{version}/#{klass_name}/#{@method}.json"
  File.write(Rails.root.join(path), @json.to_json)

  super
end

Private Instance Methods

accept_alert() click to toggle source
# File lib/user_docs/capybara_extension.rb, line 91
def accept_alert
  page.accept_alert
  @json[:steps] << "Click **OK**."
end
check_installation() click to toggle source
# File lib/user_docs/capybara_extension.rb, line 33
def check_installation
  return if Dir.exist?(Rails.root.join("docs"))

  # :nocov:
  abort("ERROR: Run 'rails g user_docs:install.'")
  # :nocov:
end
choose(label) click to toggle source
Calls superclass method
# File lib/user_docs/capybara_extension.rb, line 86
def choose(label)
  super
  @json[:steps] << "Select radio button with *#{label}*."
end
click_on(link) click to toggle source

rubocop:enable Metrics/MethodLength

Calls superclass method
# File lib/user_docs/capybara_extension.rb, line 76
def click_on(link)
  super
  @json[:steps] << "Click on **#{link}**."
end
comment(string) click to toggle source
# File lib/user_docs/capybara_extension.rb, line 104
def comment(string)
  @json[:steps] << string
end
fill_in(text, with:) click to toggle source
Calls superclass method
# File lib/user_docs/capybara_extension.rb, line 81
def fill_in(text, with:)
  super
  @json[:steps] << "Fill in **#{text}** with *#{with}*."
end
klass_name() click to toggle source
# File lib/user_docs/capybara_extension.rb, line 45
def klass_name
  @class_name.underscore
end
make_version_data_directory() click to toggle source
# File lib/user_docs/capybara_extension.rb, line 49
def make_version_data_directory
  data_path = Rails.root.join(".docs/_data/versions/#{version}/#{klass_name}")
  FileUtils.mkdir_p(data_path)
end
make_version_index() click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/user_docs/capybara_extension.rb, line 55
  def make_version_index
    directory = Rails.root.join(".docs/versions/#{version}")
    output_file = directory + "index.html"
    entry_file = Rails.root.join(".docs/index.html")

    FileUtils.mkdir_p(directory)
    File.write(
      output_file,
      <<~HTML
        ---
        layout: default
        version: #{version.tr!('_', '.')}
        ---
        {% include index.html %}
      HTML
    )

    FileUtils.cp_r(output_file, entry_file, remove_destination: true)
  end
save_screenshot(image = Time.now.to_i.to_s) click to toggle source
Calls superclass method
# File lib/user_docs/capybara_extension.rb, line 96
def save_screenshot(image = Time.now.to_i.to_s)
  image += ".png"
  super

  path = "/docs/assets/#{version}/#{klass_name}/#{@method}/#{image}"
  @json[:steps] << "<img src='#{path}' class='img-fluid'>"
end
version() click to toggle source
# File lib/user_docs/capybara_extension.rb, line 41
def version
  Rails.application.class.module_parent::VERSION.tr(".", "_")
end