-
Notifications
You must be signed in to change notification settings - Fork 1
/
test.js
87 lines (73 loc) · 1.86 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
Name: google-geolocation - test.js
Description: Google Maps Geolocation API for Node.js (unofficial)
Author: Franklin (https://fvdm.com)
License: Unlicense (public domain, see LICENSE file)
Source & docs: https://github.com/fvdm/nodejs-geolocation
*/
const dotest = require( 'dotest' );
const app = require( './' );
const config = {
key: process.env.KEY,
timeout: process.env.TIMEOUT || 5000,
};
dotest.add( 'exports', async test => {
test()
.isFunction( 'fail', 'exports', app )
.done()
;
} );
dotest.add( 'Function', async test => {
let error;
let data;
try {
data = await app( {
key: config.key,
timeout: config.timeout,
wifiAccessPoints: [
{
macAddress: '01:23:45:67:89:AB',
signalStrength: -65,
signalToNoiseRatio: 40,
},
],
} );
}
catch ( err ) {
error = err;
}
test( error )
.isObject( 'fail', 'data', data )
.isNotEmpty( 'fail', 'data', data )
.isObject( 'fail', 'data.location', data?.location )
.isNumber( 'fail', 'data.location.lat', data?.location?.lat )
.isNumber( 'fail', 'data.location.lng', data?.location?.lng )
.isNumber( 'fail', 'data.accuracy', data?.accuracy )
.done()
;
} );
dotest.add( 'API error', async test => {
let error;
let data;
try {
data = await app( {
key: 'invalid',
considerIp: false,
carrier: 0,
} );
}
catch ( err ) {
error = err;
}
test()
.isError( 'fail', 'error', error )
.isNotEmpty( 'fail', 'error.message', error?.message )
.isNumber( 'fail', 'error.code', error?.code )
.isArray( 'fail', 'error.errors', error?.errors )
.isString( 'fail', 'error.reason', error?.reason )
.isArray( 'fail', 'error.details', error?.details )
.isUndefined( 'fail', 'data', data )
.done()
;
} );
dotest.run();