# Tests unitaires

Ce répertoire contient les tests unitaires du front Vue.js

> Plus d'infos:
> * https://vue-test-utils.vuejs.org/guides/#getting-started
> * https://vue-test-utils.vuejs.org/guides/#using-with-typescript

## Exécuter les tests

Pour exécuter les tests, se connecter au docker admin, et lancer la commande:

    yarn test

## Mocking

** Différentes façon 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 appel useHandleSiret comme cela : const siretResponse = UseChecker.useHandleSiret(new DataProviderMock())

 ATTENTION : dans ce cas cette déclaration sera prioritaire sur les autres façon de moker l'implémentation et on ne peut pas avoir 2 type de mokes 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 dosier __mocks__
