Class: Inferno::Repositories::Results::Model
  
  
  
  Constant Summary
  
  
  ValidateRunnableReference::REFERENCE_KEYS
  
    
      Class Method Summary
      collapse
    
    
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  
  #check_runnable_reference, #runnable_reference_exists?
  
    Class Method Details
    
      
  
  
    .current_results_for_test_session(test_session_id)  ⇒ Object 
  
  
  
  
    | 
203
204
205 | # File 'lib/inferno/repositories/results.rb', line 203
def self.current_results_for_test_session(test_session_id)
  fetch(current_results_sql, test_session_id:)
end | 
 
    
      
  
  
    .current_results_for_test_session_and_runnables(test_session_id, runnables)  ⇒ Object 
  
  
  
  
    | 
207
208
209
210
211
212
213
214
215
216
217
218
219 | # File 'lib/inferno/repositories/results.rb', line 207
def self.current_results_for_test_session_and_runnables(test_session_id, runnables)
  test_ids = runnables.select { |runnable| runnable < Entities::Test }.map!(&:database_id)
  test_group_ids = runnables.select { |runnable| runnable < Entities::TestGroup }.map!(&:database_id)
  test_suite_ids = runnables.select { |runnable| runnable < Entities::TestSuite }.map!(&:database_id)
  fetch(
    current_results_sql(with_runnables_filter: true),
    test_session_id:,
    test_ids:,
    test_group_ids:,
    test_suite_ids:
  )
end | 
 
    
      
  
  
    .current_results_sql(with_runnables_filter: false)  ⇒ Object 
  
  
  
  
    | 
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182 | # File 'lib/inferno/repositories/results.rb', line 160
def self.current_results_sql(with_runnables_filter: false)
  query = <<~SQL.gsub(/\s+/, ' ').freeze
    SELECT * FROM results a
    WHERE test_session_id = :test_session_id
  SQL
  runnables_filter = <<~SQL.gsub(/\s+/, ' ').freeze
    AND (test_id IN :test_ids OR test_group_id IN :test_group_ids OR test_suite_id IN :test_suite_ids)
  SQL
  subquery = <<~SQL.gsub(/\s+/, ' ').freeze
    AND a.id IN  (
      SELECT id
      FROM results b
      WHERE (b.test_session_id = a.test_session_id AND b.test_id = a.test_id) OR
            (b.test_session_id = a.test_session_id AND b.test_group_id = a.test_group_id) OR
            (b.test_session_id = a.test_session_id AND b.test_suite_id = a.test_suite_id)
      ORDER BY updated_at DESC
      LIMIT 1
    )
  SQL
  return "#{query} #{runnables_filter} #{subquery}" if with_runnables_filter
  "#{query} #{subquery}"
end | 
 
    
   
  
    Instance Method Details
    
      
  
  
    #before_create  ⇒ Object 
  
  
  
  
    | 
190
191
192
193
194
195
196 | # File 'lib/inferno/repositories/results.rb', line 190
def before_create
  self.id = SecureRandom.uuid
  time = Time.now
  self.created_at ||= time
  self.updated_at ||= time
  super
end | 
 
    
      
  
  
    #validate  ⇒ Object 
  
  
  
  
    | 
198
199
200
201 | # File 'lib/inferno/repositories/results.rb', line 198
def validate
  super
  errors.add(:result, "'#{result}' is not valid") unless Entities::Result::RESULT_OPTIONS.include?(result)
end |