Class: RSpec::DocumentRequests::OrganizedRequest
- Inherits:
-
Object
- Object
- RSpec::DocumentRequests::OrganizedRequest
- Defined in:
- lib/rspec/document_requests/organized_request.rb
Instance Attribute Summary collapse
-
#children ⇒ Object
readonly
Returns the value of attribute children.
-
#description ⇒ Object
readonly
Returns the value of attribute description.
-
#example_requests ⇒ Object
readonly
Returns the value of attribute example_requests.
-
#filename ⇒ Object
readonly
Returns the value of attribute filename.
-
#levels ⇒ Object
readonly
Returns the value of attribute levels.
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
Class Method Summary collapse
Instance Method Summary collapse
- #child(description) ⇒ Object
- #grouped_children ⇒ Object
- #increase_level(child) ⇒ Object
-
#initialize(description:, parent: nil) ⇒ OrganizedRequest
constructor
A new instance of OrganizedRequest.
- #max_level ⇒ Object
- #ungrouped_children ⇒ Object
Constructor Details
#initialize(description:, parent: nil) ⇒ OrganizedRequest
Returns a new instance of OrganizedRequest.
5 6 7 8 9 10 11 12 13 |
# File 'lib/rspec/document_requests/organized_request.rb', line 5 def initialize(description:, parent: nil) @description = description @parent = parent @filename = Pathname.new(DocumentRequests.configuration.filename_generator.call(description)) @example_requests = Hash.new { |h, k| h[k] = [] } @children = {} @levels = Hash.new { |h, k| h[k] = 0 } @parent.increase_level(self) if @parent end |
Instance Attribute Details
#children ⇒ Object (readonly)
Returns the value of attribute children.
4 5 6 |
# File 'lib/rspec/document_requests/organized_request.rb', line 4 def children @children end |
#description ⇒ Object (readonly)
Returns the value of attribute description.
4 5 6 |
# File 'lib/rspec/document_requests/organized_request.rb', line 4 def description @description end |
#example_requests ⇒ Object (readonly)
Returns the value of attribute example_requests.
4 5 6 |
# File 'lib/rspec/document_requests/organized_request.rb', line 4 def example_requests @example_requests end |
#filename ⇒ Object (readonly)
Returns the value of attribute filename.
4 5 6 |
# File 'lib/rspec/document_requests/organized_request.rb', line 4 def filename @filename end |
#levels ⇒ Object (readonly)
Returns the value of attribute levels.
4 5 6 |
# File 'lib/rspec/document_requests/organized_request.rb', line 4 def levels @levels end |
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
4 5 6 |
# File 'lib/rspec/document_requests/organized_request.rb', line 4 def parent @parent end |
Class Method Details
.organize ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/rspec/document_requests/organized_request.rb', line 37 def self.organize root = OrganizedRequest.new(description: DocumentRequests.configuration.root) DSL.documented_requests.each do |request| current = request.example.example_group. = [current] .unshift(current) while current = current[:parent_example_group] organized_request = root .each do || organized_request = organized_request.child([:description]) end organized_request.example_requests[request.example] << request end root end |
Instance Method Details
#child(description) ⇒ Object
15 16 17 |
# File 'lib/rspec/document_requests/organized_request.rb', line 15 def child(description) @children[DocumentRequests.configuration.filename_generator.call(description)] ||= OrganizedRequest.new(description: description, parent: self) end |
#grouped_children ⇒ Object
29 30 31 |
# File 'lib/rspec/document_requests/organized_request.rb', line 29 def grouped_children @grouped_children ||= @children.values.select { |child| child.max_level < DocumentRequests.configuration.group_levels }.sort_by(&:filename) end |
#increase_level(child) ⇒ Object
19 20 21 22 23 |
# File 'lib/rspec/document_requests/organized_request.rb', line 19 def increase_level(child) @grouped_children = @ungrouped_children = nil @levels[child] += 1 @parent.increase_level(self) if @parent end |
#max_level ⇒ Object
25 26 27 |
# File 'lib/rspec/document_requests/organized_request.rb', line 25 def max_level @levels.values.max || 0 end |
#ungrouped_children ⇒ Object
33 34 35 |
# File 'lib/rspec/document_requests/organized_request.rb', line 33 def ungrouped_children @ungrouped_children ||= (@children.values - grouped_children).sort_by(&:filename) end |