mirror of
https://github.com/nasa/openmct.git
synced 2025-06-06 01:11:41 +00:00
Merge remote-tracking branch 'origin/open931' into open-master
This commit is contained in:
commit
828f82a3e7
@ -157,8 +157,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "mutation",
|
"key": "mutation",
|
||||||
"implementation": "capabilities/MutationCapability.js",
|
"implementation": "capabilities/MutationCapability.js"
|
||||||
"depends": [ "$q" ]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "delegation",
|
"key": "delegation",
|
||||||
|
@ -21,6 +21,16 @@ define(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Utility function to cast to a promise, without waiting
|
||||||
|
// for nextTick if a value is non-promise-like.
|
||||||
|
function fastPromise(value) {
|
||||||
|
return (value || {}).then ? value : {
|
||||||
|
then: function (callback) {
|
||||||
|
return fastPromise(callback(value));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The `mutation` capability allows a domain object's model to be
|
* The `mutation` capability allows a domain object's model to be
|
||||||
* modified. Wrapping such modifications in calls made through
|
* modified. Wrapping such modifications in calls made through
|
||||||
@ -36,12 +46,11 @@ define(
|
|||||||
* });
|
* });
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* @param $q Angular's $q service, for promises
|
|
||||||
* @param {DomainObject} domainObject the domain object
|
* @param {DomainObject} domainObject the domain object
|
||||||
* which will expose this capability
|
* which will expose this capability
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
function MutationCapability($q, domainObject) {
|
function MutationCapability(domainObject) {
|
||||||
|
|
||||||
function mutate(mutator) {
|
function mutate(mutator) {
|
||||||
// Get the object's model and clone it, so the
|
// Get the object's model and clone it, so the
|
||||||
@ -73,8 +82,7 @@ define(
|
|||||||
|
|
||||||
// Invoke the provided mutator, then make changes to
|
// Invoke the provided mutator, then make changes to
|
||||||
// the underlying model (if applicable.)
|
// the underlying model (if applicable.)
|
||||||
return $q.when(mutator(clone))
|
return fastPromise(mutator(clone)).then(handleMutation);
|
||||||
.then(handleMutation);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -13,21 +13,9 @@ define(
|
|||||||
domainObject = { getModel: function () { return testModel; } },
|
domainObject = { getModel: function () { return testModel; } },
|
||||||
mutation;
|
mutation;
|
||||||
|
|
||||||
function mockPromise(value) {
|
|
||||||
return {
|
|
||||||
then: function (callback) {
|
|
||||||
return (value && value.then) ?
|
|
||||||
value : mockPromise(callback(value));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
testModel = { number: 6 };
|
testModel = { number: 6 };
|
||||||
mutation = new MutationCapability(
|
mutation = new MutationCapability(domainObject);
|
||||||
{ when: mockPromise }, // $q
|
|
||||||
domainObject
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("allows mutation of a model", function () {
|
it("allows mutation of a model", function () {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user