43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { createTestDb } from "@/shared/db/client"
|
|
import type { PGlite } from "@electric-sql/pglite"
|
|
import { beforeEach, describe, expect, it } from "vitest"
|
|
|
|
let db: PGlite
|
|
|
|
beforeEach(async () => {
|
|
db = await createTestDb()
|
|
})
|
|
|
|
const { getUserVote, saveUserVote, deleteUserVote } = await import(
|
|
"./user-votes-db"
|
|
)
|
|
|
|
describe("user-votes-db", () => {
|
|
it("returns null when no vote exists", async () => {
|
|
const vote = await getUserVote(db, 1)
|
|
expect(vote).toBeNull()
|
|
})
|
|
|
|
it("saves and retrieves a vote", async () => {
|
|
await saveUserVote(db, 1, "ja")
|
|
const vote = await getUserVote(db, 1)
|
|
expect(vote).not.toBeNull()
|
|
expect(vote?.vote).toBe("ja")
|
|
expect(vote?.legislation_id).toBe(1)
|
|
})
|
|
|
|
it("overwrites an existing vote", async () => {
|
|
await saveUserVote(db, 1, "ja")
|
|
await saveUserVote(db, 1, "nein")
|
|
const vote = await getUserVote(db, 1)
|
|
expect(vote?.vote).toBe("nein")
|
|
})
|
|
|
|
it("deletes a vote", async () => {
|
|
await saveUserVote(db, 1, "ja")
|
|
await deleteUserVote(db, 1)
|
|
const vote = await getUserVote(db, 1)
|
|
expect(vote).toBeNull()
|
|
})
|
|
})
|