| /** |
| * Copyright (c) HashiCorp, Inc. |
| * SPDX-License-Identifier: MPL-2.0 |
| */ |
| |
| import { module, test } from 'qunit'; |
| import pathToTree from 'vault/lib/path-to-tree'; |
| |
| module('Unit | Lib | path to tree', function () { |
| const tests = [ |
| [ |
| 'basic', |
| ['one', 'one/two', 'one/two/three/four/five'], |
| { |
| one: { |
| two: { |
| three: { |
| four: { |
| five: null, |
| }, |
| }, |
| }, |
| }, |
| }, |
| ], |
| [ |
| 'multiple leaves on a level', |
| ['one', 'two', 'three/four/five', 'three/four/six', 'three/four/six/one'], |
| { |
| one: null, |
| three: { |
| four: { |
| five: null, |
| six: { |
| one: null, |
| }, |
| }, |
| }, |
| two: null, |
| }, |
| ], |
| [ |
| 'leaves with shared prefix', |
| ['ns1', 'ns1a', 'ns1a/ns2/ns3', 'ns1a/ns2a/ns3'], |
| { |
| ns1: null, |
| ns1a: { |
| ns2: { |
| ns3: null, |
| }, |
| ns2a: { |
| ns3: null, |
| }, |
| }, |
| }, |
| ], |
| [ |
| 'leaves with nested number and shared prefix', |
| ['ns1', 'ns1a', 'ns1a/99999/five9s', 'ns1a/999/ns3', 'ns1a/9999/ns3'], |
| { |
| ns1: null, |
| ns1a: { |
| 999: { |
| ns3: null, |
| }, |
| 9999: { |
| ns3: null, |
| }, |
| 99999: { |
| five9s: null, |
| }, |
| }, |
| }, |
| ], |
| [ |
| 'sorting lexicographically', |
| [ |
| '99', |
| 'bat', |
| 'bat/bird', |
| 'animal/flying/birds', |
| 'animal/walking/dogs', |
| 'animal/walking/cats', |
| '1/thing', |
| ], |
| { |
| 1: { |
| thing: null, |
| }, |
| 99: null, |
| animal: { |
| flying: { |
| birds: null, |
| }, |
| walking: { |
| cats: null, |
| dogs: null, |
| }, |
| }, |
| bat: { |
| bird: null, |
| }, |
| }, |
| ], |
| ]; |
| |
| tests.forEach(function ([name, input, expected]) { |
| test(`pathToTree: ${name}`, function (assert) { |
| const output = pathToTree(input); |
| assert.deepEqual(output, expected, 'has expected data'); |
| }); |
| }); |
| }); |