Files
test_OgureNG/backend-django/backend/tests/pam/__init__.py
2022-11-08 21:19:51 +01:00

76 lines
3.1 KiB
Python

from django.test import TestCase
from django.urls import reverse
from rest_framework import status
import pandas as pd
from rest_framework.test import APIClient, APITestCase
from ...utils_extraction import to_table_pam
from ...models import (Administre, CustomUser, Decision, DecisionChoices,
Domaine, Filiere, FormationEmploi, Garnison, Poste,
RefGest, RefOrg, RefSvFil, SousVivier, Administres_Pams, Postes_Pams, PAM)
import datetime
class PamTestCase(TestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.date = datetime.date(2023,1,1)
cls.pam_2022 = PAM.objects.create(pam_id='2022',pam_date=datetime.date(2022,7,15), pam_libelle= "PAM de l'année 2022", pam_statut='PAM en cours')
cls.pam_2023 = PAM.objects.create(pam_id='2023',pam_date=datetime.date(2022,7,15), pam_libelle= "PAM de l'année 2023", pam_statut='PAM A+1')
def test_extraction_pam(self):
"""
Construit la table PAM qui servira à récuperer l'année du PAM et piloter l'affichage des données en fonction du bon pam pour chaque tables
Cloture le PAM en le sauvegardant dans un fichier excel
"""
annee_pam = str(self.date.year)
annee_pam_suivant = str(self.date.year + 1)
pam=pd.DataFrame(columns = ['pam_id','pam_date', 'pam_libelle','pam_statut'])
pam_id = annee_pam
pam_id_suivant = annee_pam_suivant
pam_libelle = f"PAM de l'année {annee_pam}"
pam_libelle_suivant = f"PAM de l'année {annee_pam_suivant}"
pam_date = self.date
pam_date_suivant = pam_date
pam_statut = "PAM en cours"
pam_statut_suivant = "PAM A+1"
sorg_id = "SORG"
sorg_libelle = "SORG"
sorg_statut = "SORG"
pam['pam_id'] = [pam_id,pam_id_suivant, sorg_id]
pam['pam_date'] = [pam_date,pam_date_suivant, pam_date]
pam['pam_libelle'] = [pam_libelle,pam_libelle_suivant,sorg_libelle]
pam['pam_statut'] = [pam_statut,pam_statut_suivant,sorg_statut]
return pam
def test_insertion_pam(self):
self.liste_create = []
self.liste_update = []
self.update_header = ['pam_date','pam_libelle','pam_statut']
self.df = self.test_extraction_pam()
for i in range(self.df.shape[0]):
self.pams = PAM.objects.filter(pam_id=self.df.at[i,'pam_id'])
self.pam = PAM(pam_id=self.df.at[i, 'pam_id'],pam_date=self.df.at[i, 'pam_date'], pam_libelle=self.df.at[i, 'pam_libelle'],
pam_statut=self.df.at[i, 'pam_statut'])
if self.pam.pam_id in self.pams.values_list('pam_id', flat = True):
self.liste_update.append(self.pam)
else:
cloture=PAM.objects.filter(pam_statut="PAM en cours")
cloture.update(pam_statut ="PAM clôturé")
self.liste_create.append(self.pam)
if self.liste_create:
PAM.objects.bulk_create(self.liste_create)
if self.liste_update:
PAM.objects.bulk_update(self.liste_update, fields=self.update_header)