Class: TestCollection

Inherits:
Object
  • Object
show all
Defined in:
lib/test_collection.rb

Constant Summary collapse

MultipleWorkingDirectoriesError =
Class.new(StandardError)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tests_data) ⇒ TestCollection

Returns a new instance of TestCollection.



18
19
20
21
22
# File 'lib/test_collection.rb', line 18

def initialize(tests_data)
  @tests = tests_data.map do |test_data|
    create_test_case(test_data)
  end.compact
end

Instance Attribute Details

#testsObject (readonly)

Returns the value of attribute tests.



16
17
18
# File 'lib/test_collection.rb', line 16

def tests
  @tests
end

Class Method Details

.from_file_path(file_path) ⇒ Object



12
13
14
# File 'lib/test_collection.rb', line 12

def self.from_file_path(file_path)
  new(file_path).from_file_path
end

.parse(grep_result) ⇒ Object



7
8
9
# File 'lib/test_collection.rb', line 7

def self.parse(grep_result)
  new(grep_result[:file], line: grep_result[:line]).parse
end

Instance Method Details

#[](*args) ⇒ Object



40
41
42
# File 'lib/test_collection.rb', line 40

def [](*args)
  tests[*args]
end

#empty?Boolean

Returns:



24
25
26
# File 'lib/test_collection.rb', line 24

def empty?
  tests.empty?
end

#firstObject



36
37
38
# File 'lib/test_collection.rb', line 36

def first
  tests.first
end

#full_pathsObject



52
53
54
# File 'lib/test_collection.rb', line 52

def full_paths
  @full_paths ||= tests.map {|t| t.full_path }.uniq
end

#in_one_engine?Boolean

Returns:



48
49
50
# File 'lib/test_collection.rb', line 48

def in_one_engine?
  working_dirs.size == 1
end

#in_one_file?Boolean

Returns:



44
45
46
# File 'lib/test_collection.rb', line 44

def in_one_file?
  full_paths.size == 1
end

#include_selenium?Boolean

Returns:



68
69
70
# File 'lib/test_collection.rb', line 68

def include_selenium?
  ! selenium_tests.empty?
end

#present?Boolean

Returns:



28
29
30
# File 'lib/test_collection.rb', line 28

def present?
  ! empty?
end

#relative_pathsObject



56
57
58
# File 'lib/test_collection.rb', line 56

def relative_paths
  @relative_paths ||= tests.map {|t| t.relative_path }.uniq
end

#relative_paths_in(working_directory) ⇒ Object



64
65
66
# File 'lib/test_collection.rb', line 64

def relative_paths_in(working_directory)
  tests.select {|t| t.working_dir == working_directory}.map {|t| t.relative_path }.uniq
end

#remove_selenium!Object



72
73
74
# File 'lib/test_collection.rb', line 72

def remove_selenium!
  @tests = tests - selenium_tests
end

#selenium_testsObject



76
77
78
# File 'lib/test_collection.rb', line 76

def selenium_tests
  tests.select {|t| t.full_path.match(/selenium/)}
end

#sizeObject



32
33
34
# File 'lib/test_collection.rb', line 32

def size
  tests.size
end

#working_dirObject

Raises:



80
81
82
83
84
# File 'lib/test_collection.rb', line 80

def working_dir
  raise MultipleWorkingDirectoriesError.new("Can't run tests for more than one engine") unless working_dirs.size == 1

  return working_dirs.first
end

#working_dirsObject



60
61
62
# File 'lib/test_collection.rb', line 60

def working_dirs
  @working_dirs ||= tests.map {|t| t.working_dir }.uniq
end