open-consul/ui/packages/consul-ui/tests/unit/utils/create-fingerprinter-test.js
John Cowen c98130cc08
ui: Move to Workspaced Structure (#8994)
* ui: Add the most basic workspace root in /ui

* We already have a LICENSE file in the repository root

* Change directory path in build scripts ui-v2 -> ui

* Make yarn install flags configurable from elsewhere

* Minimal workspace root makefile

* Call the new docker specific target

* Update yarn in the docker build image

* Reconfigure the netlify target and move to the higher makefile

* Move ui-v2 -> ui/packages/consul-ui

* Change repo root to refleect new folder structure

* Temporarily don't hoist consul-api-double

* Fixup CI configuration

* Fixup lint errors

* Fixup Netlify target
2020-10-21 15:23:16 +01:00

56 lines
1.8 KiB
JavaScript

import createFingerprinter from 'consul-ui/utils/create-fingerprinter';
import { module, test } from 'qunit';
module('Unit | Utility | create fingerprinter', function() {
test("fingerprint returns a 'unique' fingerprinted object based on primary, slug and foreign keys", function(assert) {
const obj = {
ID: 'slug',
Namespace: 'namespace',
};
const expected = {
Datacenter: 'dc',
Namespace: 'namespace',
ID: 'slug',
uid: '["namespace","dc","slug"]',
};
const fingerprint = createFingerprinter('Datacenter', 'Namespace');
const actual = fingerprint('uid', 'ID', 'dc')(obj);
assert.deepEqual(actual, expected);
});
test("fingerprint returns a 'unique' fingerprinted object based on primary, slug and foreign keys, and uses default namespace if none set", function(assert) {
const obj = {
ID: 'slug',
};
const expected = {
Datacenter: 'dc',
Namespace: 'default',
ID: 'slug',
uid: '["default","dc","slug"]',
};
const fingerprint = createFingerprinter('Datacenter', 'Namespace');
const actual = fingerprint('uid', 'ID', 'dc')(obj);
assert.deepEqual(actual, expected);
});
test("fingerprint throws an error if it can't find a foreignKey", function(assert) {
const fingerprint = createFingerprinter('Datacenter', 'Namespace');
[undefined, null].forEach(function(item) {
assert.throws(function() {
fingerprint('uid', 'ID', item);
}, /missing foreignKey/);
});
});
test("fingerprint throws an error if it can't find a slug", function(assert) {
const fingerprint = createFingerprinter('Datacenter', 'Namespace');
[
{},
{
ID: null,
},
].forEach(function(item) {
assert.throws(function() {
fingerprint('uid', 'ID', 'dc')(item);
}, /missing slug/);
});
});
});