mirror of
https://github.com/nasa/openmct.git
synced 2024-12-19 21:27:52 +00:00
[Mobile] Test mct-device
This commit is contained in:
parent
1e6c4732f1
commit
ae4313253c
@ -25,5 +25,141 @@ define(
|
||||
['../src/MCTDevice'],
|
||||
function (MCTDevice) {
|
||||
"use strict";
|
||||
|
||||
var JQLITE_METHODS = [ 'parent', 'append' ];
|
||||
|
||||
describe("The mct-device directive", function () {
|
||||
var mockAgentService,
|
||||
mockTransclude,
|
||||
mockElement,
|
||||
mockParent,
|
||||
mockClone,
|
||||
testAttrs,
|
||||
directive;
|
||||
|
||||
function link() {
|
||||
directive.link(null, mockElement, testAttrs, null, mockTransclude);
|
||||
}
|
||||
|
||||
beforeEach(function () {
|
||||
mockAgentService = jasmine.createSpyObj(
|
||||
"agentService",
|
||||
[ "isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape" ]
|
||||
);
|
||||
mockTransclude = jasmine.createSpy("$transclude");
|
||||
mockElement = jasmine.createSpyObj(name, JQLITE_METHODS);
|
||||
mockParent = jasmine.createSpyObj(name, JQLITE_METHODS);
|
||||
mockClone = jasmine.createSpyObj(name, JQLITE_METHODS);
|
||||
|
||||
mockElement.parent.andReturn(mockParent);
|
||||
|
||||
mockTransclude.andCallFake(function (fn) {
|
||||
fn(mockClone);
|
||||
});
|
||||
|
||||
// Look desktop-like by default
|
||||
mockAgentService.isLandscape.andReturn(true);
|
||||
|
||||
testAttrs = {};
|
||||
|
||||
directive = new MCTDevice(mockAgentService);
|
||||
});
|
||||
|
||||
it("is applicable at the attribute level", function () {
|
||||
expect(directive.restrict).toEqual("A");
|
||||
});
|
||||
|
||||
it("transcludes at the elmeent level", function () {
|
||||
expect(directive.transclude).toEqual('element');
|
||||
});
|
||||
|
||||
it("has a greater priority number than ng-if", function () {
|
||||
expect(directive.priority > 600).toBeTruthy();
|
||||
});
|
||||
|
||||
it("restricts element inclusion for mobile devices", function () {
|
||||
testAttrs.mctDevice = "mobile";
|
||||
link();
|
||||
expect(mockParent.append).not.toHaveBeenCalled();
|
||||
|
||||
mockAgentService.isMobile.andReturn(true);
|
||||
link();
|
||||
expect(mockParent.append).toHaveBeenCalledWith(mockClone);
|
||||
});
|
||||
|
||||
it("restricts element inclusion for tablet devices", function () {
|
||||
testAttrs.mctDevice = "tablet";
|
||||
mockAgentService.isMobile.andReturn(true);
|
||||
link();
|
||||
expect(mockParent.append).not.toHaveBeenCalled();
|
||||
|
||||
mockAgentService.isTablet.andReturn(true);
|
||||
link();
|
||||
expect(mockParent.append).toHaveBeenCalledWith(mockClone);
|
||||
});
|
||||
|
||||
it("restricts element inclusion for phone devices", function () {
|
||||
testAttrs.mctDevice = "phone";
|
||||
mockAgentService.isMobile.andReturn(true);
|
||||
link();
|
||||
expect(mockParent.append).not.toHaveBeenCalled();
|
||||
|
||||
mockAgentService.isPhone.andReturn(true);
|
||||
link();
|
||||
expect(mockParent.append).toHaveBeenCalledWith(mockClone);
|
||||
});
|
||||
|
||||
it("restricts element inclusion for desktop devices", function () {
|
||||
testAttrs.mctDevice = "desktop";
|
||||
mockAgentService.isMobile.andReturn(true);
|
||||
link();
|
||||
expect(mockParent.append).not.toHaveBeenCalled();
|
||||
|
||||
mockAgentService.isMobile.andReturn(false);
|
||||
link();
|
||||
expect(mockParent.append).toHaveBeenCalledWith(mockClone);
|
||||
});
|
||||
|
||||
it("restricts element inclusion for portrait orientation", function () {
|
||||
testAttrs.mctDevice = "portrait";
|
||||
link();
|
||||
expect(mockParent.append).not.toHaveBeenCalled();
|
||||
|
||||
mockAgentService.isPortrait.andReturn(true);
|
||||
link();
|
||||
expect(mockParent.append).toHaveBeenCalledWith(mockClone);
|
||||
});
|
||||
|
||||
it("restricts element inclusion for landscape orientation", function () {
|
||||
testAttrs.mctDevice = "landscape";
|
||||
mockAgentService.isLandscape.andReturn(false);
|
||||
mockAgentService.isPortrait.andReturn(true);
|
||||
link();
|
||||
expect(mockParent.append).not.toHaveBeenCalled();
|
||||
|
||||
mockAgentService.isLandscape.andReturn(true);
|
||||
link();
|
||||
expect(mockParent.append).toHaveBeenCalledWith(mockClone);
|
||||
});
|
||||
|
||||
it("allows multiple device characteristics to be requested", function () {
|
||||
// Won't try to test every permutation here, just
|
||||
// make sure the multi-characteristic feature has support.
|
||||
testAttrs.mctDevice = "portrait mobile";
|
||||
link();
|
||||
// Neither portrait nor mobile, not called
|
||||
expect(mockParent.append).not.toHaveBeenCalled();
|
||||
|
||||
mockAgentService.isPortrait.andReturn(true);
|
||||
link();
|
||||
|
||||
// Was portrait, but not mobile, so no
|
||||
expect(mockParent.append).not.toHaveBeenCalled();
|
||||
|
||||
mockAgentService.isMobile.andReturn(true);
|
||||
link();
|
||||
expect(mockParent.append).toHaveBeenCalledWith(mockClone);
|
||||
});
|
||||
});
|
||||
}
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user