diff --git a/platform/core/src/models/ModelCacheService.js b/platform/core/src/models/ModelCacheService.js index 67a143935f..d6eb3b51b7 100644 --- a/platform/core/src/models/ModelCacheService.js +++ b/platform/core/src/models/ModelCacheService.js @@ -60,7 +60,7 @@ define([], function () { * @returns {boolean} true if present; false if not */ ModelCacheService.prototype.has = function (id) { - return this.cached[id]; + return !!this.cached[id]; }; /** diff --git a/platform/core/test/models/ModelCacheServiceSpec.js b/platform/core/test/models/ModelCacheServiceSpec.js new file mode 100644 index 0000000000..f8254779ab --- /dev/null +++ b/platform/core/test/models/ModelCacheServiceSpec.js @@ -0,0 +1,69 @@ +/***************************************************************************** + * 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/models/ModelCacheService'], function (ModelCacheService) { + 'use strict'; + describe("ModelCacheService", function () { + var testIds, + testModels, + cacheService; + + beforeEach(function () { + testIds = [ 'a', 'b', 'c', 'd' ]; + testModels = testIds.reduce(function (models, id) { + models[id] = { someKey: "some value for " + id }; + return models; + }, {}); + cacheService = new ModelCacheService(); + }); + + describe("when populated with models", function () { + beforeEach(function () { + testIds.forEach(function (id) { + cacheService.put(id, testModels[id]); + }); + }); + + it("indicates that it has these models", function () { + testIds.forEach(function (id) { + expect(cacheService.has(id)).toBe(true); + }); + }); + + it("provides all of these models", function () { + expect(cacheService.all()).toEqual(testModels); + }); + + it("allows models to be retrieved", function () { + testIds.forEach(function (id) { + expect(cacheService.get(id)).toEqual(testModels[id]); + }); + }); + + it("allows models to be removed", function () { + cacheService.remove('a'); + expect(cacheService.has('a')).toBe(false); + }); + }); + }); +});