consul/ui/packages/consul-ui/tests/unit/utils/routing/transitionable-test.js
John Cowen 2e4c9f5330
ui: Support Route optional parameters/segments (#10212)
Moves our URLs with 'optional namespace segment' into a separately abstracted 'optional URL segment' feature
2021-05-26 17:43:46 +01:00

44 lines
1.5 KiB
JavaScript

import transitionable from 'consul-ui/utils/routing/transitionable';
import { module, test } from 'qunit';
const makeRoute = function(name, params = {}, parent) {
return {
name: name,
paramNames: Object.keys(params),
params: params,
parent: parent,
};
};
module('Unit | Utility | routing/transitionable', function() {
test('it walks up the route tree to resolve all the required parameters', function(assert) {
const expected = ['dc.service.instance', 'dc-1', 'service-0', 'node-0', 'service-instance-0'];
const dc = makeRoute('dc', { dc: 'dc-1' });
const service = makeRoute('dc.service', { service: 'service-0' }, dc);
const instance = makeRoute(
'dc.service.instance',
{ node: 'node-0', id: 'service-instance-0' },
service
);
const actual = transitionable(instance, {});
assert.deepEqual(actual, expected);
});
test('it walks up the route tree to resolve all the required parameters whilst replacing specified params', function(assert) {
const expected = [
'dc.service.instance',
'dc-1',
'service-0',
'different-node',
'service-instance-0',
];
const dc = makeRoute('dc', { dc: 'dc-1' });
const service = makeRoute('dc.service', { service: 'service-0' }, dc);
const instance = makeRoute(
'dc.service.instance',
{ node: 'node-0', id: 'service-instance-0' },
service
);
const actual = transitionable(instance, { node: 'different-node' });
assert.deepEqual(actual, expected);
});
});