import { expect } from "chai";
import { Offline } from "test/helper/Offline";
import { Transport } from "./Transport";
import { TransportEvent } from "./TransportEvent";

describe("TransportEvent", () => {

	it("can be created and disposed", () => {
		return Offline((context) => {
			const transport = new Transport({ context });
			const event = new TransportEvent(transport, {
				time: 0,
			});
			event.dispose();
		});
	});

	it("has a unique id", () => {
		return Offline((context) => {
			const transport = new Transport({ context });
			const event = new TransportEvent(transport, {
				time: 0,
			});
			expect(event.id).to.be.a("number");
			event.dispose();
		});
	});

	it("can invoke the callback", () => {
		let wasInvoked = false;
		return Offline((context) => {
			const transport = new Transport({ context });
			const event = new TransportEvent(transport, {
				callback: (time) => {
					expect(time).to.equal(100);
					wasInvoked = true;
				},
				time: 0,
			});
			event.invoke(100);
		}).then(() => {
			expect(wasInvoked).to.equal(true);
		});
	});
});
