You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.9 KiB
32 lines
1.9 KiB
const fs = require('fs')
|
|
const vm = require('vm')
|
|
const assert = require('assert')
|
|
const path = require('path')
|
|
let request
|
|
const store = { state: { vuex_my_role: 1, vuex_token: 'test-token' } }
|
|
const source = fs.readFileSync(path.join(__dirname, '../libs/tianditu.js'), 'utf8')
|
|
.replace(/^import .*$/gm, '').replace('export default class Tianditu', 'class Tianditu')
|
|
const context = { ROOTPATH: 'https://example.test', store, uni: { request: options => { request = options } } }
|
|
vm.createContext(context)
|
|
vm.runInContext(source + '\nthis.client = new Tianditu()', context)
|
|
let success, failure, complete
|
|
context.client.reverseGeocoder({ location: { latitude: 31.7, longitude: 119.9 }, success: data => { success = data }, fail: error => { failure = error }, complete: () => { complete = true } })
|
|
assert.equal(request.url, 'https://example.test/api/nurse/map/reverse-geocode')
|
|
assert.equal(request.header.Authorization, 'Bearer test-token')
|
|
assert.equal(request.data.coordinate_type, 'gcj02')
|
|
assert.equal(request.data.lng, 119.9)
|
|
request.success({ statusCode: 200, data: { result: { address: '天地图地址', formatted_addresses: { recommend: '' } } } })
|
|
assert.equal(success.result.address + success.result.formatted_addresses.recommend, '天地图地址')
|
|
request.complete({})
|
|
assert(complete)
|
|
request.success({ statusCode: 200, data: { errcode: 502, errmsg: '服务不可用' } })
|
|
assert.equal(failure.message, '服务不可用')
|
|
store.state.vuex_my_role = 2
|
|
context.client.reverseGeocoder({ location: { latitude: 31.7, longitude: 119.9 } })
|
|
assert.equal(request.url, 'https://example.test/api/admin/map/reverse-geocode')
|
|
request = undefined
|
|
context.client.reverseGeocoder({ location: { latitude: '', longitude: 119.9 }, fail: error => { failure = error } })
|
|
assert.equal(request, undefined)
|
|
assert.equal(failure.message, '缺少有效定位坐标')
|
|
console.log('PASS: nurse/admin routing, auth, GCJ-02, result compatibility, error callbacks, invalid coordinates')
|