minor cleanup of router parameter class
[squeep-api-dingus] / test / lib / router / path-parameter.js
index 9b2fb1ed828f68f26ac9462f06f826a10d243f00..d4c1c8447f4592e93994a9afac6aacba999fe4ce 100644 (file)
@@ -4,48 +4,46 @@
 const assert = require('assert');
 const PathParameter = require('../../../lib/router/path-parameter');
 
-const noExpectedException = 'did not receive expected exception';
 describe('PathParameter', function () {
   beforeEach(function () {
     PathParameter._flush();
   });
+
   it('requires a parameter', function () {
-    try {
-      new PathParameter();
-      assert.fail(noExpectedException);
-    } catch (e) {
-      assert(e instanceof RangeError, noExpectedException);
-    }
+    assert.throws(() => new PathParameter(), RangeError);
   });
+
   it('requires parameter be a string', function () {
-    try {
-      new PathParameter({});
-      assert.fail(noExpectedException);
-    } catch (e) {
-      assert(e instanceof RangeError, noExpectedException);
-    }
+    assert.throws(() => new PathParameter({}), RangeError);
   });
+
   it('creates a parameter object', function () {
     const p = new PathParameter('foo');
     assert(p instanceof PathParameter);
     assert.strictEqual(p.parameter, 'foo');
   });
+
   it('duplicate parameters are the same object', function () {
     const p1 = new PathParameter('foo');
     const p2 = new PathParameter('foo');
     assert.strictEqual(p1, p2);
+    assert(Object.is(p1, p2));
   });
+
   it('shows itself', function () {
     const p = new PathParameter('foo');
-    assert(p.toString().includes('foo'));
+    assert.strictEqual(`${p}`, 'foo');
   });
+
+  it('serializes', function () {
+    const p = new PathParameter(':foo');
+    const result = JSON.stringify(p);
+    assert.strictEqual(result, '":foo"');
+  });
+
   it('parameters are immutable', function () {
     const p = new PathParameter('foo');
-    try {
-      p[PathParameter.kPathParameter] = 'bar';
-      assert.fail(noExpectedException);
-    } catch (e) {
-      assert(e instanceof TypeError, noExpectedException);
-    }
-  });
-}); // PathParameter
\ No newline at end of file
+    assert.throws(() => p.parameter = 'bar', TypeError);
+  });
+
+}); // PathParameter