import { effect, tick, track, untrack } from 'ripple';

describe('basic client > utilities', () => {
	it('tick function', async () => {
		let resolve: () => void;
		const promise = new Promise<void>((res) => (resolve = res));

		component Basic() {
			let &[value] = track(0);
			effect(() => {
				untrack(() => {
					value++;
					tick().then(() => resolve());
				});
			});
			<p>{value}</p>
		}
		render(Basic);

		const p = container.querySelector('p');
		expect(p.textContent).toBe('0');
		await promise;
		expect(p.textContent).toBe('1');
	});
});
