Add most of components and prepare for V1 Release
This commit is contained in:
65
test/maps-not-loaded.js
Normal file
65
test/maps-not-loaded.js
Normal file
@@ -0,0 +1,65 @@
|
||||
import Lab from 'lab'
|
||||
import assert from 'assert'
|
||||
import {getPage, loadFile} from './test-setup/test-common'
|
||||
|
||||
export const lab = Lab.script()
|
||||
|
||||
lab.experiment('On-demand API loading', {timeout: 15000}, function () {
|
||||
let page = null
|
||||
|
||||
async function loadPage () {
|
||||
return loadFile(page, './test-pages/test-page-without-maps.html', {
|
||||
waitUntil: 'networkidle0'
|
||||
})
|
||||
}
|
||||
|
||||
async function mountVue () {
|
||||
return page.evaluateHandle(() =>
|
||||
new Promise((resolve) => {
|
||||
new Vue({
|
||||
data: {
|
||||
loadMap: false,
|
||||
},
|
||||
mounted () {
|
||||
resolve(this)
|
||||
},
|
||||
}).$mount('#test1')
|
||||
}))
|
||||
}
|
||||
|
||||
lab.before({timeout: 15000}, getPage(p => { page = p }))
|
||||
|
||||
lab.test('Maps API is loaded only on demand', async function () {
|
||||
await loadPage()
|
||||
const vue = await mountVue()
|
||||
|
||||
assert(await page.evaluate(
|
||||
(vue) => {
|
||||
const allScriptElements = Array.prototype.slice.call(document.getElementsByTagName('SCRIPT'), 0)
|
||||
return (
|
||||
allScriptElements.every(s => !s.src.toLowerCase().includes('maps.googleapis.com')) &&
|
||||
!window.google
|
||||
)
|
||||
},
|
||||
vue), 'Google APIs are not loaded')
|
||||
|
||||
assert(await page.evaluate(
|
||||
(vue) => {
|
||||
return Promise.resolve(null)
|
||||
.then(() => {
|
||||
vue.loadMap = true
|
||||
|
||||
return new Promise((resolve) => setTimeout(resolve, 100))
|
||||
})
|
||||
.then(() => vue.$refs.gmap.$mapPromise.then(() => !!window.google))
|
||||
.then((isGoogleLoaded) => {
|
||||
const allScriptElements = Array.prototype.slice.call(document.getElementsByTagName('SCRIPT'), 0)
|
||||
return (
|
||||
isGoogleLoaded &&
|
||||
allScriptElements.some(s => s.src.toLowerCase().includes('maps.googleapis.com'))
|
||||
)
|
||||
})
|
||||
},
|
||||
vue), 'Google APIs are loaded')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user