33 * For licensing, see LICENSE.md.
44 */
55
6- import env , { isEdge , isMac , isGecko } from '../src/env' ;
6+ import env , { isEdge , isMac , isGecko , isSafari } from '../src/env' ;
77
88function toLowerCase ( str ) {
99 return str . toLowerCase ( ) ;
1010}
1111
1212describe ( 'Env' , ( ) => {
13- beforeEach ( ( ) => {
14- } ) ;
15-
1613 it ( 'is an object' , ( ) => {
1714 expect ( env ) . to . be . an ( 'object' ) ;
1815 } ) ;
@@ -35,6 +32,12 @@ describe( 'Env', () => {
3532 } ) ;
3633 } ) ;
3734
35+ describe ( 'isSafari' , ( ) => {
36+ it ( 'is a boolean' , ( ) => {
37+ expect ( env . isSafari ) . to . be . a ( 'boolean' ) ;
38+ } ) ;
39+ } ) ;
40+
3841 describe ( 'isMac()' , ( ) => {
3942 it ( 'returns true for macintosh UA strings' , ( ) => {
4043 expect ( isMac ( 'macintosh' ) ) . to . be . true ;
@@ -103,4 +106,32 @@ describe( 'Env', () => {
103106 ) ) ) . to . be . false ;
104107 } ) ;
105108 } ) ;
109+
110+ describe ( 'isSafari()' , ( ) => {
111+ /* eslint-disable max-len */
112+ it ( 'returns true for Safari UA strings' , ( ) => {
113+ expect ( isSafari ( toLowerCase (
114+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15'
115+ ) ) ) . to . be . true ;
116+
117+ expect ( isSafari ( toLowerCase (
118+ 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1'
119+ ) ) ) . to . be . true ;
120+ } ) ;
121+
122+ it ( 'returns false for non-Safari UA strings' , ( ) => {
123+ expect ( isSafari ( toLowerCase (
124+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
125+ ) ) ) . to . be . false ;
126+
127+ expect ( isSafari ( toLowerCase (
128+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'
129+ ) ) ) . to . be . false ;
130+
131+ expect ( isSafari ( toLowerCase (
132+ 'Mozilla/5.0 (Linux; Android 7.1; Mi A1 Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36'
133+ ) ) ) . to . be . false ;
134+ } ) ;
135+ /* eslint-enable max-len */
136+ } ) ;
106137} ) ;
0 commit comments