Visitenbuch/tests/integration/query/patient.ts
2024-05-14 00:40:10 +02:00

149 lines
3.6 KiB
TypeScript

import { expect, test } from "vitest";
import {
newPatient,
getPatient,
getPatients,
updatePatient,
deletePatient,
newEntry,
hidePatient,
} from "$lib/server/query";
import { S1, S2 } from "$tests/helpers/testdata";
const SORT_ID = ["id"];
test("create patient", async () => {
const pId = await newPatient({
first_name: "Max",
last_name: "Müller",
age: 31,
room_id: 1,
});
const patient = await getPatient(pId);
expect(patient).toMatchObject({
id: pId,
first_name: "Max",
last_name: "Müller",
age: 31,
room: { id: 1, name: "R1.1", station: S1 },
});
});
test("update patient", async () => {
const data = {
first_name: "Max",
last_name: "Mustermann",
age: 66,
room_id: 2,
};
await updatePatient(1, data);
const patient = await getPatient(1);
expect(patient).toMatchObject({
first_name: "Max",
last_name: "Mustermann",
age: 66,
room: { id: 2 },
});
});
test("delete patient", async () => {
await deletePatient(1);
await expect(async () => getPatient(1)).rejects.toThrowError("No Patient found");
});
test("delete patient (restricted)", async () => {
// Patients should not be deleted if they have at least 1 entry
const pId = await newEntry(1, {
patient_id: 1,
version: {
category_id: null,
date: "2024-01-01",
priority: false,
text: "Hello World",
},
});
await expect(async () => deletePatient(pId)).rejects.toThrowError();
});
test("hide patient", async () => {
await hidePatient(1, true);
let patient = await getPatient(1);
expect(patient.hidden).toBe(true);
await hidePatient(1, false);
patient = await getPatient(1);
expect(patient.hidden).toBe(false);
});
test("get patients", async () => {
const patients = await getPatients({}, {}, SORT_ID);
expect(patients).toMatchObject({
items: [
{
id: 1,
first_name: "Andreas",
last_name: "Bergmann",
age: 22,
room: { id: 1, name: "R1.1", station: S1 },
},
{
id: 2,
first_name: "Manuela",
last_name: "Kortig",
age: 41,
room: { id: 2, name: "R1.2", station: S1 },
},
{
id: 3,
first_name: "Markus",
last_name: "Schuster",
age: 50,
room: { id: 3, name: "R2.1", station: S2 },
},
],
offset: 0,
total: 3,
});
});
test("get patients (pagination)", async () => {
const patients = await getPatients({}, { offset: 1, limit: 100 }, SORT_ID);
expect(patients.items).length(2);
expect(patients.items[0].id).toBe(2);
expect(patients.items[1].id).toBe(3);
expect(patients.offset).toBe(1);
expect(patients.total).toBe(3);
});
test("get patients (by room)", async () => {
const patients = await getPatients({ room: 1 }, {}, SORT_ID);
expect(patients.items).length(1);
expect(patients.items[0].id).toBe(1);
});
test("get patients (by station)", async () => {
const patients = await getPatients({ station: 1 }, {}, SORT_ID);
expect(patients.items).length(2);
expect(patients.items[0].id).toBe(1);
expect(patients.items[1].id).toBe(2);
});
test("get patients (hidden)", async () => {
await hidePatient(2, true);
let patients = await getPatients({ hidden: false }, {}, SORT_ID);
expect(patients.items).length(2);
expect(patients.items[0].id).toBe(1);
patients = await getPatients({ hidden: true }, {}, SORT_ID);
expect(patients.items).length(1);
expect(patients.items[0].id).toBe(2);
});
test("search patients", async () => {
const patients = await getPatients({ search: "Schustr" }, {}, SORT_ID);
expect(patients.items).length(1);
expect(patients.items[0].id).toBe(3);
});