diff --git a/ui/tests/unit/utils/message-from-adapter-error-test.js b/ui/tests/unit/utils/message-from-adapter-error-test.js new file mode 100644 index 000000000..7336ee943 --- /dev/null +++ b/ui/tests/unit/utils/message-from-adapter-error-test.js @@ -0,0 +1,44 @@ +import { module, test } from 'qunit'; +import { ServerError, ForbiddenError } from '@ember-data/adapter/error'; +import messageFromAdapterError from 'nomad-ui/utils/message-from-adapter-error'; + +const testCases = [ + { + name: 'Forbidden Error', + in: [new ForbiddenError([], "Can't do that"), 'run tests'], + out: 'Your ACL token does not grant permission to run tests.', + }, + { + name: 'Generic Error', + in: [new ServerError([{ detail: 'DB Max Connections' }], 'Server Error'), 'run tests'], + out: 'DB Max Connections', + }, + { + name: 'Multiple Errors', + in: [ + new ServerError( + [{ detail: 'DB Max Connections' }, { detail: 'Service timeout' }], + 'Server Error' + ), + 'run tests', + ], + out: 'DB Max Connections\n\nService timeout', + }, + { + name: 'Malformed Error (not from Ember Data which should always have an errors list)', + in: [new Error('Go boom'), 'handle custom error messages'], + out: 'Unknown Error', + }, +]; + +module('Unit | Util | messageFromAdapterError', function() { + testCases.forEach(testCase => { + test(testCase.name, function(assert) { + assert.equal( + messageFromAdapterError.apply(null, testCase.in), + testCase.out, + `[${testCase.in.join(', ')}] => ${testCase.out}` + ); + }); + }); +});