clwoz-models
Version:
Models for ConversationLearner
196 lines • 8.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
var _1 = require("./");
var createFilledEntity = function (values) {
return {
entityId: '',
values: values.map(function (v) { return ({
builtinType: '',
resolution: {},
displayText: v,
userText: v
}); })
};
};
describe('filledEntity', function () {
describe('FilledEntity', function () {
describe('filledEntityValueAsString', function () {
test('given filled entity with single value return single value', function () {
// Arrange
var filledEntity = createFilledEntity(['d1']);
var expected = 'd1';
// Assert
expect(_1.filledEntityValueAsString(filledEntity)).toEqual(expected);
});
test('given filled entity with two values return two values separated by "and"', function () {
// Arrange
var filledEntity = createFilledEntity(['d1', 'd2']);
var expected = 'd1 and d2';
// Assert
expect(_1.filledEntityValueAsString(filledEntity)).toEqual(expected);
});
test('given filled entity with three values return values separated by commas and "and"', function () {
// Arrange
var filledEntity = createFilledEntity(['d1', 'd2', 'd3']);
var expected = 'd1, d2 and d3';
// Assert
expect(_1.filledEntityValueAsString(filledEntity)).toEqual(expected);
});
});
});
describe('FilledEntityMap', function () {
var memoryValues = [
{
userText: 'e1u1',
displayText: 'e1d1',
builtinType: 'none',
resolution: {}
},
{
userText: 'e1u2',
displayText: 'e1d2',
builtinType: 'none',
resolution: {}
},
{
userText: 'e1u3',
displayText: 'e1d3',
builtinType: 'none',
resolution: {}
}
];
var filledEntityMap = new _1.FilledEntityMap({
map: {
entityName1: {
entityId: 'entityId1',
values: memoryValues
}
}
});
var entity1 = {
entityId: 'entityId1',
values: [
{
userText: '3',
displayText: '3',
builtinType: 'none',
resolution: {}
}
]
};
var entity2 = {
entityId: 'entityId2',
values: [
{
userText: '3',
displayText: '3',
builtinType: 'none',
resolution: {}
}
]
};
var newEntityMap = function () {
return new _1.FilledEntityMap({
map: {
entityName1: entity1,
entityName2: entity2
}
});
};
describe('getEntityDisplayValueMap', function () {
test('given filledEntityMap should return Map which has entity id to entity display value', function () {
var displayFilledEntityName = _1.getEntityDisplayValueMap(filledEntityMap);
var entityName = 'entityName1';
expect(displayFilledEntityName.get(entityName)).toEqual(filledEntityMap.ValueAsString(entityName));
});
});
describe('ValueAsList', function () {
test('given filled entity with no matching entity name return empty array', function () {
expect(filledEntityMap.ValueAsList('entityName2')).toEqual([]);
});
test('given filled entity with multiple values return userText values', function () {
expect(filledEntityMap.ValueAsList('entityName1')).toEqual(memoryValues.map(function (v) { return v.userText; }));
});
});
describe('ValueAsString', function () {
test('given filled entity with no matching entity name return null', function () {
expect(filledEntityMap.ValueAsString('entityName2')).toEqual(null);
});
test('given filled entity with multiple values return displayText/userText values formatted as string', function () {
expect(filledEntityMap.ValueAsString('entityName1')).toEqual('e1d1, e1d2 and e1d3');
});
});
describe('ValueAsNumber', function () {
test('given filled entity with no matching entity name return null', function () {
expect(filledEntityMap.ValueAsNumber('entityName1')).toEqual(null);
});
test('given filled entity with non-number value name return null', function () {
expect(filledEntityMap.ValueAsNumber('entityName1')).toEqual(null);
});
test('given filled entity number value return number', function () {
var filledEntityMapWithNumber = new _1.FilledEntityMap({
map: {
entityName1: {
entityId: 'entityId1',
values: [
{
userText: '3',
displayText: '3',
builtinType: 'none',
resolution: {}
}
]
}
}
});
expect(filledEntityMapWithNumber.ValueAsNumber('entityName1')).toEqual(3);
});
});
describe('EntityMapToIdMap', function () {
var entityMap = newEntityMap();
var idMap = entityMap.EntityMapToIdMap();
expect(idMap.map[entity1.entityId]).toEqual(entity1);
expect(idMap.map[entity2.entityId]).toEqual(entity2);
});
describe('FilledEntities', function () {
test('given filledEntityMap return values in array', function () {
expect(filledEntityMap.FilledEntities()).toEqual([
{
entityId: 'entityId1',
values: memoryValues
}
]);
});
});
describe('DeleteWithEmptyString', function () {
test('DeleteNonMultiWithEmptyString', function () {
var entityMap = newEntityMap();
expect(Object.keys(entityMap.map).length).toEqual(2);
entityMap.Remember("entityName1", entity1.entityId, "");
expect(Object.keys(entityMap.map).length).toEqual(1);
});
test('DeleteMultiWithEmptyString', function () {
var entityMap = newEntityMap();
expect(Object.keys(entityMap.map).length).toEqual(2);
entityMap.RememberMany("entityName1", entity1.entityId, ["", ""]);
expect(Object.keys(entityMap.map).length).toEqual(1);
});
test('DeleteMultiWithEmptyString', function () {
var entityMap = newEntityMap();
expect(Object.keys(entityMap.map).length).toEqual(2);
entityMap.RememberMany("entityName1", entity1.entityId, []);
expect(Object.keys(entityMap.map).length).toEqual(1);
});
});
describe('Split', function () {
test('given action name split it', function () {
expect(_1.FilledEntityMap.Split('test1 test2.test3?test4')).toEqual(['test1', 'test2', 'test3', 'test4']);
});
});
});
});
//# sourceMappingURL=filledEntity.test.js.map