2015-07-23 16:28:36 +00:00
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2016-07-12 23:21:58 +00:00
* Open MCT , Copyright ( c ) 2014 - 2016 , United States Government
2015-07-23 16:28:36 +00:00
* as represented by the Administrator of the National Aeronautics and Space
* Administration . All rights reserved .
*
2016-07-12 23:21:58 +00:00
* Open MCT is licensed under the Apache License , Version 2.0 ( the
2015-07-23 16:28:36 +00:00
* "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 .
*
2016-07-12 23:21:58 +00:00
* Open MCT includes source code licensed under additional open source
2015-07-23 16:28:36 +00:00
* 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 .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
2015-09-18 21:53:14 +00:00
2015-07-23 16:28:36 +00:00
define (
2015-09-18 21:53:14 +00:00
[ "../src/AgentService" ] ,
2015-08-04 17:11:25 +00:00
function ( AgentService ) {
2015-07-23 16:28:36 +00:00
2015-09-18 21:53:14 +00:00
var TEST _USER _AGENTS = {
DESKTOP : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36" ,
2015-09-18 22:12:48 +00:00
IPAD : "Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53" ,
IPHONE : "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53"
2015-09-18 21:53:14 +00:00
} ;
describe ( "The AgentService" , function ( ) {
var testWindow , agentService ;
2015-07-23 16:28:36 +00:00
beforeEach ( function ( ) {
2015-09-18 21:53:14 +00:00
testWindow = {
innerWidth : 640 ,
innerHeight : 480 ,
navigator : {
userAgent : TEST _USER _AGENTS . DESKTOP
}
} ;
} ) ;
it ( "recognizes desktop devices as non-mobile" , function ( ) {
testWindow . navigator . userAgent = TEST _USER _AGENTS . DESKTOP ;
agentService = new AgentService ( testWindow ) ;
expect ( agentService . isMobile ( ) ) . toBeFalsy ( ) ;
expect ( agentService . isPhone ( ) ) . toBeFalsy ( ) ;
expect ( agentService . isTablet ( ) ) . toBeFalsy ( ) ;
2015-07-23 16:28:36 +00:00
} ) ;
2015-09-18 21:53:14 +00:00
it ( "detects iPhones" , function ( ) {
testWindow . navigator . userAgent = TEST _USER _AGENTS . IPHONE ;
agentService = new AgentService ( testWindow ) ;
expect ( agentService . isMobile ( ) ) . toBeTruthy ( ) ;
expect ( agentService . isPhone ( ) ) . toBeTruthy ( ) ;
expect ( agentService . isTablet ( ) ) . toBeFalsy ( ) ;
} ) ;
it ( "detects iPads" , function ( ) {
testWindow . navigator . userAgent = TEST _USER _AGENTS . IPAD ;
agentService = new AgentService ( testWindow ) ;
expect ( agentService . isMobile ( ) ) . toBeTruthy ( ) ;
expect ( agentService . isPhone ( ) ) . toBeFalsy ( ) ;
expect ( agentService . isTablet ( ) ) . toBeTruthy ( ) ;
2015-07-23 16:28:36 +00:00
} ) ;
2015-09-18 21:53:14 +00:00
it ( "detects display orientation" , function ( ) {
2016-05-20 18:39:49 +00:00
agentService = new AgentService ( testWindow ) ;
2015-09-18 21:53:14 +00:00
testWindow . innerWidth = 1024 ;
testWindow . innerHeight = 400 ;
expect ( agentService . isPortrait ( ) ) . toBeFalsy ( ) ;
expect ( agentService . isLandscape ( ) ) . toBeTruthy ( ) ;
testWindow . innerWidth = 400 ;
testWindow . innerHeight = 1024 ;
expect ( agentService . isPortrait ( ) ) . toBeTruthy ( ) ;
expect ( agentService . isLandscape ( ) ) . toBeFalsy ( ) ;
2015-07-23 16:28:36 +00:00
} ) ;
2015-12-04 22:12:00 +00:00
2015-12-29 20:58:24 +00:00
it ( "detects touch support" , function ( ) {
testWindow . ontouchstart = null ;
expect ( new AgentService ( testWindow ) . isTouch ( ) )
. toBe ( true ) ;
delete testWindow . ontouchstart ;
expect ( new AgentService ( testWindow ) . isTouch ( ) )
. toBe ( false ) ;
} ) ;
2015-12-04 22:12:00 +00:00
it ( "allows for checking browser type" , function ( ) {
testWindow . navigator . userAgent = "Chromezilla Safarifox" ;
agentService = new AgentService ( testWindow ) ;
expect ( agentService . isBrowser ( "Chrome" ) ) . toBe ( true ) ;
expect ( agentService . isBrowser ( "Firefox" ) ) . toBe ( false ) ;
} ) ;
2015-07-23 16:28:36 +00:00
} ) ;
}
2015-09-18 21:53:14 +00:00
) ;