Class: QaServer::MonitorStatusPresenter

Inherits:
Object
  • Object
show all
Defined in:
app/presenters/qa_server/monitor_status_presenter.rb

Overview

rubocop:disable Metrics/ClassLength

Instance Method Summary collapse

Constructor Details

#initialize(current_summary:, current_failure_data:, historical_summary_data:, performance_data:) ⇒ MonitorStatusPresenter

Returns a new instance of MonitorStatusPresenter.

Parameters:

  • current_summary (ScenarioRunSummary) —

    summary status of the latest run of test scenarios

  • current_data (Array<Hash>) —

    current set of failures for the latest test run, if any

  • historical_summary_data (Array<Hash>) —

    summary of past failuring runs per authority to drive chart



12
13
14
15
16
17
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 12

def initialize(current_summary:, current_failure_data:, historical_summary_data:, performance_data:)
  @current_summary = current_summary
  @current_failure_data = current_failure_data
  @historical_summary_data = historical_summary_data
  @performance_data = performance_data
end

Instance Method Details

#authorities_count ⇒ Integer

Returns number of loaded authorities.

Returns:

  • (Integer) —

    number of loaded authorities



30
31
32
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 30

def authorities_count
  @current_summary.authority_count
end

#authorities_count_style ⇒ String

Returns css style class representing whether all tests passed or any failed.

Returns:

  • (String) —

    css style class representing whether all tests passed or any failed



40
41
42
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 40

def authorities_count_style
  failures? ? 'status-bad' : 'status-good'
end

#failing_authorities_count ⇒ Integer

Returns number of authorities with failing tests in the latest test run.

Returns:

  • (Integer) —

    number of authorities with failing tests in the latest test run



35
36
37
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 35

def failing_authorities_count
  @current_failure_data.map { |f| f[:authority_name] }.uniq.count
end

#failing_tests_count ⇒ Integer

Returns number of failing tests in the latest test run.

Returns:

  • (Integer) —

    number of failing tests in the latest test run



55
56
57
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 55

def failing_tests_count
  @current_summary.failing_scenario_count
end

#failing_tests_style ⇒ String

Returns css style class representing whether all tests passed or any failed.

Returns:

  • (String) —

    css style class representing whether all tests passed or any failed



60
61
62
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 60

def failing_tests_style
  failures? ? 'status-bad' : 'status-good'
end

#failures ⇒ Array<Hash>

Returns A list of failures data in the latest test run, if any.

Examples:

[ { status: :FAIL,
    status_label: 'X',
    authority_name: 'LOCNAMES_LD4L_CACHE',
    subauthority_name: 'person',
    service: 'ld4l_cache',
    action: 'search',
    url: '/qa/search/linked_data/locnames_ld4l_cache/person?q=mark twain&maxRecords=4',
    err_message: 'Exception: Something went wrong.' }, ... ]

Returns:

  • (Array<Hash>) —

    A list of failures data in the latest test run, if any



74
75
76
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 74

def failures
  @current_failure_data
end

#failures? ⇒ Boolean

Returns true if failure data exists for the latest test run; otherwise false.

Returns:

  • (Boolean) —

    true if failure data exists for the latest test run; otherwise false



79
80
81
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 79

def failures?
  failing_tests_count.positive?
end

#first_updated ⇒ String

Returns date of first recorded test run.

Returns:

  • (String) —

    date of first recorded test run



25
26
27
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 25

def first_updated
  QaServer::ScenarioRunRegistry.first.dt_stamp.in_time_zone("Eastern Time (US & Canada)").strftime("%m/%d/%y - %I:%M %p")
end

#historical_graph ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
108
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 97

def historical_graph
  # g = Gruff::SideStackedBar.new('800x400')
  g = Gruff::SideStackedBar.new
  graph_theme(g)
  g.title = ''
  historical_data = rework_historical_data_for_gruff
  g.labels = historical_data[0]
  g.data('Fail', historical_data[1])
  g.data('Pass', historical_data[2])
  g.write historical_graph_full_path
  File.join(historical_graph_relative_path, historical_graph_filename)
end

#historical_summary ⇒ Array<Hash>

Returns historical test data to be displayed (authname, failing, passing).

Examples:

[ [ 'agrovoc', 0, 24 ],
  [ 'geonames_ld4l_cache', 2, 22 ] ... ]

Returns:

  • (Array<Hash>) —

    historical test data to be displayed (authname, failing, passing)



87
88
89
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 87

def historical_summary
  @historical_summary_data
end

#history? ⇒ Boolean

Returns true if historical test data exists; otherwise false.

Returns:

  • (Boolean) —

    true if historical test data exists; otherwise false



92
93
94
95
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 92

def history?
  return true if @historical_summary_data.present?
  false
end

#last_updated ⇒ String

Returns date of last test run.

Returns:

  • (String) —

    date of last test run



20
21
22
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 20

def last_updated
  @current_summary.run_dt_stamp.in_time_zone("Eastern Time (US & Canada)").strftime("%m/%d/%y - %I:%M %p")
end

#passing_tests_count ⇒ Integer

Returns number of passing tests in the latest test run.

Returns:

  • (Integer) —

    number of passing tests in the latest test run



50
51
52
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 50

def passing_tests_count
  @current_summary.passing_scenario_count
end

#status_label(status) ⇒ String

Returns the name of the css style class to use for the status cell based on the status of the scenario test.

Returns:

  • (String) —

    the name of the css style class to use for the status cell based on the status of the scenario test.



116
117
118
119
120
121
122
123
124
125
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 116

def status_label(status)
  case status[:status]
  when :good
    QaServer::ScenarioRunHistory::GOOD_MARKER
  when :bad
    QaServer::ScenarioRunHistory::BAD_MARKER
  when :unknown
    QaServer::ScenarioRunHistory::UNKNOWN_MARKER
  end
end

#status_style_class(status) ⇒ String

Returns the name of the css style class to use for the status cell based on the status of the scenario test.

Returns:

  • (String) —

    the name of the css style class to use for the status cell based on the status of the scenario test.



111
112
113
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 111

def status_style_class(status)
  "status-#{status[:status]}"
end

#tests_count ⇒ Integer

Returns number of tests in the latest test run.

Returns:

  • (Integer) —

    number of tests in the latest test run



45
46
47
# File 'app/presenters/qa_server/monitor_status_presenter.rb', line 45

def tests_count
  @current_summary.total_scenario_count
end