1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | var assert_1 = __importDefault(require("assert"));
|
7 | var ParameterTypeRegistry_1 = __importDefault(require("../src/ParameterTypeRegistry"));
|
8 | var ParameterType_1 = __importDefault(require("../src/ParameterType"));
|
9 | var Name = (function () {
|
10 | function Name(name) {
|
11 | this.name = name;
|
12 | }
|
13 | return Name;
|
14 | }());
|
15 | var Person = (function () {
|
16 | function Person(name) {
|
17 | this.name = name;
|
18 | }
|
19 | return Person;
|
20 | }());
|
21 | var Place = (function () {
|
22 | function Place(name) {
|
23 | this.name = name;
|
24 | }
|
25 | return Place;
|
26 | }());
|
27 | var CAPITALISED_WORD = /[A-Z]+\w+/;
|
28 | describe('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 |
|
\ | No newline at end of file |