// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-nocheck
import { test, expect } from "vitest";
import { loadProjectInMemory } from "../project/loadProjectInMemory.js";
import { newProject } from "../project/newProject.js";
import { applyChanges } from "./applyChanges.js";
import { loadDatabaseInMemory } from "sqlite-wasm-kysely";
import { initDb } from "../database/initDb.js";
test.skip("it should be able to delete", async () => {
    const project = await loadProjectInMemory({
        blob: await newProject(),
    });
    const changes = [
        {
            id: "1",
            operation: "create",
            file_id: "mock",
            plugin_key: "mock",
            type: "bundle",
            meta: { id: "mock" },
            value: {
                id: "mock",
                declarations: [],
            },
        },
        {
            id: "2",
            parent_id: "1",
            operation: "update",
            file_id: "mock",
            plugin_key: "mock",
            type: "bundle",
            meta: {
                id: "mock",
            },
            value: {
                id: "mock",
                declarations: [],
            },
        },
        {
            id: "3",
            parent_id: "2",
            operation: "delete",
            file_id: "mock",
            plugin_key: "mock",
            meta: {
                id: "mock",
            },
            type: "bundle",
            value: undefined,
        },
    ];
    await project.db
        .insertInto("bundle")
        .values({
        id: "mock",
    })
        .execute();
    const dbFile = await project.lix.db
        .selectFrom("file")
        .selectAll()
        .where("path", "=", "/db.sqlite")
        .executeTakeFirstOrThrow();
    const dbFileAfter = await applyChanges({
        lix: project.lix,
        file: dbFile,
        changes: changes,
    });
    const db = initDb({
        sqlite: await loadDatabaseInMemory(dbFileAfter.fileData),
    });
    const bundles = await db.selectFrom("bundle").selectAll().execute();
    expect(bundles).toHaveLength(0);
});
test.skip("it should be able to upsert (insert & update)", async () => {
    const project = await loadProjectInMemory({
        blob: await newProject(),
    });
    const changes = [
        {
            id: "1",
            parent_id: undefined,
            operation: "create",
            file_id: "mock",
            plugin_key: "mock",
            type: "bundle",
            meta: { id: "mock" },
            value: {
                id: "mock",
                declarations: [],
            },
        },
        {
            id: "2",
            parent_id: "1",
            operation: "update",
            file_id: "mock",
            plugin_key: "mock",
            type: "bundle",
            meta: {
                id: "mock",
            },
            value: {
                id: "mock",
                declarations: [],
            },
        },
    ];
    await project.db
        .insertInto("bundle")
        .values({
        id: "mock",
    })
        .execute();
    const dbFile = await project.lix.db
        .selectFrom("file")
        .selectAll()
        .where("path", "=", "/db.sqlite")
        .executeTakeFirstOrThrow();
    const dbFileAfter = await applyChanges({
        lix: project.lix,
        file: dbFile,
        changes: changes,
    });
    const db = initDb({
        sqlite: await loadDatabaseInMemory(dbFileAfter.fileData),
    });
    const bundles = await db.selectFrom("bundle").selectAll().execute();
    expect(bundles).toHaveLength(1);
});
//# sourceMappingURL=applyChanges.test.js.map