149 lines
3.6 KiB
TypeScript
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);
|
|
});
|