From f71ab03f34f5ef9bf672b21ce0bb2a75d7eb2a09 Mon Sep 17 00:00:00 2001 From: Patrik Meijer Date: Thu, 21 Feb 2019 14:06:00 -0600 Subject: [PATCH 1/2] Add isValidSetMember method to core API. --- src/client/gmeNodeGetter.js | 12 +++++++- src/common/core/core.js | 22 ++++++++++++++ test/client/js/client/gmeNodeGetter.spec.js | 9 +++++- test/common/core/core.spec.js | 33 ++++++++++++++++++++- 4 files changed, 73 insertions(+), 3 deletions(-) diff --git a/src/client/gmeNodeGetter.js b/src/client/gmeNodeGetter.js index ecd23781c..e995c83fe 100644 --- a/src/client/gmeNodeGetter.js +++ b/src/client/gmeNodeGetter.js @@ -538,6 +538,16 @@ define([], function () { } }; + GMENode.prototype.isValidMemberOf = function (setOwnerPath, name) { + var setOwner = _getNode(this._state.nodes, setOwnerPath); + + if (setOwner) { + return this._state.core.isValidMemberOf(this._state.nodes[this._id].node, setOwner, name); + } else { + return false; + } + }; + GMENode.prototype.getValidAspectNames = function () { return this._state.core.getValidAspectNames(this._state.nodes[this._id].node); }; @@ -666,4 +676,4 @@ define([], function () { } return getNode; -}); \ No newline at end of file +}); diff --git a/src/common/core/core.js b/src/common/core/core.js index e6e422eba..05638bf66 100644 --- a/src/common/core/core.js +++ b/src/common/core/core.js @@ -2573,6 +2573,28 @@ define([ return core.isValidTargetOf(node, source, name); }; + /** + * Checks if the node can be a member of the given set at the provided set-owner node. This does not take + * cardinality rules into account. + * @param {module:Core~Node} node - the node in question. + * @param {module:Core~Node} setOwner - the owner of the set. + * @param {string} name - the name of the set. + * + * @return {bool} The function returns true if according to the META rules, the given node is a valid + * member of set of the given set-owner. + * + * @throws {CoreIllegalArgumentError} If some of the parameters don't match the input criteria. + * @throws {CoreInternalError} If some internal error took place inside the core layers. + */ + this.isValidMemberOf = function (node, setOwner, name) { + ensureNode(node, 'node'); + ensureNode(setOwner, 'setOwner'); + ensureType(name, 'name', 'string'); + + // This is not a typo - the isValidTargetOf method can be reused. + return core.isValidTargetOf(node, setOwner, name); + }; + /** * Returns the list of the META defined attribute names of the node. * @param {module:Core~Node} node - the node in question. diff --git a/test/client/js/client/gmeNodeGetter.spec.js b/test/client/js/client/gmeNodeGetter.spec.js index fc97e464b..f5789c15b 100644 --- a/test/client/js/client/gmeNodeGetter.spec.js +++ b/test/client/js/client/gmeNodeGetter.spec.js @@ -813,6 +813,13 @@ describe('gmeNodeGetter', function () { expect(node.isValidTargetOf('/1303043463/1448030591', 'setPtr')).to.eql(false); }); + it('should check if the node is a valid member of the given set', function () { + var node = getNode('/1303043463/1044885565', logger, basicState, basicStoreNode); + + expect(node.isValidMemberOf('/1303043463/2119137141', 'setPtr')).to.eql(true); + expect(node.isValidMemberOf('/1303043463', 'setPtr')).to.eql(false); + }); + it('should return the common base', function () { var node = getNode('/175547009/871430202', logger, basicState, basicStoreNode); @@ -896,4 +903,4 @@ describe('gmeNodeGetter', function () { expect(node.getLibraryRootId('mope')).to.equal(null); }); -}); \ No newline at end of file +}); diff --git a/test/common/core/core.spec.js b/test/common/core/core.spec.js index 0ab539c64..d450ef106 100644 --- a/test/common/core/core.spec.js +++ b/test/common/core/core.spec.js @@ -103,7 +103,7 @@ describe('core', function () { 'setMemberRegistry', 'delMemberRegistry', 'isMemberOf', 'getGuid', 'setGuid', 'getConstraint', 'setConstraint', 'delConstraint', 'getConstraintNames', 'getOwnConstraintNames', 'isTypeOf', 'isValidChildOf', 'getValidPointerNames', - 'getValidSetNames', 'isValidTargetOf', 'getValidAttributeNames', + 'getValidSetNames', 'isValidTargetOf', 'isValidMemberOf', 'getValidAttributeNames', 'getOwnValidAttributeNames', 'isValidAttributeValueOf', 'getValidAspectNames', 'getOwnValidAspectNames', 'getAspectMeta', 'getJsonMeta', 'getOwnJsonMeta', 'clearMetaRules', 'setAttributeMeta', 'delAttributeMeta', 'getAttributeMeta', @@ -2841,6 +2841,37 @@ describe('core', function () { } }); + it('should throw @isValidMemberOf if not valid parameters are given', function () { + var myError; + + try { + core.isValidMemberOf('string'); + } catch (e) { + myError = e; + } finally { + expect(myError.name).to.eql('CoreIllegalArgumentError'); + myError = null; + } + + try { + core.isValidMemberOf(rootNode, 'notnode'); + } catch (e) { + myError = e; + } finally { + expect(myError.name).to.eql('CoreIllegalArgumentError'); + myError = null; + } + + try { + core.isValidMemberOf(rootNode, rootNode, {}); + } catch (e) { + myError = e; + } finally { + expect(myError.name).to.eql('CoreIllegalArgumentError'); + myError = null; + } + }); + it('should throw @getValidAttributeNames if not valid node is given', function () { var myError; From 3e4242cd5eea666a61392c5adec75f0616c85094 Mon Sep 17 00:00:00 2001 From: Patrik Meijer Date: Thu, 21 Feb 2019 14:09:43 -0600 Subject: [PATCH 2/2] Method name should be isValidSetMemberOf --- src/client/gmeNodeGetter.js | 4 ++-- src/common/core/core.js | 2 +- test/client/js/client/gmeNodeGetter.spec.js | 4 ++-- test/common/core/core.spec.js | 10 +++++----- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/client/gmeNodeGetter.js b/src/client/gmeNodeGetter.js index e995c83fe..a47b4ace2 100644 --- a/src/client/gmeNodeGetter.js +++ b/src/client/gmeNodeGetter.js @@ -538,11 +538,11 @@ define([], function () { } }; - GMENode.prototype.isValidMemberOf = function (setOwnerPath, name) { + GMENode.prototype.isValidSetMemberOf = function (setOwnerPath, name) { var setOwner = _getNode(this._state.nodes, setOwnerPath); if (setOwner) { - return this._state.core.isValidMemberOf(this._state.nodes[this._id].node, setOwner, name); + return this._state.core.isValidSetMemberOf(this._state.nodes[this._id].node, setOwner, name); } else { return false; } diff --git a/src/common/core/core.js b/src/common/core/core.js index 05638bf66..03875a44b 100644 --- a/src/common/core/core.js +++ b/src/common/core/core.js @@ -2586,7 +2586,7 @@ define([ * @throws {CoreIllegalArgumentError} If some of the parameters don't match the input criteria. * @throws {CoreInternalError} If some internal error took place inside the core layers. */ - this.isValidMemberOf = function (node, setOwner, name) { + this.isValidSetMemberOf = function (node, setOwner, name) { ensureNode(node, 'node'); ensureNode(setOwner, 'setOwner'); ensureType(name, 'name', 'string'); diff --git a/test/client/js/client/gmeNodeGetter.spec.js b/test/client/js/client/gmeNodeGetter.spec.js index f5789c15b..4f7c335d3 100644 --- a/test/client/js/client/gmeNodeGetter.spec.js +++ b/test/client/js/client/gmeNodeGetter.spec.js @@ -816,8 +816,8 @@ describe('gmeNodeGetter', function () { it('should check if the node is a valid member of the given set', function () { var node = getNode('/1303043463/1044885565', logger, basicState, basicStoreNode); - expect(node.isValidMemberOf('/1303043463/2119137141', 'setPtr')).to.eql(true); - expect(node.isValidMemberOf('/1303043463', 'setPtr')).to.eql(false); + expect(node.isValidSetMemberOf('/1303043463/2119137141', 'setPtr')).to.eql(true); + expect(node.isValidSetMemberOf('/1303043463', 'setPtr')).to.eql(false); }); diff --git a/test/common/core/core.spec.js b/test/common/core/core.spec.js index d450ef106..c7a0456fe 100644 --- a/test/common/core/core.spec.js +++ b/test/common/core/core.spec.js @@ -103,7 +103,7 @@ describe('core', function () { 'setMemberRegistry', 'delMemberRegistry', 'isMemberOf', 'getGuid', 'setGuid', 'getConstraint', 'setConstraint', 'delConstraint', 'getConstraintNames', 'getOwnConstraintNames', 'isTypeOf', 'isValidChildOf', 'getValidPointerNames', - 'getValidSetNames', 'isValidTargetOf', 'isValidMemberOf', 'getValidAttributeNames', + 'getValidSetNames', 'isValidTargetOf', 'isValidSetMemberOf', 'getValidAttributeNames', 'getOwnValidAttributeNames', 'isValidAttributeValueOf', 'getValidAspectNames', 'getOwnValidAspectNames', 'getAspectMeta', 'getJsonMeta', 'getOwnJsonMeta', 'clearMetaRules', 'setAttributeMeta', 'delAttributeMeta', 'getAttributeMeta', @@ -2841,11 +2841,11 @@ describe('core', function () { } }); - it('should throw @isValidMemberOf if not valid parameters are given', function () { + it('should throw @isValidSetMemberOf if not valid parameters are given', function () { var myError; try { - core.isValidMemberOf('string'); + core.isValidSetMemberOf('string'); } catch (e) { myError = e; } finally { @@ -2854,7 +2854,7 @@ describe('core', function () { } try { - core.isValidMemberOf(rootNode, 'notnode'); + core.isValidSetMemberOf(rootNode, 'notnode'); } catch (e) { myError = e; } finally { @@ -2863,7 +2863,7 @@ describe('core', function () { } try { - core.isValidMemberOf(rootNode, rootNode, {}); + core.isValidSetMemberOf(rootNode, rootNode, {}); } catch (e) { myError = e; } finally {