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
|