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.
-
#example_requests ⇒ Object
readonly
Returns the value of attribute example_requests.
-
#levels ⇒ Object
readonly
Returns the value of attribute levels.
-
#metadata ⇒ Object
readonly
Returns the value of attribute metadata.
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
Class Method Summary collapse
Instance Method Summary collapse
- #child(metadata) ⇒ Object
- #filename ⇒ Object
- #grouped_children ⇒ Object
- #increase_level(child) ⇒ Object
-
#initialize(metadata, parent: nil) ⇒ OrganizedRequest
constructor
A new instance of OrganizedRequest.
- #max_level ⇒ Object
- #ungrouped_children ⇒ Object
Constructor Details
#initialize(metadata, parent: nil) ⇒ OrganizedRequest
Returns a new instance of OrganizedRequest.
5 6 7 8 9 10 11 12 |
# File 'lib/rspec/document_requests/organized_request.rb', line 5 def initialize(, parent: nil) @metadata = @parent = parent @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 |
#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 |
#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 |
#metadata ⇒ Object (readonly)
Returns the value of attribute metadata.
4 5 6 |
# File 'lib/rspec/document_requests/organized_request.rb', line 4 def @metadata 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
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/rspec/document_requests/organized_request.rb', line 40 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() end organized_request.example_requests[request.example] << request end root end |
Instance Method Details
#child(metadata) ⇒ Object
18 19 20 |
# File 'lib/rspec/document_requests/organized_request.rb', line 18 def child() @children[DocumentRequests.configuration.filename_generator.call([:description])] ||= OrganizedRequest.new(, parent: self) end |
#filename ⇒ Object
14 15 16 |
# File 'lib/rspec/document_requests/organized_request.rb', line 14 def filename @filename ||= Pathname.new(DocumentRequests.configuration.filename_generator.call(@metadata[:description])) end |
#grouped_children ⇒ Object
32 33 34 |
# File 'lib/rspec/document_requests/organized_request.rb', line 32 def grouped_children @grouped_children ||= @children.values.select { |child| child.max_level < DocumentRequests.configuration.group_levels }.sort_by(&:filename) end |
#increase_level(child) ⇒ Object
22 23 24 25 26 |
# File 'lib/rspec/document_requests/organized_request.rb', line 22 def increase_level(child) @grouped_children = @ungrouped_children = nil @levels[child] += 1 @parent.increase_level(self) if @parent end |
#max_level ⇒ Object
28 29 30 |
# File 'lib/rspec/document_requests/organized_request.rb', line 28 def max_level @levels.values.max || 0 end |
#ungrouped_children ⇒ Object
36 37 38 |
# File 'lib/rspec/document_requests/organized_request.rb', line 36 def ungrouped_children @ungrouped_children ||= (@children.values - grouped_children).sort_by(&:filename) end |