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));

		function Basic() {
			return <>
				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');
	});
});
