Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamically setting bounds errors asynchronously in test #683

Open
kmccullough opened this issue Nov 4, 2022 · 1 comment
Open

Dynamically setting bounds errors asynchronously in test #683

kmccullough opened this issue Nov 4, 2022 · 1 comment

Comments

@kmccullough
Copy link

I have an if block in my template to choose between layers.marker or layers.geojson depending on my data, so I was updating my @bounds={{this.bounds}} with this.bounds = layer.getBounds() inside @onLayeradd. This seems to work fine, but for some reason in test--some few tests after the actual test that contains the map--I get the following error that fails a later unrelated test:

TypeError: Cannot read properties of undefined (reading '_leaflet_pos')
Source: 	
TypeError: Cannot read properties of undefined (reading '_leaflet_pos')
    at getPosition (http://localhost:7357/assets/vendor.js:62595:14)
    at NewClass._getMapPanePos (http://localhost:7357/assets/vendor.js:64633:12)
    at NewClass._getNewPixelOrigin (http://localhost:7357/assets/vendor.js:64650:69)
    at NewClass._move (http://localhost:7357/assets/vendor.js:64369:30)
    at NewClass._onZoomTransitionEnd (http://localhost:7357/assets/vendor.js:64871:10)

Stack trace:

getPosition (leaflet-src.js:2563)
_getMapPanePos (leaflet-src.js:4601)
_getNewPixelOrigin (leaflet-src.js:4618)
_move (leaflet-src.js:4337)
_onZoomTransitionEnd (leaflet-src.js:4839)
setTimeout (async)
_animateZoom (leaflet-src.js:4827)
(anonymous) (leaflet-src.js:4792)
requestAnimationFrame (async)
requestAnimFrame (leaflet-src.js:245)
_tryAnimatedZoom (leaflet-src.js:4789)
setView (leaflet-src.js:3308)
fitBounds (leaflet-src.js:3408)
updateOption (base-layer.js:270)
(anonymous) (runtime.js:7012)
compute (did-update.js:32)
getValue (index.js:2931)
(anonymous) (manager.js:399)
(anonymous) (reference.js:170)
track (validator.js:798)
valueForRef (reference.js:169)
evaluate (runtime.js:2599)
_execute (runtime.js:5231)
(anonymous) (runtime.js:5201)
runInTrackingTransaction (validator.js:158)
execute (runtime.js:5201)
rerender (runtime.js:5580)
(anonymous) (index.js:5395)
(anonymous) (index.js:5361)
(anonymous) (index.js:5713)
inTransaction (runtime.js:5020)
_renderRoots (index.js:5692)
_renderRootsTransaction (index.js:5745)
_revalidate (index.js:5786)
invoke (backburner.js:351)
flush (backburner.js:241)
flush (backburner.js:447)
_end (backburner.js:999)
end (backburner.js:729)
_run (backburner.js:1054)
_join (backburner.js:1028)
join (backburner.js:779)
loopEnd (index.js:5503)
_trigger (backburner.js:1123)
_end (backburner.js:1018)
Backburner._boundAutorunEnd (backburner.js:648)
Promise.then (async)
iterations (backburner.js:28)
flush (index.js:45)
_scheduleAutorun (backburner.js:1218)
_end (backburner.js:1009)
Backburner._boundAutorunEnd (backburner.js:648)
Promise.then (async)
iterations (backburner.js:28)
flush (index.js:45)
_scheduleAutorun (backburner.js:1218)
_end (backburner.js:1009)
Backburner._boundAutorunEnd (backburner.js:648)
Promise.then (async)
iterations (backburner.js:28)
flush (index.js:45)
_scheduleAutorun (backburner.js:1218)
_end (backburner.js:1009)
Backburner._boundAutorunEnd (backburner.js:648)
Promise.then (async)
iterations (backburner.js:28)
flush (index.js:45)
_scheduleAutorun (backburner.js:1218)
_end (backburner.js:1009)
Backburner._boundAutorunEnd (backburner.js:648)
Promise.then (async)
iterations (backburner.js:28)
flush (index.js:45)
_scheduleAutorun (backburner.js:1218)
_end (backburner.js:1009)
Backburner._boundAutorunEnd (backburner.js:648)
Promise.then (async)
iterations (backburner.js:28)
flush (index.js:45)
_scheduleAutorun (backburner.js:1218)
_end (backburner.js:1009)
Backburner._boundAutorunEnd (backburner.js:648)
Promise.then (async)
iterations (backburner.js:28)
flush (index.js:45)
_scheduleAutorun (backburner.js:1218)
_end (backburner.js:1009)
Backburner._boundAutorunEnd (backburner.js:648)
Promise.then (async)
iterations (backburner.js:28)
flush (index.js:45)
_scheduleAutorun (backburner.js:1218)
_ensureInstance (backburner.js:1206)
schedule (backburner.js:805)
(anonymous) (rsvp.js:14)
then (rsvp.js:560)
resolve (router_js.js:1165)
Transition (router_js.js:301)
getTransitionByIntent (router_js.js:1611)
transitionByIntent (router_js.js:1539)
doTransition (router_js.js:1687)
handleURL (router_js.js:2147)
_doURLTransition (router.js:565)
handleURL (router.js:559)
visit (instance.js:251)
(anonymous) (setup-application-context.js:114)
Promise.then (async)
visit (setup-application-context.js:113)
(anonymous) (leaflet-test.js:8)
runTest (qunit.js:465)
run (qunit.js:463)
eval (qunit.js:505)
processTaskQueue (qunit.js:390)
advanceTaskQueue (qunit.js:384)
advance (qunit.js:382)
eval (qunit.js:591)
setTimeout (async)
internalStart (qunit.js:591)
release (qunit.js:575)
resolve (qunit.js:576)
Promise.then (async)
resolvePromise (qunit.js:578)
callHook (qunit.js:467)
runHook (qunit.js:476)
processTaskQueue (qunit.js:390)
advanceTaskQueue (qunit.js:384)
advance (qunit.js:382)
eval (qunit.js:591)
setTimeout (async)
internalStart (qunit.js:591)
release (qunit.js:575)
resolve (qunit.js:576)
Promise.then (async)
resolvePromise (qunit.js:578)
callHook (qunit.js:467)
runHook (qunit.js:476)
processTaskQueue (qunit.js:390)
eval (qunit.js:390)
Promise.then (async)
processTaskQueue (qunit.js:390)
eval (qunit.js:390)
Promise.then (async)
processTaskQueue (qunit.js:390)
advanceTaskQueue (qunit.js:384)
advance (qunit.js:382)
advanceTestQueue (qunit.js:392)
advance (qunit.js:382)
unblockAndAdvanceQueue (qunit.js:751)
Promise.then (async)
begin (qunit.js:759)
eval (qunit.js:751)
setTimeout (async)
scheduleBegin (qunit.js:751)
load (qunit.js:750)
load (async)
addEvent (qunit.js:852)
eval (qunit.js:944)
eval (qunit.js:963)
eval (qunit.js:1260)
./node_modules/qunit/qunit/qunit.js (chunk.vendors-node_modules_qunit_qunit_qunit_js.ddea705634baced826d9.js:17)
__webpack_require__ (chunk.tests.9e760c6f445887b02182.js:53)
eval (tests.js:15)
Module.exports (loader.js:106)
Module._reify (loader.js:143)
Module.reify (loader.js:130)
Module.exports (loader.js:104)
requireModule (loader.js:27)
(anonymous) (tests-suffix.js:1)

I changed my code to set bounds from the start (L.geoJSON(this.geoJSON).getBounds()) and it the error seems to go away. I'll be using this new pattern from here on out, but figured I'd put up an issue considering if @bounds is intended to be updatable.

@miguelcobain
Copy link
Owner

Would it be possible to submit a PR with a failing test?
I could take a look at that.
Perhaps that would unveil the bug under the hood.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants