mirror of
https://github.com/nasa/openmct.git
synced 2025-06-20 16:10:23 +00:00
[Info Bubble] Add test cases for gesture
Add test cases for the info gesture, WTD-884.
This commit is contained in:
@ -61,6 +61,7 @@ define(
|
|||||||
if (pendingBubble) {
|
if (pendingBubble) {
|
||||||
$timeout.cancel(pendingBubble);
|
$timeout.cancel(pendingBubble);
|
||||||
element.off('mousemove', trackPosition);
|
element.off('mousemove', trackPosition);
|
||||||
|
element.off('mouseleave', hideBubble);
|
||||||
pendingBubble = undefined;
|
pendingBubble = undefined;
|
||||||
}
|
}
|
||||||
// Also clear mouse position so we don't have a ton of tiny
|
// Also clear mouse position so we don't have a ton of tiny
|
||||||
|
@ -34,10 +34,22 @@ define(
|
|||||||
mockDomainObject,
|
mockDomainObject,
|
||||||
mockScope,
|
mockScope,
|
||||||
mockOff,
|
mockOff,
|
||||||
|
testMetadata,
|
||||||
|
mockPromise,
|
||||||
|
mockHide,
|
||||||
gesture;
|
gesture;
|
||||||
|
|
||||||
|
function fireEvent(evt, value) {
|
||||||
|
mockElement.on.calls.forEach(function (call) {
|
||||||
|
if (call.args[0] === evt) {
|
||||||
|
call.args[1](value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
mockTimeout = jasmine.createSpy('$timeout');
|
mockTimeout = jasmine.createSpy('$timeout');
|
||||||
|
mockTimeout.cancel = jasmine.createSpy('cancel');
|
||||||
mockInfoService = jasmine.createSpyObj(
|
mockInfoService = jasmine.createSpyObj(
|
||||||
'infoService',
|
'infoService',
|
||||||
[ 'display' ]
|
[ 'display' ]
|
||||||
@ -52,9 +64,18 @@ define(
|
|||||||
);
|
);
|
||||||
mockScope = jasmine.createSpyObj('$scope', [ '$on' ]);
|
mockScope = jasmine.createSpyObj('$scope', [ '$on' ]);
|
||||||
mockOff = jasmine.createSpy('$off');
|
mockOff = jasmine.createSpy('$off');
|
||||||
|
testMetadata = [ { name: "Test name", value: "Test value" } ];
|
||||||
|
mockPromise = jasmine.createSpyObj('promise', ['then']);
|
||||||
|
mockHide = jasmine.createSpy('hide');
|
||||||
|
|
||||||
|
mockDomainObject.getModel.andReturn({ name: "Test Object" });
|
||||||
|
mockDomainObject.useCapability.andCallFake(function (c) {
|
||||||
|
return (c === 'metadata') ? testMetadata : undefined;
|
||||||
|
});
|
||||||
mockElement.scope.andReturn(mockScope);
|
mockElement.scope.andReturn(mockScope);
|
||||||
mockScope.$on.andReturn(mockOff);
|
mockScope.$on.andReturn(mockOff);
|
||||||
|
mockTimeout.andReturn(mockPromise);
|
||||||
|
mockInfoService.display.andReturn(mockHide);
|
||||||
|
|
||||||
gesture = new InfoGesture(
|
gesture = new InfoGesture(
|
||||||
mockTimeout,
|
mockTimeout,
|
||||||
@ -70,6 +91,66 @@ define(
|
|||||||
.toHaveBeenCalledWith('mouseenter', jasmine.any(Function));
|
.toHaveBeenCalledWith('mouseenter', jasmine.any(Function));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("displays an info bubble on a delay after mouseenter", function () {
|
||||||
|
fireEvent("mouseenter", { clientX: 1977, clientY: 42 });
|
||||||
|
expect(mockTimeout)
|
||||||
|
.toHaveBeenCalledWith(jasmine.any(Function), testDelay);
|
||||||
|
mockTimeout.mostRecentCall.args[0]();
|
||||||
|
expect(mockInfoService.display).toHaveBeenCalledWith(
|
||||||
|
jasmine.any(String),
|
||||||
|
"Test Object",
|
||||||
|
testMetadata,
|
||||||
|
[ 1977, 42 ]
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does not display info bubble if mouse leaves too soon", function () {
|
||||||
|
fireEvent("mouseenter", { clientX: 1977, clientY: 42 });
|
||||||
|
fireEvent("mouseleave", { clientX: 1977, clientY: 42 });
|
||||||
|
expect(mockTimeout.cancel).toHaveBeenCalledWith(mockPromise);
|
||||||
|
expect(mockInfoService.display).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("hides a shown bubble when mouse leaves", function () {
|
||||||
|
fireEvent("mouseenter", { clientX: 1977, clientY: 42 });
|
||||||
|
mockTimeout.mostRecentCall.args[0]();
|
||||||
|
expect(mockHide).not.toHaveBeenCalled(); // verify precondition
|
||||||
|
fireEvent("mouseleave", {});
|
||||||
|
expect(mockHide).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("tracks mouse position", function () {
|
||||||
|
fireEvent("mouseenter", { clientX: 1977, clientY: 42 });
|
||||||
|
fireEvent("mousemove", { clientX: 1999, clientY: 11 });
|
||||||
|
fireEvent("mousemove", { clientX: 1984, clientY: 11 });
|
||||||
|
mockTimeout.mostRecentCall.args[0]();
|
||||||
|
// Should have displayed at the latest observed mouse position
|
||||||
|
expect(mockInfoService.display).toHaveBeenCalledWith(
|
||||||
|
jasmine.any(String),
|
||||||
|
"Test Object",
|
||||||
|
testMetadata,
|
||||||
|
[ 1984, 11 ]
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("hides shown bubbles when destroyed", function () {
|
||||||
|
fireEvent("mouseenter", { clientX: 1977, clientY: 42 });
|
||||||
|
mockTimeout.mostRecentCall.args[0]();
|
||||||
|
expect(mockHide).not.toHaveBeenCalled(); // verify precondition
|
||||||
|
gesture.destroy();
|
||||||
|
expect(mockHide).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("detaches listeners when destroyed", function () {
|
||||||
|
fireEvent("mouseenter", { clientX: 1977, clientY: 42 });
|
||||||
|
gesture.destroy();
|
||||||
|
mockElement.on.calls.forEach(function (call) {
|
||||||
|
expect(mockElement.off).toHaveBeenCalledWith(
|
||||||
|
call.args[0],
|
||||||
|
call.args[1]
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user