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

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')