From 19b4dc3fa38e51b3e4a42c92540e0d8096968691 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Tue, 25 Nov 2014 09:48:54 -0800 Subject: [PATCH] [Common UI] Spec for EditAction Fill in spec for the Edit action, which enters Edit mode Part of bundle platform/commonUI/edit, being transitioned for WTD-574. --- .../commonUI/edit/src/actions/EditAction.js | 2 +- .../edit/test/actions/EditActionSpec.js | 74 +++++++++++++++++++ 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/platform/commonUI/edit/src/actions/EditAction.js b/platform/commonUI/edit/src/actions/EditAction.js index daadce8b52..75919fd156 100644 --- a/platform/commonUI/edit/src/actions/EditAction.js +++ b/platform/commonUI/edit/src/actions/EditAction.js @@ -22,7 +22,7 @@ define( var domainObject = (context || {}).domainObject; if (!domainObject) { - $log.error([ + $log.warn([ "No domain object to edit; ", "edit action is not valid." ].join("")); diff --git a/platform/commonUI/edit/test/actions/EditActionSpec.js b/platform/commonUI/edit/test/actions/EditActionSpec.js index dbe57c5570..e0a47feb18 100644 --- a/platform/commonUI/edit/test/actions/EditActionSpec.js +++ b/platform/commonUI/edit/test/actions/EditActionSpec.js @@ -6,6 +6,80 @@ define( "use strict"; describe("The Edit action", function () { + var mockLocation, + mockNavigationService, + mockLog, + mockDomainObject, + actionContext, + action; + + beforeEach(function () { + mockLocation = jasmine.createSpyObj( + "$location", + [ "path" ] + ); + mockNavigationService = jasmine.createSpyObj( + "navigationService", + [ "setNavigation", "getNavigation" ] + ); + mockLog = jasmine.createSpyObj( + "$log", + [ "error", "warn", "info", "debug" ] + ); + mockDomainObject = jasmine.createSpyObj( + "domainObject", + [ "getId", "getModel", "getCapability" ] + ); + + actionContext = { domainObject: mockDomainObject }; + + action = new EditAction( + mockLocation, + mockNavigationService, + mockLog, + actionContext + ); + }); + + it("is only applicable when a domain object is present", function () { + expect(EditAction.appliesTo(actionContext)).toBeTruthy(); + expect(EditAction.appliesTo({})).toBeFalsy(); + }); + + it("changes URL path to edit mode when performed", function () { + action.perform(); + expect(mockLocation.path).toHaveBeenCalledWith("/edit"); + }); + + it("ensures that the edited object is navigated-to", function () { + action.perform(); + expect(mockNavigationService.setNavigation) + .toHaveBeenCalledWith(mockDomainObject); + }); + + it("logs a warning if constructed when inapplicable", function () { + // Verify precondition (ensure warn wasn't called during setup) + expect(mockLog.warn).not.toHaveBeenCalled(); + + // Should not have hit an exception... + new EditAction( + mockLocation, + mockNavigationService, + mockLog, + {} + ).perform(); + + // ...but should have logged a warning + expect(mockLog.warn).toHaveBeenCalled(); + + // And should not have had other interactions + expect(mockLocation.path) + .not.toHaveBeenCalled(); + expect(mockNavigationService.setNavigation) + .not.toHaveBeenCalled(); + }); + + }); }