From 90ba93e3962da5ea795b2c31fb99c3c00fb331e8 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 4 Jun 2015 14:16:23 -0700 Subject: [PATCH] [Info Bubble] Test metadata capability Test metadata capability, introduced to support info bubbles for domain objects, WTD-884. --- .../capabilities/MetadataCapabilitySpec.js | 101 ++++++++++++++++++ platform/core/test/suite.json | 1 + 2 files changed, 102 insertions(+) create mode 100644 platform/core/test/capabilities/MetadataCapabilitySpec.js diff --git a/platform/core/test/capabilities/MetadataCapabilitySpec.js b/platform/core/test/capabilities/MetadataCapabilitySpec.js new file mode 100644 index 0000000000..02316f609d --- /dev/null +++ b/platform/core/test/capabilities/MetadataCapabilitySpec.js @@ -0,0 +1,101 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +define( + ['../../src/capabilities/MetadataCapability'], + function (MetadataCapability) { + "use strict"; + + describe("The metadata capability", function () { + var mockDomainObject, + mockType, + mockProperties, + testModel, + metadata; + + function getCapability(key) { + return key === 'type' ? mockType : undefined; + } + + function findValue(properties, name) { + var i; + for (i = 0; i < properties.length; i += 1) { + if (properties[i].name === name) { + return properties[i].value; + } + } + } + + beforeEach(function () { + mockDomainObject = jasmine.createSpyObj( + 'domainObject', + ['getId', 'getCapability', 'useCapability', 'getModel'] + ); + mockType = jasmine.createSpyObj( + 'type', + ['getProperties', 'getName'] + ); + mockProperties = ['a', 'b', 'c'].map(function (k) { + var mockProperty = jasmine.createSpyObj( + 'property-' + k, + ['getValue', 'getDefinition'] + ); + mockProperty.getValue.andReturn("Value " + k); + mockProperty.getDefinition.andReturn({ name: "Property " + k}); + return mockProperty; + }); + testModel = { name: "" }; + + mockDomainObject.getId.andReturn("Test id"); + mockDomainObject.getModel.andReturn(testModel); + mockDomainObject.getCapability.andCallFake(getCapability); + mockDomainObject.useCapability.andCallFake(getCapability); + mockType.getProperties.andReturn(mockProperties); + mockType.getName.andReturn("Test type"); + + metadata = new MetadataCapability(mockDomainObject); + }); + + it("reads properties from the domain object model", function () { + metadata.invoke(); + mockProperties.forEach(function (mockProperty) { + expect(mockProperty.getValue).toHaveBeenCalledWith(testModel); + }); + }); + + it("reports type-specific properties", function () { + var properties = metadata.invoke(); + expect(findValue(properties, 'Property a')).toEqual("Value a"); + expect(findValue(properties, 'Property b')).toEqual("Value b"); + expect(findValue(properties, 'Property c')).toEqual("Value c"); + }); + + it("reports generic properties", function () { + var properties = metadata.invoke(); + expect(findValue(properties, 'ID')).toEqual("Test id"); + expect(findValue(properties, 'Type')).toEqual("Test type"); + }); + + }); + } +); \ No newline at end of file diff --git a/platform/core/test/suite.json b/platform/core/test/suite.json index 36f3e81980..26749fa612 100644 --- a/platform/core/test/suite.json +++ b/platform/core/test/suite.json @@ -9,6 +9,7 @@ "capabilities/ContextualDomainObject", "capabilities/CoreCapabilityProvider", "capabilities/DelegationCapability", + "capabilities/MetadataCapability", "capabilities/MutationCapability", "capabilities/PersistenceCapability", "capabilities/RelationshipCapability",