Class: Scope::Context

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

Overview

A context keeps track of the tests defined inside of it as well as its setup and teardown blocks.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, parent_context = nil) ⇒ Context

Returns a new instance of Context.



121
122
123
124
125
# File 'lib/scope.rb', line 121

def initialize(name, parent_context = nil)
  @name = name
  @parent_context = parent_context
  self.tests_and_subcontexts = []
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



115
116
117
# File 'lib/scope.rb', line 115

def name
  @name
end

#parent_contextObject (readonly)

Returns the value of attribute parent_context.



115
116
117
# File 'lib/scope.rb', line 115

def parent_context
  @parent_context
end

#setupObject

Returns the value of attribute setup.



119
120
121
# File 'lib/scope.rb', line 119

def setup
  @setup
end

#setup_onceObject

Returns the value of attribute setup_once.



119
120
121
# File 'lib/scope.rb', line 119

def setup_once
  @setup_once
end

#teardownObject

Returns the value of attribute teardown.



119
120
121
# File 'lib/scope.rb', line 119

def teardown
  @teardown
end

#teardown_onceObject

Returns the value of attribute teardown_once.



119
120
121
# File 'lib/scope.rb', line 119

def teardown_once
  @teardown_once
end

#tests_and_subcontextsObject

We keep both tests and subcontexts in the same array because we need to know what the very last thing to execute inside of this context is, for the purpose of calling teardown_once at the correct time.



118
119
120
# File 'lib/scope.rb', line 118

def tests_and_subcontexts
  @tests_and_subcontexts
end

Instance Method Details

#run_setup_and_teardown(test_case_instance, test_name, &runner_proc) ⇒ Object

Runs the setup work for this context and any parent contexts, yields to the block (which should invoke the actual test method), and then completes the teardown work.



129
130
131
132
# File 'lib/scope.rb', line 129

def run_setup_and_teardown(test_case_instance, test_name, &runner_proc)
  contexts = ([self] + ancestor_contexts).reverse
  recursively_run_setup_and_teardown(test_case_instance, test_name, contexts, runner_proc)
end