Class: Neospec::Spec

Inherits:
Object
  • Object
show all
Defined in:
lib/neospec/spec.rb,
lib/neospec/spec/result.rb,
lib/neospec/spec/result/failure.rb

Defined Under Namespace

Classes: Result

Constant Summary collapse

COMMANDS =
%w[Given And But When Then]

Instance Method Summary collapse

Constructor Details

#initialize(description:, block:) ⇒ Spec

Returns a new instance of Spec.



5
6
7
8
9
10
11
12
# File 'lib/neospec/spec.rb', line 5

def initialize(description:, block:)
  # Everything here is prefixed to prevent people's specs overriding it,
  # this came to be because I've already accidentally done this a few
  # times.
  @__result = Neospec::Spec::Result.new
  @__description = description
  @__block = block
end

Instance Method Details

#descriptionObject



14
15
16
# File 'lib/neospec/spec.rb', line 14

def description
  @__description
end

#durationObject



22
23
24
# File 'lib/neospec/spec.rb', line 22

def duration
  @__result.duration
end

#expect(value) ⇒ Object



57
58
59
60
61
62
63
64
# File 'lib/neospec/spec.rb', line 57

def expect(value)
  Neospec::Expector.new(
    result: @__result,
    actual: value,
    stack: caller,
    logger: @__logger
  )
end

#expectationsObject



30
31
32
# File 'lib/neospec/spec.rb', line 30

def expectations
  @__result.expectations
end

#failuresObject



34
35
36
# File 'lib/neospec/spec.rb', line 34

def failures
  @__result.failures
end

#log(message, context: nil, result: nil) ⇒ Object



38
39
40
# File 'lib/neospec/spec.rb', line 38

def log(message, context: nil, result: nil)
  @__logger.log(message, context: context, result: result)
end

#resultObject



18
19
20
# File 'lib/neospec/spec.rb', line 18

def result
  @__result
end

#run(logger:) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/neospec/spec.rb', line 42

def run(logger:)
  @__logger = logger
  instance_exec { log(@__description, context: :describe) }
  result.start!
  instance_exec(&@__block)
  result.finish!
end

#successful?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/neospec/spec.rb', line 26

def successful?
  @__result.successful?
end