Class: ROM::Lint::EnumerableDataset

Inherits:
Linter
  • Object
show all
Defined in:
lib/rom/lint/enumerable_dataset.rb

Overview

Ensures that a [ROM::EnumerableDataset] extension correctly yields arrays and tuples

Constant Summary

Constants inherited from Linter

Linter::Failure

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Linter

each_lint, #lint

Constructor Details

#initialize(dataset, data) ⇒ EnumerableDataset

Create a linter for EnumerableDataset

Parameters:

  • dataset (EnumerableDataset)

    the linted subject

  • data (Object)

    the expected data



26
27
28
29
# File 'lib/rom/lint/enumerable_dataset.rb', line 26

def initialize(dataset, data)
  @dataset = dataset
  @data = data
end

Instance Attribute Details

#dataObject (readonly)

The expected data



18
19
20
# File 'lib/rom/lint/enumerable_dataset.rb', line 18

def data
  @data
end

#datasetObject (readonly)

The linted subject



13
14
15
# File 'lib/rom/lint/enumerable_dataset.rb', line 13

def dataset
  @dataset
end

Instance Method Details

#lint_eachObject

Lint: Ensure that dataset yield tuples via each



34
35
36
37
38
39
40
41
42
# File 'lib/rom/lint/enumerable_dataset.rb', line 34

def lint_each
  result = []
  dataset.each do |tuple|
    result << tuple
  end
  return if result == data

  complain "#{dataset.class}#each must yield tuples"
end

#lint_to_aObject

Lint: Ensure that dataset‘s array equals to expected data



47
48
49
50
51
# File 'lib/rom/lint/enumerable_dataset.rb', line 47

def lint_to_a
  return if dataset.to_a == data

  complain "#{dataset.class}#to_a must cast dataset to an array"
end