Jelajahi Sumber

minor fixes and add todos

Olivier Massot 2 tahun lalu
induk
melakukan
3402a0d2a1

+ 7 - 2
services/data/entityManager.ts

@@ -27,6 +27,8 @@ class EntityManager {
         this.apiRequestService = apiRequestService
     }
 
+    // TODO: renommer les variables entity en 'instance'
+
     /**
      * Return the repository for the model
      *
@@ -84,7 +86,8 @@ class EntityManager {
         let entity = repository.make(properties)
 
         // Keep track of the entity's model
-        entity.setModel(model)
+        // TODO : attendre de voir si utile ou non
+        // entity.setModel(model)
 
         // @ts-ignore
         if (!properties.hasOwnProperty('id') || !properties.id) {
@@ -105,6 +108,7 @@ class EntityManager {
      * @param entity
      */
     public save(model: typeof ApiResource, entity: ApiResource): ApiResource {
+        this.saveInitialState(model, entity)
         return this.getRepository(model).save(entity)
     }
 
@@ -216,7 +220,8 @@ class EntityManager {
      */
     public async persist(model: typeof ApiModel, entity: ApiModel) {
         // Recast in case class definition has been "lost"
-        entity = this.cast(model, entity)
+        // TODO: attendre de voir si cette ligne est nécessaire
+        // entity = this.cast(model, entity)
 
         let url = UrlUtils.join('api', model.entity)
         let response

+ 1 - 1
stores/sse.ts

@@ -15,7 +15,7 @@ export const useSseStore = defineStore('sse', () => {
     switch (event.operation) {
       case "update":
       case "create":
-        await em.persist(model, JSON.parse(event.data))
+        await em.save(model, JSON.parse(event.data))
         break
 
       case "delete":

+ 0 - 57
tests/readme.md

@@ -1,57 +0,0 @@
-# Tests unitaires
-
-Ce répertoire contient les tests unitaires du front Vue.js
-
-> Plus d'infos:
-> 
-> * https://vuejs.org/guide/scaling-up/testing.html#unit-testing
-> * https://test-utils.vuejs.org/
-> * https://plugins.jetbrains.com/plugin/19220-vitest-runner
-
-## Exécuter les tests
-
-Pour exécuter les tests, lancer :
-
-    yarn test
-
-## Mocking
-
-#### Différentes façons pour Mocker
-
-    import axios from 'axios'
-    import { NuxtAxiosInstance } from '@nuxtjs/axios'
-    jest.mock('axios')
-    const mockNuxtAxios = axios as jest.Mocked<NuxtAxiosInstance>
-    mockNuxtAxios.$get = jest.fn().mockReturnValue({})
-
-Ou
-
-    import DataProvider from "~/services/dataProvider/dataProvider";
-    jest.mock('~/services/dataProvider/dataProvider');
-    const DataProviderMock = DataProvider as jest.MockedClass<typeof DataProvider>;
-    DataProviderMock.prototype.invoke.mockImplementation(async () => true)
-
-Ou
-
-    import VueI18n from "vue-i18n";
-    const VueI18nMock = VueI18n as jest.MockedClass<typeof VueI18n>;
-    VueI18nMock.prototype.t = jest.fn().mockReturnValue('siret_error')
-
-Ou, si on définit le fichier ~/services/dataProvider/__mocks__/dataProvider.ts avec l'implémenation de invoke :
-
-    const mock = jest.fn().mockImplementation(() => {
-        return {invoke: () => {
-            return true
-        }};
-    });
-    export default mock;
-
-Alors on appelle useHandleSiret comme cela : 
-
-    const siretResponse = UseChecker.useHandleSiret(new DataProviderMock())
-
-
-ATTENTION : dans ce cas cette déclaration sera prioritaire sur les autres façons de mocker l'implémentation et on ne peut pas avoir 2 types de mock différents pour
-cette classe dans l'application.
-
-Pour pouvoir gérer l'implémentation à la volée, il ne faut pas qu'il y ait le fichier dans le dossier __mocks__

+ 2 - 3
tests/units/services/data/entityManager.test.ts

@@ -4,9 +4,8 @@ import ApiResource from "~/models/ApiResource";
 import ApiModel from "~/models/ApiModel";
 import ApiRequestService from "~/services/data/apiRequestService";
 import {Element, Repository} from "pinia-orm";
-import {ApiResponse} from "~/types/data";
-import HydraDenormalizer from "~/services/data/normalizer/hydraDenormalizer";
 
+// TODO: vérifier si les classes Testable sont bien nécessaires, sinon les supprimer
 class TestableEntityManager extends EntityManager {
     public cast(model: typeof ApiResource, entity: ApiResource): ApiResource { return super.cast(model, entity) }
     public async saveResponseAsEntity(model: typeof ApiModel, response: Response) { return super.saveResponseAsEntity(model, response) }
@@ -73,7 +72,7 @@ describe('newInstance', () => {
     test('simple call', () => {
         const properties = { 'id': 1 }
 
-        // @ts-ignore
+        // @ts-ignore TODO: voir à factoriser
         const repo = vi.fn() as Repository<ApiResource>
 
         // @ts-ignore