add HTTP status enums, rework ErrorReponse proxy to use them
[squeep-api-dingus] / test / lib / enum.js
index bdd353f358ee1a7b8e9a9c1823f5e0f645a45948..6247ee358fa990714bf83bf7409e0f782941c2dd 100644 (file)
@@ -4,22 +4,41 @@
 
 const assert = require('assert');
 const Enum = require('../../lib/enum');
+const { mergeEnum } = require('../../lib/common');
 
-
-describe('enum', function () {
+describe('Enum', function () {
 
   describe('ErrorResponse', function () {
     it('covers broken', function () {
       const result = Enum.ErrorResponse.notPresent;
       const expected = {
-        errorMessage: 'undefined error response \'notPresent\'',
+        statusCode: 500,
+        errorMessage: 'Internal Server Error',
+        details: ['undefined error response \'notPresent\''],
       };
       assert.deepStrictEqual(result, expected);
     });
     it('covers success', function () {
-      const { statusCode } = Enum.ErrorResponse.ReallyForbidden;
-      const expected = 403;
-      assert.deepStrictEqual(statusCode, expected);
+      const result = Enum.ErrorResponse.Forbidden;
+      const expected = {
+        statusCode: 403,
+        errorMessage: 'Forbidden',
+      };
+      assert.deepStrictEqual(result, expected);
+    });
+    it('can be merged', function () {
+      const NewResponse = { statusCode: 444, errorMessage: 'stuff' };
+      const localErr = mergeEnum(Enum.ErrorResponse, { NewResponse });
+      const newResult = localErr.NewResponse;
+      assert.deepStrictEqual(newResult, NewResponse);
+      const oldResult = localErr.NotFound;
+      assert.deepStrictEqual(oldResult, { statusCode: 404, errorMessage: 'Not Found' });
+      const missingResult = localErr.Wrong;
+      assert.deepStrictEqual(missingResult, {
+        statusCode: 500,
+        errorMessage: 'Internal Server Error',
+        details: ['undefined error response \'Wrong\''],
+      });
     });
   }); // ErrorResponse