Class: FactoryBot::Sequence Private

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

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Sequences are defined using sequence within a FactoryBot.define block. Sequence values are generated using next.

API:

  • private

Defined Under Namespace

Classes: EnumeratorAdapter

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, *args, &proc) ⇒ Sequence

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Sequence.

API:

  • private



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/factory_bot/sequence.rb', line 8

def initialize(name, *args, &proc)
  @name = name
  @proc = proc

  options = args.extract_options!
  @value = args.first || 1
  @aliases = options.fetch(:aliases) { [] }

  unless @value.respond_to?(:peek)
    @value = EnumeratorAdapter.new(@value)
  end
end

Instance Attribute Details

#nameObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



6
7
8
# File 'lib/factory_bot/sequence.rb', line 6

def name
  @name
end

Instance Method Details

#namesObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



33
34
35
# File 'lib/factory_bot/sequence.rb', line 33

def names
  [@name] + @aliases
end

#next(scope = nil) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/factory_bot/sequence.rb', line 21

def next(scope = nil)
  if @proc && scope
    scope.instance_exec(value, &@proc)
  elsif @proc
    @proc.call(value)
  else
    value
  end
ensure
  increment_value
end

#rewindObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



37
38
39
# File 'lib/factory_bot/sequence.rb', line 37

def rewind
  @value.rewind
end