UNPKG

2.68 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6var assert_1 = __importDefault(require("assert"));
7var ParameterTypeRegistry_1 = __importDefault(require("../src/ParameterTypeRegistry"));
8var ParameterType_1 = __importDefault(require("../src/ParameterType"));
9var Name = /** @class */ (function () {
10 function Name(name) {
11 this.name = name;
12 }
13 return Name;
14}());
15var Person = /** @class */ (function () {
16 function Person(name) {
17 this.name = name;
18 }
19 return Person;
20}());
21var Place = /** @class */ (function () {
22 function Place(name) {
23 this.name = name;
24 }
25 return Place;
26}());
27var CAPITALISED_WORD = /[A-Z]+\w+/;
28describe('ParameterTypeRegistry', function () {
29 var registry;
30 beforeEach(function () {
31 registry = new ParameterTypeRegistry_1.default();
32 });
33 it('does not allow more than one preferential parameter type for each regexp', function () {
34 registry.defineParameterType(new ParameterType_1.default('name', CAPITALISED_WORD, Name, function (s) { return new Name(s); }, true, true));
35 registry.defineParameterType(new ParameterType_1.default('person', CAPITALISED_WORD, Person, function (s) { return new Person(s); }, true, false));
36 try {
37 registry.defineParameterType(new ParameterType_1.default('place', CAPITALISED_WORD, Place, function (s) { return new Place(s); }, true, true));
38 throw new Error('Should have failed');
39 }
40 catch (err) {
41 assert_1.default.strictEqual(err.message, "There can only be one preferential parameter type per regexp. The regexp " + CAPITALISED_WORD + " is used for two preferential parameter types, {name} and {place}");
42 }
43 });
44 it('looks up preferential parameter type by regexp', function () {
45 var name = new ParameterType_1.default('name', /[A-Z]+\w+/, null, function (s) { return new Name(s); }, true, false);
46 var person = new ParameterType_1.default('person', /[A-Z]+\w+/, null, function (s) { return new Person(s); }, true, true);
47 var place = new ParameterType_1.default('place', /[A-Z]+\w+/, null, function (s) { return new Place(s); }, true, false);
48 registry.defineParameterType(name);
49 registry.defineParameterType(person);
50 registry.defineParameterType(place);
51 assert_1.default.strictEqual(registry.lookupByRegexp('[A-Z]+\\w+', /([A-Z]+\w+) and ([A-Z]+\w+)/, 'Lisa and Bob'), person);
52 });
53});
54//# sourceMappingURL=ParameterTypeRegistryTest.js.map
\No newline at end of file