22 lines
		
	
	
		
			719 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			719 B
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| RSpec.shared_examples 'hierarchy with traversal_ids' do
 | |
|   # A convenient null node to represent the parent of root.
 | |
|   let(:null_node) { double(traversal_ids: []) }
 | |
| 
 | |
|   # Walk the tree to assert that the current_node's traversal_id is always
 | |
|   # present and equal to it's parent's traversal_ids plus it's own ID.
 | |
|   def validate_traversal_ids(current_node, parent = null_node)
 | |
|     expect(current_node.traversal_ids).to be_present
 | |
|     expect(current_node.traversal_ids).to eq parent.traversal_ids + [current_node.id]
 | |
| 
 | |
|     current_node.children.each do |child|
 | |
|       validate_traversal_ids(child, current_node)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   it 'will be valid' do
 | |
|     validate_traversal_ids(root)
 | |
|   end
 | |
| end
 |