let fulfil;

let thePromise = new Promise(f => {
	fulfil = f;
});

export default {
	data: {
		thePromise
	},

	html: `
		<p>loading...</p>
	`,

	test(assert, component, target) {
		fulfil(42);

		return thePromise
			.then(() => {
				assert.htmlEqual(target.innerHTML, `
					<p>the value is 42</p>
				`);

				let reject;

				thePromise = new Promise((f, r) => {
					reject = r;
				});

				component.set({
					thePromise
				});

				assert.htmlEqual(target.innerHTML, `
					<p>loading...</p>
				`);

				reject(new Error('something broke'));

				return thePromise.catch(() => {});
			})
			.then(() => {
				assert.htmlEqual(target.innerHTML, `
					<p>oh no! something broke</p>
				`);
			});
	}
};