Module: TestProf::LetItBe::Freezer::Stoplist

Defined in:
lib/test_prof/recipes/rspec/let_it_be.rb

Overview

Stoplist to prevent freezing objects and theirs associations that are defined with ‘let_it_be`’s ‘freeze: false` options during deep freezing.

To only keep track of objects that are available in current example group, ‘begin` adds a new layer, and `rollback` removes a layer of unrelated objects along with rolling back the transaction where they were created.

Stoplist holds records declared with ‘freeze: false` (so we do not freeze them even if they’re used as associated records for frozen objects)

Class Method Summary collapse

Class Method Details

.beginObject



177
178
179
# File 'lib/test_prof/recipes/rspec/let_it_be.rb', line 177

def begin
  @stoplist.push([])
end

.rollbackObject



181
182
183
# File 'lib/test_prof/recipes/rspec/let_it_be.rb', line 181

def rollback
  @stoplist.pop
end

.stop!(record) ⇒ Object



173
174
175
# File 'lib/test_prof/recipes/rspec/let_it_be.rb', line 173

def stop!(record)
  @stoplist.last.push(record)
end

.stop?(record) ⇒ Boolean

Returns:

  • (Boolean)


169
170
171
# File 'lib/test_prof/recipes/rspec/let_it_be.rb', line 169

def stop?(record)
  @stoplist.any? { |layer| layer.include?(record) }
end