Reverting when cancelling out of edits works for both legacy and new object providers (#3435)

* Update persistence capability to use object api get
* Getting objects using the legacy object service provider will use the defaultSpace if necessary
This commit is contained in:
Shefali Joshi 2020-10-08 16:48:26 -07:00 committed by GitHub
parent 631876cab3
commit b6e0208e71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 31 additions and 13 deletions

View File

@ -153,10 +153,11 @@ define(["objectUtils"],
return this.$q.when(true); return this.$q.when(true);
} }
return this.persistenceService.readObject( return this.openmct.objects.get(domainObject.getId()).then((newStyleObject) => {
this.getSpace(), let oldStyleObject = this.openmct.legacyObject(newStyleObject);
this.getKey()
).then(updateModel); return updateModel(oldStyleObject.getModel());
});
}; };
/** /**

View File

@ -37,6 +37,7 @@ define(
key = "persistence key", key = "persistence key",
id = "object identifier", id = "object identifier",
model, model,
refreshModel,
SPACE = "some space", SPACE = "some space",
persistence, persistence,
mockOpenMCT, mockOpenMCT,
@ -60,6 +61,7 @@ define(
someKey: "some value", someKey: "some value",
name: "domain object" name: "domain object"
}; };
refreshModel = {someOtherKey: "some other value"};
mockPersistenceService = jasmine.createSpyObj( mockPersistenceService = jasmine.createSpyObj(
"persistenceService", "persistenceService",
@ -110,8 +112,16 @@ define(
} }
}); });
mockOpenMCT = {}; mockOpenMCT = {
mockOpenMCT.objects = jasmine.createSpyObj('Object API', ['save']); legacyObject: function (object) {
return {
getModel: function () {
return object;
}
};
}
};
mockOpenMCT.objects = jasmine.createSpyObj('Object API', ['save', 'get']);
mockIdentifierService.parse.and.returnValue(mockIdentifier); mockIdentifierService.parse.and.returnValue(mockIdentifier);
mockIdentifier.getSpace.and.returnValue(SPACE); mockIdentifier.getSpace.and.returnValue(SPACE);
@ -131,6 +141,7 @@ define(
describe("successful persistence", function () { describe("successful persistence", function () {
beforeEach(function () { beforeEach(function () {
mockOpenMCT.objects.save.and.returnValue(Promise.resolve(true)); mockOpenMCT.objects.save.and.returnValue(Promise.resolve(true));
mockOpenMCT.objects.get.and.returnValue(Promise.resolve(refreshModel));
}); });
it("creates unpersisted objects with the persistence service", function () { it("creates unpersisted objects with the persistence service", function () {
// Verify precondition; no call made during constructor // Verify precondition; no call made during constructor
@ -146,11 +157,10 @@ define(
}); });
it("refreshes the domain object model from persistence", function () { it("refreshes the domain object model from persistence", function () {
var refreshModel = {someOtherKey: "some other value"};
model.persisted = 1; model.persisted = 1;
mockPersistenceService.readObject.and.returnValue(asPromise(refreshModel)); persistence.refresh().then(() => {
persistence.refresh(); expect(model).toEqual(refreshModel);
expect(model).toEqual(refreshModel); });
}); });
it("does not trigger error notification on successful" it("does not trigger error notification on successful"

View File

@ -128,7 +128,14 @@ define([
}; };
ObjectServiceProvider.prototype.get = function (key) { ObjectServiceProvider.prototype.get = function (key) {
const keyString = utils.makeKeyString(key); let keyString = utils.makeKeyString(key);
const space = this.getSpace(keyString);
let identifier = utils.parseKeyString(keyString);
// We assign to the space for legacy persistence providers since they register themselves using a defaultSpace.
// This is the way to make everyone happy.
identifier.namespace = space;
keyString = utils.makeKeyString(identifier);
return this.objectService.getObjects([keyString]) return this.objectService.getObjects([keyString])
.then(function (results) { .then(function (results) {

View File

@ -22,7 +22,7 @@
import CouchObjectProvider from './CouchObjectProvider'; import CouchObjectProvider from './CouchObjectProvider';
const NAMESPACE = ''; const NAMESPACE = '';
const PERSISTENCE_SPACE = 'mct'; const PERSISTENCE_SPACE = '';
export default function CouchPlugin(url) { export default function CouchPlugin(url) {
return function install(openmct) { return function install(openmct) {

View File

@ -38,7 +38,7 @@ describe('the plugin', () => {
beforeEach((done) => { beforeEach((done) => {
mockDomainObject = { mockDomainObject = {
identifier: { identifier: {
namespace: 'mct', namespace: '',
key: 'some-value' key: 'some-value'
} }
}; };