Class: PriorityTest::Core::Test

Inherits:
Sequel::Model
  • Object
show all
Includes:
Comparable, ValidationsHelper
Defined in:
lib/priority_test/core/test.rb

Constant Summary collapse

NUMBER_OF_RESULTS =
5

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ValidationsHelper

#validates_includes, #validates_presence

Class Method Details

.all_in_priority_orderObject



13
14
15
# File 'lib/priority_test/core/test.rb', line 13

def self.all_in_priority_order
  eager(:results).order(:priority, :avg_run_time).all
end

Instance Method Details

#<=>(other) ⇒ Object



17
18
19
20
21
# File 'lib/priority_test/core/test.rb', line 17

def <=>(other)
  result = (priority <=> other.priority) if priority && other.priority
  result = (avg_run_time <=> other.avg_run_time) if (result == 0 || !result) && avg_run_time && other.avg_run_time
  result || 0
end

#priority?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/priority_test/core/test.rb', line 42

def priority?
  Priority.in_priority_set?(priority)
end

#results_keyObject



27
28
29
30
31
# File 'lib/priority_test/core/test.rb', line 27

def results_key
  results_key = results.collect { |r| r.passed? ? 'P' : 'F' }.join
  results_key << 'P' * (NUMBER_OF_RESULTS - results_key.size) if results_key.size < NUMBER_OF_RESULTS
  results_key[0..(NUMBER_OF_RESULTS-1)]
end

#update_statisticsObject



33
34
35
36
37
38
39
40
# File 'lib/priority_test/core/test.rb', line 33

def update_statistics
  stats_to_update = {}
  prio = Priority[results_key]
  stats_to_update.merge!(:priority => prio) if prio
  stats_to_update.merge!(:avg_run_time => calculate_avg_run_time) if results.size > 0

  self.update(stats_to_update)
end

#validateObject



23
24
25
# File 'lib/priority_test/core/test.rb', line 23

def validate
  validates_presence [ :identifier, :file_path ]
end