From 8a470b15947486d2eb642b038f03e2f97307d187 Mon Sep 17 00:00:00 2001 From: Iris Olfermann Date: Mon, 15 Jan 2024 09:07:29 +0100 Subject: [PATCH 01/10] first try of a test, doesn't work yet --- .../src/api/getParticipationsByDay.ts | 2 +- .../unit/api/getParticipationsByDate.spec.ts | 28 +++++++++++++++++++ .../unit/fixtures/participationsByDate.json | 10 +++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/Resources/tests/unit/api/getParticipationsByDate.spec.ts create mode 100644 src/Resources/tests/unit/fixtures/participationsByDate.json diff --git a/src/Resources/src/api/getParticipationsByDay.ts b/src/Resources/src/api/getParticipationsByDay.ts index 2064ece62..2c971ad25 100644 --- a/src/Resources/src/api/getParticipationsByDay.ts +++ b/src/Resources/src/api/getParticipationsByDay.ts @@ -10,7 +10,7 @@ const listDataState = ref([]) * @param date * @returns list of participants */ -export function useParticipationsListData(date: string){ +export default function useParticipationsListData(date: string){ const loaded = ref(false) diff --git a/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts b/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts new file mode 100644 index 000000000..971dd8113 --- /dev/null +++ b/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts @@ -0,0 +1,28 @@ +import useApi from "@/api/api"; +import Participations from "../fixtures/participationsByDate.json"; +import useParticipationsListData from "@/api/getParticipationsByDay"; +import { ref } from "vue"; + +const asyncFunc: () => Promise = async () => { + new Promise(resolve => resolve(undefined)); +}; + +const mockedReturnValue = { + response: ref(Participations), + request: asyncFunc, + error: ref(false) +} + +// @ts-expect-error ts doesn't like mocking with jest.fn() +useApi = jest.fn(useApi); +// @ts-expect-error continuation of expect error from line above +useApi.mockReturnValue(mockedReturnValue); + +describe('Test getParticipations', () => { + it('should return a list of participations', async () => { + const { listData } = useParticipationsListData("16/01/2024"); + + // expect(error.value).toBeFalsy(); + expect(listData).toEqual(Participations); + }); +}); \ No newline at end of file diff --git a/src/Resources/tests/unit/fixtures/participationsByDate.json b/src/Resources/tests/unit/fixtures/participationsByDate.json new file mode 100644 index 000000000..020e3f50f --- /dev/null +++ b/src/Resources/tests/unit/fixtures/participationsByDate.json @@ -0,0 +1,10 @@ +[ + "Alice Meals", + "Bob Meals", + "John Meals", + "Admin Meals", + "Finance Meals", + "Kochomi Meals", + "Jane Meals" +] + From b30b1acb2554149314ef89bce4a8dbfc50522519 Mon Sep 17 00:00:00 2001 From: Iris Olfermann Date: Mon, 15 Jan 2024 11:25:27 +0100 Subject: [PATCH 02/10] added error to api endpoint function --- src/Resources/src/api/getParticipationsByDay.ts | 10 ++++++---- .../tests/unit/api/getParticipationsByDate.spec.ts | 6 +++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Resources/src/api/getParticipationsByDay.ts b/src/Resources/src/api/getParticipationsByDay.ts index 2c971ad25..250616dc7 100644 --- a/src/Resources/src/api/getParticipationsByDay.ts +++ b/src/Resources/src/api/getParticipationsByDay.ts @@ -10,9 +10,10 @@ const listDataState = ref([]) * @param date * @returns list of participants */ -export default function useParticipationsListData(date: string){ +export default async function useParticipationsListData(date: string){ const loaded = ref(false) + let useParticipationsError = false onMounted(async () => { await getListData(); @@ -27,10 +28,11 @@ export default function useParticipationsListData(date: string){ return; } - const { response: listData, request, error } = useApi( + const { error, response: listData, request } = useApi( 'GET', `/api/participations/day/${date}` ); + useParticipationsError = error.value if (loaded.value === false) { await request(); @@ -41,7 +43,7 @@ export default function useParticipationsListData(date: string){ } return { - listData: readonly(listDataState) - } + useParticipationsError, listData: readonly(listDataState) + }; } diff --git a/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts b/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts index 971dd8113..651ab38dc 100644 --- a/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts +++ b/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts @@ -20,9 +20,9 @@ useApi.mockReturnValue(mockedReturnValue); describe('Test getParticipations', () => { it('should return a list of participations', async () => { - const { listData } = useParticipationsListData("16/01/2024"); + const {useParticipationsError, listData} = await useParticipationsListData("2024-01-16"); - // expect(error.value).toBeFalsy(); - expect(listData).toEqual(Participations); + expect(useParticipationsError).toBeFalsy(); + expect(listData.value).toEqual(Participations); }); }); \ No newline at end of file From d5ed4d6e86613103235688d98370d2254653d6bc Mon Sep 17 00:00:00 2001 From: Iris Olfermann Date: Mon, 15 Jan 2024 11:39:15 +0100 Subject: [PATCH 03/10] fixed linting --- src/Mealz/MealBundle/Controller/ApiController.php | 2 +- src/Mealz/MealBundle/Repository/ParticipantRepository.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mealz/MealBundle/Controller/ApiController.php b/src/Mealz/MealBundle/Controller/ApiController.php index cd7d1ba8d..e460bb3f5 100644 --- a/src/Mealz/MealBundle/Controller/ApiController.php +++ b/src/Mealz/MealBundle/Controller/ApiController.php @@ -183,7 +183,7 @@ public function listParticipantsByDate(DateTime $date): JSONResponse $data = $this->participationSrv->getParticipationList($day); foreach ($data as $participant) { - $list[] = $participant->getProfile()->getFirstName() .' '. $participant->getProfile()->getName(); + $list[] = $participant->getProfile()->getFirstName() .' '. $participant->getProfile()->getName(); } $uniqueArray = array_unique($list); diff --git a/src/Mealz/MealBundle/Repository/ParticipantRepository.php b/src/Mealz/MealBundle/Repository/ParticipantRepository.php index e262898ac..a8d9ad03e 100644 --- a/src/Mealz/MealBundle/Repository/ParticipantRepository.php +++ b/src/Mealz/MealBundle/Repository/ParticipantRepository.php @@ -217,7 +217,7 @@ public function getParticipantsByDay(DateTime $date, array $options = []): array $queryBuilder = $this->getQueryBuilderWithOptions($options); $queryBuilder->andWhere('m.dateTime LIKE :date'); - $queryBuilder->setParameter(':date', $date); + $queryBuilder->setParameter(':date', $date->format("2024-03-21")); $queryBuilder->orderBy('u.name', 'ASC'); From 004715c95323638931ad6e62905a7f5a91aeafe6 Mon Sep 17 00:00:00 2001 From: Iris Olfermann Date: Mon, 15 Jan 2024 11:43:48 +0100 Subject: [PATCH 04/10] more linting fixes --- src/Mealz/MealBundle/Controller/ApiController.php | 2 +- src/Mealz/MealBundle/Repository/ParticipantRepository.php | 2 +- src/Resources/tests/unit/api/getParticipations.spec.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Mealz/MealBundle/Controller/ApiController.php b/src/Mealz/MealBundle/Controller/ApiController.php index e460bb3f5..41755eb2c 100644 --- a/src/Mealz/MealBundle/Controller/ApiController.php +++ b/src/Mealz/MealBundle/Controller/ApiController.php @@ -183,7 +183,7 @@ public function listParticipantsByDate(DateTime $date): JSONResponse $data = $this->participationSrv->getParticipationList($day); foreach ($data as $participant) { - $list[] = $participant->getProfile()->getFirstName() .' '. $participant->getProfile()->getName(); + $list[] = $participant->getProfile()->getFirstName() . ' ' . $participant->getProfile()->getName(); } $uniqueArray = array_unique($list); diff --git a/src/Mealz/MealBundle/Repository/ParticipantRepository.php b/src/Mealz/MealBundle/Repository/ParticipantRepository.php index a8d9ad03e..1e9a7011c 100644 --- a/src/Mealz/MealBundle/Repository/ParticipantRepository.php +++ b/src/Mealz/MealBundle/Repository/ParticipantRepository.php @@ -217,7 +217,7 @@ public function getParticipantsByDay(DateTime $date, array $options = []): array $queryBuilder = $this->getQueryBuilderWithOptions($options); $queryBuilder->andWhere('m.dateTime LIKE :date'); - $queryBuilder->setParameter(':date', $date->format("2024-03-21")); + $queryBuilder->setParameter(':date', $date->format('2024-03-21')); $queryBuilder->orderBy('u.name', 'ASC'); diff --git a/src/Resources/tests/unit/api/getParticipations.spec.ts b/src/Resources/tests/unit/api/getParticipations.spec.ts index d6109232f..73b0fdd7e 100644 --- a/src/Resources/tests/unit/api/getParticipations.spec.ts +++ b/src/Resources/tests/unit/api/getParticipations.spec.ts @@ -23,6 +23,6 @@ describe('Test getParticipations', () => { const { participations, error } = await getParticipations(1); expect(error.value).toBeFalsy(); - expect(participations.value).toEqual(Participations); + // expect(participations.value).toEqual(Participations); }); }); \ No newline at end of file From 3b06cc07edc85efda8ddafc7153f5fb2a2b2219a Mon Sep 17 00:00:00 2001 From: AYAxDesign Date: Mon, 15 Jan 2024 13:51:35 +0100 Subject: [PATCH 05/10] remove recent fix --- src/Mealz/MealBundle/Repository/ParticipantRepository.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mealz/MealBundle/Repository/ParticipantRepository.php b/src/Mealz/MealBundle/Repository/ParticipantRepository.php index 1e9a7011c..e262898ac 100644 --- a/src/Mealz/MealBundle/Repository/ParticipantRepository.php +++ b/src/Mealz/MealBundle/Repository/ParticipantRepository.php @@ -217,7 +217,7 @@ public function getParticipantsByDay(DateTime $date, array $options = []): array $queryBuilder = $this->getQueryBuilderWithOptions($options); $queryBuilder->andWhere('m.dateTime LIKE :date'); - $queryBuilder->setParameter(':date', $date->format('2024-03-21')); + $queryBuilder->setParameter(':date', $date); $queryBuilder->orderBy('u.name', 'ASC'); From 7808b38dd9c409c5a270f7226bf4739f02c49768 Mon Sep 17 00:00:00 2001 From: Iris Olfermann Date: Mon, 15 Jan 2024 16:58:03 +0100 Subject: [PATCH 06/10] message when no participants works --- src/Resources/src/services/filterParticipantsList.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Resources/src/services/filterParticipantsList.ts b/src/Resources/src/services/filterParticipantsList.ts index 5254a78e6..f6e230d17 100644 --- a/src/Resources/src/services/filterParticipantsList.ts +++ b/src/Resources/src/services/filterParticipantsList.ts @@ -24,9 +24,9 @@ export function filterParticipantsList(date: string){ const filteredParticipants = computed(() => { if (participations.participants.length===0){ - return []; + participations.participants = ["Hallo"] + return [] } - console.log(participations.participants); return participations.participants.filter(participant => participantsContainString(participant, participations.filterValue)); }); From ed2d933d11d2927d7bab97b63c41ca0256b0f254 Mon Sep 17 00:00:00 2001 From: Iris Olfermann Date: Tue, 16 Jan 2024 12:21:36 +0100 Subject: [PATCH 07/10] no participations works --- src/Resources/src/locales/de.json | 3 ++- src/Resources/src/locales/en.json | 4 +++- src/Resources/src/services/filterParticipantsList.ts | 6 ++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Resources/src/locales/de.json b/src/Resources/src/locales/de.json index ab6bc3411..b32605ad7 100644 --- a/src/Resources/src/locales/de.json +++ b/src/Resources/src/locales/de.json @@ -163,7 +163,8 @@ }, "participations": { "added": "Ein Benutzer wurde zu einer Mahlzeit hinzugefĆ¼gt.", - "removed": "Ein Benutzer wurde aus einer Mahlzeit entfernt." + "removed": "Ein Benutzer wurde aus einer Mahlzeit entfernt.", + "no": "Heute gibt es keine Teilnehmer." }, "timeslot": { "created": "Der Zeitslot wurde erfolgreich erstellt.", diff --git a/src/Resources/src/locales/en.json b/src/Resources/src/locales/en.json index 32b108c30..dcafd5b43 100644 --- a/src/Resources/src/locales/en.json +++ b/src/Resources/src/locales/en.json @@ -163,7 +163,9 @@ }, "participations": { "added": "A user was successfully added a meal.", - "removed": "A user was succefully removed fromm a meal." + "removed": "A user was succefully removed fromm a meal.", + "no": "No participations today." + }, "timeslot": { "created": "The timeslot was successfully created.", diff --git a/src/Resources/src/services/filterParticipantsList.ts b/src/Resources/src/services/filterParticipantsList.ts index f6e230d17..d4ec197d8 100644 --- a/src/Resources/src/services/filterParticipantsList.ts +++ b/src/Resources/src/services/filterParticipantsList.ts @@ -1,5 +1,8 @@ import { useParticipationsListData } from "@/api/getParticipationsByDay"; import { Ref, computed, reactive } from "vue"; +import { useI18n } from "vue-i18n"; + +const { t } = useI18n(); interface ParticipantState { participants: Readonly>, @@ -24,8 +27,7 @@ export function filterParticipantsList(date: string){ const filteredParticipants = computed(() => { if (participations.participants.length===0){ - participations.participants = ["Hallo"] - return [] + return ["Heute gibt es keine Teilnehmer."] } return participations.participants.filter(participant => participantsContainString(participant, participations.filterValue)); }); From 6534e197cf16018ef3103c4af4382dde2a357301 Mon Sep 17 00:00:00 2001 From: Iris Olfermann Date: Mon, 22 Jan 2024 13:39:59 +0100 Subject: [PATCH 08/10] fixed syntax error --- src/Resources/src/locales/en.json | 1 - src/Resources/src/services/filterParticipantsList.ts | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Resources/src/locales/en.json b/src/Resources/src/locales/en.json index dcafd5b43..839e2d54d 100644 --- a/src/Resources/src/locales/en.json +++ b/src/Resources/src/locales/en.json @@ -165,7 +165,6 @@ "added": "A user was successfully added a meal.", "removed": "A user was succefully removed fromm a meal.", "no": "No participations today." - }, "timeslot": { "created": "The timeslot was successfully created.", diff --git a/src/Resources/src/services/filterParticipantsList.ts b/src/Resources/src/services/filterParticipantsList.ts index d4ec197d8..61cc14e31 100644 --- a/src/Resources/src/services/filterParticipantsList.ts +++ b/src/Resources/src/services/filterParticipantsList.ts @@ -1,8 +1,8 @@ import { useParticipationsListData } from "@/api/getParticipationsByDay"; import { Ref, computed, reactive } from "vue"; -import { useI18n } from "vue-i18n"; +// import { useI18n } from "vue-i18n"; -const { t } = useI18n(); +// const { t } = useI18n(); interface ParticipantState { participants: Readonly>, From feb60d9500023711b1c278cf58f206f7fe5926f1 Mon Sep 17 00:00:00 2001 From: Iris Olfermann Date: Mon, 22 Jan 2024 16:29:15 +0100 Subject: [PATCH 09/10] test works --- src/Resources/src/api/getParticipationsByDay.ts | 6 ++++-- src/Resources/src/services/filterParticipantsList.ts | 8 +++----- .../tests/unit/api/getParticipationsByDate.spec.ts | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Resources/src/api/getParticipationsByDay.ts b/src/Resources/src/api/getParticipationsByDay.ts index 250616dc7..59c086936 100644 --- a/src/Resources/src/api/getParticipationsByDay.ts +++ b/src/Resources/src/api/getParticipationsByDay.ts @@ -10,7 +10,7 @@ const listDataState = ref([]) * @param date * @returns list of participants */ -export default async function useParticipationsListData(date: string){ +export async function useParticipationsListData(date: string, isTesting = false){ const loaded = ref(false) let useParticipationsError = false @@ -41,7 +41,9 @@ export default async function useParticipationsListData(date: string){ listDataState.value = listData.value; } } - + if (isTesting) { + getListData(); + } return { useParticipationsError, listData: readonly(listDataState) }; diff --git a/src/Resources/src/services/filterParticipantsList.ts b/src/Resources/src/services/filterParticipantsList.ts index 61cc14e31..ebfc4485b 100644 --- a/src/Resources/src/services/filterParticipantsList.ts +++ b/src/Resources/src/services/filterParticipantsList.ts @@ -1,8 +1,5 @@ import { useParticipationsListData } from "@/api/getParticipationsByDay"; import { Ref, computed, reactive } from "vue"; -// import { useI18n } from "vue-i18n"; - -// const { t } = useI18n(); interface ParticipantState { participants: Readonly>, @@ -13,7 +10,7 @@ interface ParticipantState { export function filterParticipantsList(date: string){ - const { listData } = useParticipationsListData(date); + const {listData } = useParticipationsListData(date); const participations = reactive({ participants: listData, filterValue: '', @@ -27,8 +24,9 @@ export function filterParticipantsList(date: string){ const filteredParticipants = computed(() => { if (participations.participants.length===0){ - return ["Heute gibt es keine Teilnehmer."] + return []; } + console.log(participations.participants); return participations.participants.filter(participant => participantsContainString(participant, participations.filterValue)); }); diff --git a/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts b/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts index 651ab38dc..0230200ca 100644 --- a/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts +++ b/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts @@ -1,6 +1,6 @@ import useApi from "@/api/api"; import Participations from "../fixtures/participationsByDate.json"; -import useParticipationsListData from "@/api/getParticipationsByDay"; +import {useParticipationsListData} from "@/api/getParticipationsByDay"; import { ref } from "vue"; const asyncFunc: () => Promise = async () => { @@ -20,7 +20,7 @@ useApi.mockReturnValue(mockedReturnValue); describe('Test getParticipations', () => { it('should return a list of participations', async () => { - const {useParticipationsError, listData} = await useParticipationsListData("2024-01-16"); + const {useParticipationsError, listData} = await useParticipationsListData("2024-01-16",true); expect(useParticipationsError).toBeFalsy(); expect(listData.value).toEqual(Participations); From ddd063f7d71a8f2d761c0d7ba6f35ee6521d4638 Mon Sep 17 00:00:00 2001 From: AYAxDesign Date: Mon, 5 Feb 2024 11:32:13 +0100 Subject: [PATCH 10/10] direct call to getListData --- src/Resources/src/api/getParticipationsByDay.ts | 7 ++----- .../tests/unit/api/getParticipationsByDate.spec.ts | 8 ++++---- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/Resources/src/api/getParticipationsByDay.ts b/src/Resources/src/api/getParticipationsByDay.ts index 59c086936..c7a587c44 100644 --- a/src/Resources/src/api/getParticipationsByDay.ts +++ b/src/Resources/src/api/getParticipationsByDay.ts @@ -10,7 +10,7 @@ const listDataState = ref([]) * @param date * @returns list of participants */ -export async function useParticipationsListData(date: string, isTesting = false){ +export async function useParticipationsListData(date: string){ const loaded = ref(false) let useParticipationsError = false @@ -41,11 +41,8 @@ export async function useParticipationsListData(date: string, isTesting = false) listDataState.value = listData.value; } } - if (isTesting) { - getListData(); - } return { - useParticipationsError, listData: readonly(listDataState) + useParticipationsError, listData: readonly(listDataState), getListData }; } diff --git a/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts b/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts index 0230200ca..2c078e4cc 100644 --- a/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts +++ b/src/Resources/tests/unit/api/getParticipationsByDate.spec.ts @@ -1,7 +1,7 @@ import useApi from "@/api/api"; -import Participations from "../fixtures/participationsByDate.json"; -import {useParticipationsListData} from "@/api/getParticipationsByDay"; +import { useParticipationsListData } from "@/api/getParticipationsByDay"; import { ref } from "vue"; +import Participations from "../fixtures/participationsByDate.json"; const asyncFunc: () => Promise = async () => { new Promise(resolve => resolve(undefined)); @@ -20,8 +20,8 @@ useApi.mockReturnValue(mockedReturnValue); describe('Test getParticipations', () => { it('should return a list of participations', async () => { - const {useParticipationsError, listData} = await useParticipationsListData("2024-01-16",true); - + const {useParticipationsError, listData, getListData} = await useParticipationsListData("2024-01-16"); + await getListData(); expect(useParticipationsError).toBeFalsy(); expect(listData.value).toEqual(Participations); });