import { describe, expect, test } from "bun:test";
import { concatBytes, FLUSH_PKT, pktLine } from "./pktline";
import { appliedCommands } from "./receive-report";
const commands = [{ ref: "refs/heads/main" }, { ref: "refs/heads/dev" }];
describe("appliedCommands", () => {
test("returns only refs acknowledged with ok", () => {
const report = concatBytes([
pktLine("unpack ok\n"),
pktLine("ok refs/heads/main\n"),
pktLine("ng refs/heads/dev x\n"),
FLUSH_PKT,
]);
expect(appliedCommands(report, commands)).toEqual([{ ref: "refs/heads/main" }]);
});
test("treats a report without ok lines as nothing applied", () => {
expect(appliedCommands(concatBytes([pktLine("unpack error\n"), FLUSH_PKT]), commands)).toEqual([]);
expect(appliedCommands(new Uint8Array(), commands)).toEqual([]);
});
test("reads ok lines inside side-band packets", () => {
const inner = concatBytes([pktLine("unpack ok\n"), pktLine("ok refs/heads/dev\n"), FLUSH_PKT]);
const report = concatBytes([pktLine(concatBytes([new Uint8Array([1]), inner])), FLUSH_PKT]);
expect(appliedCommands(report, commands)).toEqual([{ ref: "refs/heads/dev" }]);
});
});