class RSpec::DocumentRequests::OrganizedRequest
Attributes
children[R]
example_requests[R]
levels[R]
metadata[R]
parent[R]
Public Class Methods
new(metadata, parent: nil)
click to toggle source
# File lib/rspec/document_requests/organized_request.rb, line 5 def initialize(metadata, parent: nil) @metadata = 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
organize()
click to toggle source
# 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.metadata metadata_tree = [current] metadata_tree.unshift(current) while current = current[:parent_example_group] organized_request = root metadata_tree.each do |metadata| organized_request = organized_request.child(metadata) end organized_request.example_requests[request.example] << request end root end
Public Instance Methods
child(metadata)
click to toggle source
# File lib/rspec/document_requests/organized_request.rb, line 18 def child(metadata) @children[DocumentRequests.configuration.filename_generator.call(metadata[:description])] ||= OrganizedRequest.new(metadata, parent: self) end
filename()
click to toggle source
# 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()
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
# File lib/rspec/document_requests/organized_request.rb, line 28 def max_level @levels.values.max || 0 end
ungrouped_children()
click to toggle source
# File lib/rspec/document_requests/organized_request.rb, line 36 def ungrouped_children @ungrouped_children ||= (@children.values - grouped_children).sort_by(&:filename) end