From 6fe3f82fb1804c8d0e56d37c00913466005568f3 Mon Sep 17 00:00:00 2001
From: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Tue, 1 Dec 2015 15:59:37 -0800
Subject: [PATCH] [Entanglement] Add test for Set Primary Location

https://github.com/nasa/openmctweb/issues/346
---
 .../test/actions/SetPrimaryLocationSpec.js    | 77 +++++++++++++++++++
 platform/entanglement/test/suite.json         |  1 +
 2 files changed, 78 insertions(+)
 create mode 100644 platform/entanglement/test/actions/SetPrimaryLocationSpec.js

diff --git a/platform/entanglement/test/actions/SetPrimaryLocationSpec.js b/platform/entanglement/test/actions/SetPrimaryLocationSpec.js
new file mode 100644
index 0000000000..3b8bf32150
--- /dev/null
+++ b/platform/entanglement/test/actions/SetPrimaryLocationSpec.js
@@ -0,0 +1,77 @@
+/*****************************************************************************
+ * 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,beforeEach,it,jasmine,expect */
+
+define(
+    [
+        '../../src/actions/SetPrimaryLocation',
+        '../DomainObjectFactory'
+    ],
+    function (SetPrimaryLocation, domainObjectFactory) {
+        'use strict';
+
+        describe("The 'set primary location' action", function () {
+            var testContext,
+                testModel,
+                testId,
+                mockLocationCapability,
+                mockContextCapability;
+
+            beforeEach(function () {
+                testId = "some-id";
+                testModel = { name: "some name" };
+
+                mockLocationCapability = jasmine.createSpyObj(
+                    'location',
+                    [ 'setPrimaryLocation', 'getContextualLocation' ]
+                );
+
+                mockLocationCapability.getContextualLocation.andReturn(testId);
+
+                testContext = {
+                    domainObject: domainObjectFactory({
+                        capabilities: {
+                            location: mockLocationCapability
+                        },
+                        model: testModel
+                    })
+                };
+            });
+
+            it("is applicable to objects with no location specified", function () {
+                expect(SetPrimaryLocation.appliesTo(testContext))
+                    .toBe(true);
+                testModel.location = "something";
+                expect(SetPrimaryLocation.appliesTo(testContext))
+                    .toBe(false);
+            });
+
+            it("sets the location contextually when performed", function () {
+                new SetPrimaryLocation(testContext).perform();
+                expect(mockLocationCapability.setPrimaryLocation)
+                    .toHaveBeenCalledWith(testId);
+            });
+
+        });
+    }
+);
diff --git a/platform/entanglement/test/suite.json b/platform/entanglement/test/suite.json
index b954ab8ebc..243da94c39 100644
--- a/platform/entanglement/test/suite.json
+++ b/platform/entanglement/test/suite.json
@@ -4,6 +4,7 @@
     "actions/GoToOriginalAction",
     "actions/LinkAction",
     "actions/MoveAction",
+    "actions/SetPrimaryLocationAction",
     "policies/CrossSpacePolicy",
     "services/CopyService",
     "services/LinkService",