open-consul/ui-v2/tests/unit/utils/create-fingerprinter-test.js

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/);
});
});
});