Bonjour,
Je me permets de demander votre aide pour une classe test.
Je suis en train de tester si mon code est couvert via la console developer de salesforce mais ça me met 0%, alors je ne comprends pas. Ai je oublié de faire une manip!
Voila ma classe (appelé depuis un case beforeUpdate) qui pour faire simple récupère une valeur dans l'objet CaseMilestone via la condtion ID = l'id du case passé en paramètre, puis l'insère dans le case courant :
Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public without sharing class AP15CaseMajDate{ public static void setDatePropositionCommerciale (List<Case> lstCase){ System.debug('###################### -> AP15CaseMajDate.setDatePropositionCommerciale - BEGIN -'); set<Id> setIdCaseUpdate = new set<Id>(); for(Case cCase: lstCase) { setIdCaseUpdate.add(cCase.Id); } //List récupérant la date de la fermeture du jalon T2 CompletionDate de la table CaseMilestone) List<CaseMilestone> lstCaseMilestone = [Select MilestoneTypeId, Id, CompletionDate, CaseId From CaseMilestone WHERE CaseId IN :setIdCaseUpdate AND MilestoneTypeId IN (:System.Label.Case_MilestoneTypeId_T2_ContactReseauPhysique, :System.Label.Case_MilestoneTypeId_T2_DossierReseauPhysique_DossierReseauPlateau)]; Map<Id, DateTime> mapIdCaseDateT2 = new Map<Id, DateTime>(); for(CaseMilestone m: lstCaseMilestone) { if(m.CompletionDate != null) { mapIdCaseDateT2.put(m.CaseId, m.CompletionDate); System.debug('###################### -> mapIdCaseDateT2 m.CompletionDate' + m.CompletionDate); } } for(Case monCase: lstCase) { if(mapIdCaseDateT2.containskey(monCase.Id)) { //mettre la date CompletionDate dans la date de proposition commerciale //CompletionDate est de type dateTime et Date_proposition_financement__c est de type Date //utilisation de Date.newinstance pour pour avoir le bon format DateTime datePropCommerciale = mapIdCaseDateT2.get(monCase.Id); Date DtePropComm = Date.newinstance(datePropCommerciale.year(), datePropCommerciale.month(), datePropCommerciale.day()); monCase.Date_proposition_financement__c = DtePropComm; } } System.debug('###################### -> AP15CaseMajDate.setDatePropositionCommerciale - END'); } }
Ma classe de test:
Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 @isTest private class AP15CaseMajDateTest{ static testmethod void setDatePropositionCommercialeTest(){ // TO DO: implement unit test //Création du jeu d'enregistrement List<Sobject> lstObjInsert = SmartFactory.createFullCaseEnv('0'); List<Case> caseList = new List<Case>(); for(Integer j=0;j<1;j++){ //création de l'apport Emprunteur conseiller user Case c1 = SmartFactory.CreateCase(System.label.Case_Recordtype_PhysiqueContact_Id, lstObjInsert[6].Id, lstObjInsert[7].Id, lstObjInsert[0].Id); caseList.add(c1); } //Insertion des cases Database.insert(caseList, true); set<Id> setId = new set<Id>(); for(Case cId:caseList) { setId.add(cId.Id); } //List récupérant le CaseMilestone que je veux List<CaseMilestone> CaseMls = [select CaseId, CompletionDate from CaseMilestone where caseId IN :setId]; Map<Id, DateTime> mapIdCaseDateT2 = new Map<Id, DateTime>(); for(CaseMilestone monCaseMilestone: CaseMls) { if(monCaseMilestone.CompletionDate != null) { mapIdCaseDateT2.put(monCaseMilestone.CaseId, monCaseMilestone.CompletionDate); } } for(Case monCase: caseList) { if(mapIdCaseDateT2.containskey(monCase.Id)) { DateTime datePropCommerciale = mapIdCaseDateT2.get(monCase.Id); Date DtePropComm = Date.newinstance(datePropCommerciale.year(), datePropCommerciale.month(), datePropCommerciale.day()); monCase.Date_proposition_financement__c = DtePropComm; System.assertEquals(monCase.Date_proposition_financement__c, DtePropComm); } } } }
Avez-vous une idée? Je suis débutant donc les classes test je ne maitrise pas totalement désolé :/
Merci
Partager