mirror of https://github.com/sveltejs/svelte
				
				
				
			
							parent
							
								
									c9d61951c6
								
							
						
					
					
						commit
						c56ee71653
					
				@ -0,0 +1,42 @@
 | 
				
			||||
import { flushSync, tick } from 'svelte';
 | 
				
			||||
import { deferred } from '../../../../src/internal/shared/utils.js';
 | 
				
			||||
import { test } from '../../test';
 | 
				
			||||
 | 
				
			||||
/** @type {ReturnType<typeof deferred>} */
 | 
				
			||||
let d;
 | 
				
			||||
 | 
				
			||||
export default test({
 | 
				
			||||
	html: `<p>pending</p>`,
 | 
				
			||||
 | 
				
			||||
	get props() {
 | 
				
			||||
		d = deferred();
 | 
				
			||||
 | 
				
			||||
		return {
 | 
				
			||||
			promise: d.promise
 | 
				
			||||
		};
 | 
				
			||||
	},
 | 
				
			||||
 | 
				
			||||
	async test({ assert, target, component, raf }) {
 | 
				
			||||
		d.resolve('hello');
 | 
				
			||||
		await Promise.resolve();
 | 
				
			||||
		await Promise.resolve();
 | 
				
			||||
		await tick();
 | 
				
			||||
		flushSync();
 | 
				
			||||
		assert.htmlEqual(target.innerHTML, '<h1>hello</h1>');
 | 
				
			||||
 | 
				
			||||
		component.promise = (d = deferred()).promise;
 | 
				
			||||
		await tick();
 | 
				
			||||
		assert.htmlEqual(target.innerHTML, '<h1>hello</h1>');
 | 
				
			||||
 | 
				
			||||
		raf.tick(500);
 | 
				
			||||
		assert.htmlEqual(target.innerHTML, '<p>pending</p>');
 | 
				
			||||
 | 
				
			||||
		d.resolve('wheee');
 | 
				
			||||
		await tick();
 | 
				
			||||
		raf.tick(600);
 | 
				
			||||
		assert.htmlEqual(target.innerHTML, '<p>pending</p>');
 | 
				
			||||
 | 
				
			||||
		raf.tick(800);
 | 
				
			||||
		assert.htmlEqual(target.innerHTML, '<h1>wheee</h1>');
 | 
				
			||||
	}
 | 
				
			||||
});
 | 
				
			||||
@ -0,0 +1,11 @@
 | 
				
			||||
<script>
 | 
				
			||||
	let { promise } = $props();
 | 
				
			||||
</script>
 | 
				
			||||
 | 
				
			||||
<svelte:boundary>
 | 
				
			||||
	<h1>{await promise}</h1>
 | 
				
			||||
 | 
				
			||||
	{#snippet pending()}
 | 
				
			||||
		<p>pending</p>
 | 
				
			||||
	{/snippet}
 | 
				
			||||
</svelte:boundary>
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue