When you create a Listener for PlayerLoginEvent and log the event.getPlayer().getChunk() it will not much the one you get from PlayerSpawnLocationEvent.
In my case it showed (-13, 3) and then (-14, 2) for X Z respectively.
I have added the test plugin and the server log. From the log file look at line 99 and 100
What I would expect is the PlayerLoginEvent to report null for the chunk or to throw an exception if the Location isn't correct yet.
After some testing I set the server spawn and logged out, after logging in it took the spawns location as my Location.