import { test, expect } from "bun:test";
import { Presets } from "../src";
import { runPresetUntilLaunched } from "../src/cmd";
import { EventOutcome, runTest, TestCase } from "../src/test-case";
import { getApis, GlobalTimeout } from "../src/utils";
import { commonUnsignedSteps } from "./common";

const PRESET: Presets = Presets.FakeKsm;

test(
	`unsigned solution on ${PRESET}`,
	async () => {
		const { killZn, paraLog } = await runPresetUntilLaunched(PRESET);
		const apis = await getApis();

		const expectedValidatorSetCount = await apis.paraApi.query.Staking.ValidatorCount.getValue();
		const pages = 16;
		const minerPages = 4;
		const steps = commonUnsignedSteps(expectedValidatorSetCount, minerPages, pages, true, apis);

		const testCase = new TestCase(
			steps,
			true,
			() => {
				killZn();
			}
		);

		const outcome = await runTest(testCase, apis, paraLog);
		expect(outcome).toEqual(EventOutcome.Done);
	},
	{ timeout: GlobalTimeout }
);
