DefinitelyTyped/types/knockout.mapping/knockout.mapping-tests.ts
2017-03-24 14:27:52 -07:00

77 lines
2.4 KiB
TypeScript

var inputJSON = '{ name: "foo" }';
var inputData = { name: 'foo' };
var inputModel = { name: 'bar' };
var inputParent = { name: 'parent' };
var options = {};
var createOptions = {
data: inputData,
parent: parent
}
var updateOptions = {
data: inputData,
parent: parent,
target: inputModel,
observable: ko.observable(7)
}
var targetOptions = {};
var inputOptions = {};
var mappingOptions = {
ignore: ['age'],
include: ['name'],
copy: ['height'],
mappedProperties: ['age', 'name'],
deferEvaluation: false,
create: function (options: KnockoutMappingCreateOptions) { },
update: function (options: KnockoutMappingUpdateOptions) { },
key: function (data: any) { return data; }
}
// Utility functions
mapping.isMapped(inputModel);
mapping.defaultOptions();
mapping.resetDefaultOptions();
mapping.getType(inputModel);
// fromJS function
mapping.fromJS(inputData);
mapping.fromJS(inputData, targetOptions);
mapping.fromJS(inputData, inputOptions, inputModel);
// fromJSON function
mapping.fromJSON(inputJSON);
mapping.fromJSON(inputJSON, targetOptions);
mapping.fromJSON(inputJSON, inputOptions, inputModel);
mapping.fromJS(inputJSON, {
fieldNeedingCustomOptions: {
key: (data: any) => data.id,
create: (options: KnockoutMappingCreateOptions) => {
return mapping.fromJS(options.data);
},
update: (options: KnockoutMappingUpdateOptions) => {
return mapping.fromJS(options.data, options.target);
}
}
});
// toJS function
mapping.toJS(inputModel);
mapping.toJS(inputModel, mappingOptions);
// toJSON function
mapping.toJSON(inputModel);
mapping.toJSON(inputModel, mappingOptions);
// visitModel function
mapping.visitModel(inputModel, function (x: any) { return x; }, {});
mapping.visitModel(inputModel, function (x: any) { return x; }, { visitedObjects: null });
mapping.visitModel(inputModel, function (x: any) { return x; }, { parentName: 'parent' });
mapping.visitModel(inputModel, function (x: any) { return x; }, { ignore: ['age'] });
mapping.visitModel(inputModel, function (x: any) { return x; }, { copy: ['height'] });
mapping.visitModel(inputModel, function (x: any) { return x; }, { include: ['name'] });
mapping.visitModel(inputModel, function (x: any) { return x; }, { visitedObjects: null, parentName: 'parent', ignore: ['age'], copy: ['height'], include: ['name'] });