From c98a381a42bf17b92e25983db6cf9548c3d96128 Mon Sep 17 00:00:00 2001 From: Sarah Hale Date: Thu, 25 Jun 2015 14:36:14 -0700 Subject: [PATCH] [Events] Created RT Messages Created a real-time version of the Messages view called RT Messages. Additionally, fixed the MessagesViewPolicy test. #18. --- .../test/policies/MessagesViewPolicySpec.js | 35 ++++-- platform/features/rtevents/bundle.json | 12 +- ...data-table.html => mct-rt-data-table.html} | 0 .../{messages.html => rtmessages.html} | 6 +- .../features/rtevents/src/DomainColumn.js | 16 +-- .../rtevents/src/RTEventListController.js | 11 +- platform/features/rtevents/src/RangeColumn.js | 21 ++-- .../{MCTDataTable.js => MCTRTDataTable.js} | 12 +- ...sViewPolicy.js => RTMessagesViewPolicy.js} | 11 +- .../rtevents/test/DomainColumnSpec.js | 84 ------------- .../test/RTEventListControllerSpec.js | 110 ------------------ .../features/rtevents/test/RangeColumnSpec.js | 81 ------------- .../test/policies/MessagesViewPolicySpec.js | 68 ----------- .../test/policies/RTMessagesViewPolicySpec.js | 0 platform/features/rtevents/test/suite.js | 0 15 files changed, 70 insertions(+), 397 deletions(-) rename platform/features/rtevents/res/templates/{mct-data-table.html => mct-rt-data-table.html} (100%) rename platform/features/rtevents/res/templates/{messages.html => rtmessages.html} (83%) rename platform/features/rtevents/src/directives/{MCTDataTable.js => MCTRTDataTable.js} (90%) rename platform/features/rtevents/src/policies/{MessagesViewPolicy.js => RTMessagesViewPolicy.js} (90%) delete mode 100644 platform/features/rtevents/test/policies/MessagesViewPolicySpec.js create mode 100644 platform/features/rtevents/test/policies/RTMessagesViewPolicySpec.js create mode 100644 platform/features/rtevents/test/suite.js diff --git a/platform/features/events/test/policies/MessagesViewPolicySpec.js b/platform/features/events/test/policies/MessagesViewPolicySpec.js index 6e3430f64e..c803cf91ed 100644 --- a/platform/features/events/test/policies/MessagesViewPolicySpec.js +++ b/platform/features/events/test/policies/MessagesViewPolicySpec.js @@ -31,37 +31,50 @@ define( describe("The messages view policy", function () { var mockDomainObject, - testType, + mockTelemetry, telemetryType, + testType, + testView, + testMetadata, policy; beforeEach(function () { + + testView = { key: "string" }; + testMetadata = {}; + mockDomainObject = jasmine.createSpyObj( 'domainObject', - ['getModel'] + ['getModel', 'getCapability'] ); + mockTelemetry = jasmine.createSpyObj( + 'telemetry', + ['getMetadata'] + ); + mockDomainObject.getModel.andCallFake(function (c) { return {type: testType}; }); + mockDomainObject.getCapability.andCallFake(function (c) { + return c === 'telemetry' ? mockTelemetry : undefined; + }); + mockTelemetry.getMetadata.andReturn(testMetadata); policy = new MessagesViewPolicy(); }); - + it("disallows the message view for objects without string telemetry", function () { - telemetryType = 'notString'; - expect(policy.allow({ key: 'messages' }, mockDomainObject)) - .toBeFalsy(); + testMetadata.ranges = [ { format: 'notString' } ]; + expect(policy.allow({ key: 'messages' }, mockDomainObject)).toBeFalsy(); }); it("allows the message view for objects with string telemetry", function () { - telemetryType = 'string'; - expect(policy.allow({ key: 'messages' }, mockDomainObject)) - .toBeTruthy(); + testMetadata.ranges = [ { format: 'string' } ]; + expect(policy.allow({ key: 'messages' }, mockDomainObject)).toBeTruthy(); }); it("returns true when the current view is not the Messages view", function () { - expect(policy.allow({ key: 'notMessages' }, mockDomainObject)) - .toBeTruthy(); + expect(policy.allow({ key: 'notMessages' }, mockDomainObject)).toBeTruthy(); }); }); } diff --git a/platform/features/rtevents/bundle.json b/platform/features/rtevents/bundle.json index 04400d8223..d2067bdd79 100644 --- a/platform/features/rtevents/bundle.json +++ b/platform/features/rtevents/bundle.json @@ -4,11 +4,11 @@ "extensions": { "views": [ { - "key": "messages", + "key": "rtmessages", "name": "RT Messages", "glyph": "5", - "description": "Scrolling list of messages.", - "templateUrl": "templates/messages.html", + "description": "Scrolling list of real time messages.", + "templateUrl": "templates/rtmessages.html", "needs": [ "telemetry" ], "delegation": true } @@ -22,15 +22,15 @@ ], "directives": [ { - "key": "mctDataTable", - "implementation": "directives/MCTDataTable.js", + "key": "mctRtDataTable", + "implementation": "directives/MCTRTDataTable.js", "depends": [ "$window" ] } ], "policies": [ { "category": "view", - "implementation": "policies/MessagesViewPolicy.js" + "implementation": "policies/RTMessagesViewPolicy.js" } ] } diff --git a/platform/features/rtevents/res/templates/mct-data-table.html b/platform/features/rtevents/res/templates/mct-rt-data-table.html similarity index 100% rename from platform/features/rtevents/res/templates/mct-data-table.html rename to platform/features/rtevents/res/templates/mct-rt-data-table.html diff --git a/platform/features/rtevents/res/templates/messages.html b/platform/features/rtevents/res/templates/rtmessages.html similarity index 83% rename from platform/features/rtevents/res/templates/messages.html rename to platform/features/rtevents/res/templates/rtmessages.html index 82db5d0f9c..f17a44fe8c 100644 --- a/platform/features/rtevents/res/templates/messages.html +++ b/platform/features/rtevents/res/templates/rtmessages.html @@ -19,10 +19,10 @@ this source code distribution or the Licensing information page available at runtime from the About dialog for additional information. --> -
+
- + ng-controller="RTEventListController as rtevent"> +
diff --git a/platform/features/rtevents/src/DomainColumn.js b/platform/features/rtevents/src/DomainColumn.js index 95a6222553..c4f8a2a143 100644 --- a/platform/features/rtevents/src/DomainColumn.js +++ b/platform/features/rtevents/src/DomainColumn.js @@ -40,28 +40,30 @@ define( * @param {TelemetryFormatter} telemetryFormatter the telemetry * formatting service, for making values human-readable. */ - function DomainColumn(domainMetadata, telemetryFormatter) { + function DomainColumn(telemetryFormatter) { return { /** * Get the title to display in this column's header. * @returns {string} the title to display */ getTitle: function () { - return domainMetadata.name; + return "Time"; }, /** * Get the text to display inside a row under this * column. * @returns {string} the text to display */ - getValue: function (domainObject, data, index) { - return telemetryFormatter.formatDomainValue( - data.getDomainValue(index, domainMetadata.key) - ); + getValue: function (domainObject, handle) { + return { + text: telemetryFormatter.formatDomainValue( + handle.getDomainValue(domainObject) + ) + }; } }; } return DomainColumn; } -); \ No newline at end of file +); diff --git a/platform/features/rtevents/src/RTEventListController.js b/platform/features/rtevents/src/RTEventListController.js index b84d339bd6..618d6eede9 100644 --- a/platform/features/rtevents/src/RTEventListController.js +++ b/platform/features/rtevents/src/RTEventListController.js @@ -64,10 +64,7 @@ define( telemetryObjects[0] && telemetryObjects[0].getId(); columns = []; - - if (telemetryObjects > 1 || id !== firstId) { - columns.push(new NameColumn()); - } + columns.push(new DomainColumn(telemetryFormatter)); columns.push(new RangeColumn()); @@ -92,9 +89,11 @@ define( domainValue !== undefined) { // Instead of unshift (scrolling), use push (messages) rows.push(columns.map(function (column) { - return column.getValue(telemetryObject, handle); + return column.getValue(telemetryObject, handle).text; })); - rows.splice(ROW_COUNT, Number.MAX_VALUE); + // Remove first rows when adding past the max rows limit + //rows.splice(ROW_COUNT, Number.MAX_VALUE); + rows.splice(0, rows.length - ROW_COUNT); lastUpdated[id] = domainValue; } } diff --git a/platform/features/rtevents/src/RangeColumn.js b/platform/features/rtevents/src/RangeColumn.js index 2b11de43c7..8fcf747b25 100644 --- a/platform/features/rtevents/src/RangeColumn.js +++ b/platform/features/rtevents/src/RangeColumn.js @@ -19,10 +19,11 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -/*global define,Promise*/ +/*global define,moment*/ /** - * Module defining DomainColumn. Created by vwoeltje on 11/18/14. + * Module defining DomainColumn. + * Created by vwoeltje on 11/18/14. Modified by shale on 06/25/2015. */ define( [], @@ -31,7 +32,7 @@ define( /** * A column which will report telemetry range values - * (typically, measurements.) Used by the ScrollingListController. + * (typically, measurements.) Used by the RTScrollingListController. * * @constructor * @param rangeMetadata an object with the machine- and human- @@ -40,28 +41,28 @@ define( * @param {TelemetryFormatter} telemetryFormatter the telemetry * formatting service, for making values human-readable. */ - function RangeColumn(rangeMetadata, telemetryFormatter) { + function RangeColumn() { return { /** * Get the title to display in this column's header. * @returns {string} the title to display */ getTitle: function () { - return rangeMetadata.name; + return "Message"; }, /** * Get the text to display inside a row under this * column. * @returns {string} the text to display */ - getValue: function (domainObject, data, index) { - return telemetryFormatter.formatRangeValue( - data.getRangeValue(index, rangeMetadata.key) - ); + getValue: function (domainObject, handle) { + return { + text: handle.getRangeValue(domainObject) + }; } }; } return RangeColumn; } -); \ No newline at end of file +); diff --git a/platform/features/rtevents/src/directives/MCTDataTable.js b/platform/features/rtevents/src/directives/MCTRTDataTable.js similarity index 90% rename from platform/features/rtevents/src/directives/MCTDataTable.js rename to platform/features/rtevents/src/directives/MCTRTDataTable.js index c4cb9970e6..9047d9e7f1 100644 --- a/platform/features/rtevents/src/directives/MCTDataTable.js +++ b/platform/features/rtevents/src/directives/MCTRTDataTable.js @@ -22,17 +22,17 @@ /*global define,Promise*/ /** - * Module defining MCTDataTable. Created by shale on 06/22/2015. + * Module defining MCTRTDataTable. Created by shale on 06/25/2015. */ define( [], function () { "use strict"; - function MCTDataTable($window) { + function MCTRTDataTable($window) { return { restrict: "E", - templateUrl: "platform/features/events/res/templates/mct-data-table.html", + templateUrl: "platform/features/rtevents/res/templates/mct-rt-data-table.html", scope: { headers: "=", rows: "=", @@ -49,7 +49,7 @@ define( // (When viewing at the bottom of the page, the scroll bar will // stay at the bottom despite additions to the table) if ($scope.ascendingScroll) { - $scope.$watch("rows", function () { + $scope.$watchCollection("rows", function () { // Wait until the page as been repainted (otherwise the // height will always be zero) $window.requestAnimationFrame(function () { @@ -59,7 +59,7 @@ define( // One of the parents is a div that has vscroll scrollParent = $element[0].parentElement.parentElement.parentElement.parentElement.parentElement; - + // Move the scrollbar down the amount that the height has changed scrollParent.scrollTop = scrollParent.scrollTop + (currentHeight - previousHeight); }); @@ -69,6 +69,6 @@ define( }; } - return MCTDataTable; + return MCTRTDataTable; } ); \ No newline at end of file diff --git a/platform/features/rtevents/src/policies/MessagesViewPolicy.js b/platform/features/rtevents/src/policies/RTMessagesViewPolicy.js similarity index 90% rename from platform/features/rtevents/src/policies/MessagesViewPolicy.js rename to platform/features/rtevents/src/policies/RTMessagesViewPolicy.js index 4426872b1e..32daca6873 100644 --- a/platform/features/rtevents/src/policies/MessagesViewPolicy.js +++ b/platform/features/rtevents/src/policies/RTMessagesViewPolicy.js @@ -33,14 +33,15 @@ define( * Policy controlling when the Messages view should be avaliable. * @constructor */ - function MessagesViewPolicy() { + function RTMessagesViewPolicy() { function hasStringTelemetry(domainObject) { var telemetry = domainObject && domainObject.getCapability('telemetry'), metadata = telemetry ? telemetry.getMetadata() : {}, + data = telemetry ? telemetry.requestData() : {}, ranges = metadata.ranges || []; - + return ranges.some(function (range) { return range.format === 'string'; }); @@ -54,8 +55,8 @@ define( * @returns {boolean} true if not disallowed */ allow: function (view, domainObject) { - // This policy only applies for the Messages view - if (view.key === 'messages') { + // This policy only applies for the RT Messages view + if (view.key === 'rtmessages') { // The Messages view is allowed only if the domain // object has string telemetry if (!hasStringTelemetry(domainObject)) { @@ -69,6 +70,6 @@ define( }; } - return MessagesViewPolicy; + return RTMessagesViewPolicy; } ); \ No newline at end of file diff --git a/platform/features/rtevents/test/DomainColumnSpec.js b/platform/features/rtevents/test/DomainColumnSpec.js index 29c896cd5b..e69de29bb2 100644 --- a/platform/features/rtevents/test/DomainColumnSpec.js +++ b/platform/features/rtevents/test/DomainColumnSpec.js @@ -1,84 +0,0 @@ -/***************************************************************************** - * 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,describe,it,expect,beforeEach,waitsFor,jasmine*/ - -/** - * EventSpec. Created by vwoeltje on 11/6/14. Modified by shale on 06/23/2015. - */ -define( - ["../src/DomainColumn"], - function (DomainColumn) { - "use strict"; - - var TEST_DOMAIN_VALUE = "some formatted domain value"; - - describe("An event list domain column", function () { - var mockDataSet, - testMetadata, - mockFormatter, - column; - - beforeEach(function () { - mockDataSet = jasmine.createSpyObj( - "data", - [ "getDomainValue" ] - ); - mockFormatter = jasmine.createSpyObj( - "formatter", - [ "formatDomainValue", "formatRangeValue" ] - ); - testMetadata = { - key: "testKey", - name: "Test Name" - }; - mockFormatter.formatDomainValue.andReturn(TEST_DOMAIN_VALUE); - - column = new DomainColumn(testMetadata, mockFormatter); - }); - - it("reports a column header from domain metadata", function () { - expect(column.getTitle()).toEqual("Test Name"); - }); - - it("looks up data from a data set", function () { - column.getValue(undefined, mockDataSet, 42); - expect(mockDataSet.getDomainValue) - .toHaveBeenCalledWith(42, "testKey"); - }); - - it("formats domain values as time", function () { - mockDataSet.getDomainValue.andReturn(402513731000); - - // Should have just given the value the formatter gave - expect(column.getValue(undefined, mockDataSet, 42)) - .toEqual(TEST_DOMAIN_VALUE); - - // Make sure that service interactions were as expected - expect(mockFormatter.formatDomainValue) - .toHaveBeenCalledWith(402513731000); - expect(mockFormatter.formatRangeValue) - .not.toHaveBeenCalled(); - }); - - }); - } -); \ No newline at end of file diff --git a/platform/features/rtevents/test/RTEventListControllerSpec.js b/platform/features/rtevents/test/RTEventListControllerSpec.js index ba764b61b0..e69de29bb2 100644 --- a/platform/features/rtevents/test/RTEventListControllerSpec.js +++ b/platform/features/rtevents/test/RTEventListControllerSpec.js @@ -1,110 +0,0 @@ -/***************************************************************************** - * 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,describe,it,expect,beforeEach,waitsFor,jasmine*/ - -/** - * EventSpec. Created by shale on 06/25/2015. - */ -define( - ["../src/RTEventListController"], - function (RTEventListController) { - "use strict"; - - describe("The real time event list controller", function () { - var mockScope, - mockTelemetry, - testMetadata, - controller; - - beforeEach(function () { - mockScope = jasmine.createSpyObj( - "$scope", - [ "$on", "$watch" ] - ); - mockTelemetry = jasmine.createSpyObj( - "telemetryController", - [ "getResponse", "getMetadata", "getTelemetryObjects" ] - ); - testMetadata = [ - { - domains: [ - { key: "d0", name: "D0" }, - { key: "d1", name: "D1" } - ], - ranges: [ - { key: "r0", name: "R0" }, - { key: "r1", name: "R1" } - ] - }, - { - domains: [ - { key: "d0", name: "D0" }, - { key: "d2", name: "D2" } - ], - ranges: [ - { key: "r0", name: "R0" } - ] - } - ]; - mockTelemetry.getMetadata.andReturn(testMetadata); - mockTelemetry.getResponse.andReturn([]); - mockTelemetry.getTelemetryObjects.andReturn([]); - mockScope.telemetry = mockTelemetry; - controller = new EventListController(mockScope); - }); - - it("listens for telemetry data updates", function () { - expect(mockScope.$on).toHaveBeenCalledWith( - "telemetryUpdate", - jasmine.any(Function) - ); - }); - - it("watches for telemetry controller changes", function () { - expect(mockScope.$watch).toHaveBeenCalledWith( - "telemetry", - jasmine.any(Function) - ); - }); - - it("provides a column for each unique domain and range", function () { - // Should have five columns based on metadata above, - // (d0, d1, d2, r0, r1) - mockScope.$watch.mostRecentCall.args[1](mockTelemetry); - expect(mockScope.headers).toEqual(["D0", "D1", "D2", "R0", "R1"]); - }); - - it("does not throw if telemetry controller is undefined", function () { - // Just a general robustness check - mockScope.telemetry = undefined; - expect(mockScope.$watch.mostRecentCall.args[1]) - .not.toThrow(); - }); - - it("provides default columns if domain/range metadata is unavailable", function () { - mockTelemetry.getMetadata.andReturn([]); - mockScope.$watch.mostRecentCall.args[1](mockTelemetry); - expect(mockScope.headers).toEqual(["Time", "Message"]); - }); - }); - } -); \ No newline at end of file diff --git a/platform/features/rtevents/test/RangeColumnSpec.js b/platform/features/rtevents/test/RangeColumnSpec.js index 99c5ceb6f4..e69de29bb2 100644 --- a/platform/features/rtevents/test/RangeColumnSpec.js +++ b/platform/features/rtevents/test/RangeColumnSpec.js @@ -1,81 +0,0 @@ -/***************************************************************************** - * 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,describe,it,expect,beforeEach,waitsFor,jasmine*/ - -/** - * EventSpec. Created by vwoeltje on 11/6/14. Modified by shale on 06/23/2015. - */ -define( - ["../src/RangeColumn"], - function (RangeColumn) { - "use strict"; - - var TEST_RANGE_VALUE = "some formatted range value"; - - describe("An event list range column", function () { - var mockDataSet, - testMetadata, - mockFormatter, - column; - - beforeEach(function () { - mockDataSet = jasmine.createSpyObj( - "data", - [ "getRangeValue" ] - ); - mockFormatter = jasmine.createSpyObj( - "formatter", - [ "formatDomainValue", "formatRangeValue" ] - ); - testMetadata = { - key: "testKey", - name: "Test Name" - }; - mockFormatter.formatRangeValue.andReturn(TEST_RANGE_VALUE); - - column = new RangeColumn(testMetadata, mockFormatter); - }); - - it("reports a column header from range metadata", function () { - expect(column.getTitle()).toEqual("Test Name"); - }); - - it("looks up data from a data set", function () { - column.getValue(undefined, mockDataSet, 42); - expect(mockDataSet.getRangeValue) - .toHaveBeenCalledWith(42, "testKey"); - }); - - it("formats range values as time", function () { - mockDataSet.getRangeValue.andReturn(123.45678); - expect(column.getValue(undefined, mockDataSet, 42)) - .toEqual(TEST_RANGE_VALUE); - - // Make sure that service interactions were as expected - expect(mockFormatter.formatRangeValue) - .toHaveBeenCalledWith(123.45678); - expect(mockFormatter.formatDomainValue) - .not.toHaveBeenCalled(); - }); - }); - } -); \ No newline at end of file diff --git a/platform/features/rtevents/test/policies/MessagesViewPolicySpec.js b/platform/features/rtevents/test/policies/MessagesViewPolicySpec.js deleted file mode 100644 index 6e3430f64e..0000000000 --- a/platform/features/rtevents/test/policies/MessagesViewPolicySpec.js +++ /dev/null @@ -1,68 +0,0 @@ -/***************************************************************************** - * 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,describe,it,expect,beforeEach,jasmine*/ - -/** - * EventSpec. Created by shale on 06/24/2015. - */ -define( - ["../../src/policies/MessagesViewPolicy"], - function (MessagesViewPolicy) { - "use strict"; - - describe("The messages view policy", function () { - var mockDomainObject, - testType, - telemetryType, - policy; - - beforeEach(function () { - mockDomainObject = jasmine.createSpyObj( - 'domainObject', - ['getModel'] - ); - mockDomainObject.getModel.andCallFake(function (c) { - return {type: testType}; - }); - - policy = new MessagesViewPolicy(); - }); - - it("disallows the message view for objects without string telemetry", function () { - telemetryType = 'notString'; - expect(policy.allow({ key: 'messages' }, mockDomainObject)) - .toBeFalsy(); - }); - - it("allows the message view for objects with string telemetry", function () { - telemetryType = 'string'; - expect(policy.allow({ key: 'messages' }, mockDomainObject)) - .toBeTruthy(); - }); - - it("returns true when the current view is not the Messages view", function () { - expect(policy.allow({ key: 'notMessages' }, mockDomainObject)) - .toBeTruthy(); - }); - }); - } -); \ No newline at end of file diff --git a/platform/features/rtevents/test/policies/RTMessagesViewPolicySpec.js b/platform/features/rtevents/test/policies/RTMessagesViewPolicySpec.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/platform/features/rtevents/test/suite.js b/platform/features/rtevents/test/suite.js new file mode 100644 index 0000000000..e69de29bb2