git » sdk » main » tree

[main] / test / TestXmppJsStream.hx

package test;

import borogove.streams.XmppJsStream;
import js.lib.Promise;
import utest.Assert;
import utest.Async;

@:access(borogove.streams.XmppJsStream)
class TestXmppJsStream extends utest.Test {
	public function testTimeoutDisconnects(async:Async) {
		final createFakeClient = (options:Dynamic) -> {
			final client = new XmppJsClient(options);
			Reflect.setField(
				client,
				"start",
				() -> Promise.reject(timeoutError())
			);
			Reflect.setField(
				client,
				"disconnect",
				() -> {
					// I just want to check that we called disconnect.
					// async.done() isn't sufficient by itself because
					// my test needs at least one assertion.
					Assert.isTrue(true);
					async.done();
					return Promise.resolve(null);
				}
			);

			return client;
		};

		final stream = new XmppJsStream(createFakeClient);
		stream.connect("test@example.com/test", null);
	}

	private function timeoutError() {
		final error = new js.lib.Error();
		error.name = "TimeoutError";

		return error;
	}
}