-package org.lilie.services.eliot.notes\r
-\r
-import grails.test.GrailsUnitTestCase\r
-import org.lilie.services.eliot.test.PopulationTestEtablissement\r
-import org.lilie.services.eliot.scolarite.StructureEnseignement\r
-import org.lilie.services.eliot.notes.brevet.BrevetNoteService\r
-import org.lilie.services.eliot.scolarite.Etablissement\r
-import org.lilie.services.eliot.scolarite.Personne\r
-import org.lilie.services.eliot.test.LocalInitDonneesCommunesTestService\r
-import org.lilie.services.eliot.scolarite.anneescolaire.AnneeScolaireService\r
-import org.lilie.services.eliot.scolarite.structureenseignement.LocalStructureEnseignementService\r
-import org.lilie.services.eliot.scolarite.personne.LocalPersonneService\r
-import org.lilie.services.eliot.brevet.BrevetEpreuve\r
-import org.lilie.services.eliot.brevet.BrevetSerie\r
-import org.lilie.services.eliot.test.PopulationTestActeur\r
-import org.lilie.services.eliot.annuaire.SecuriteSession\r
-import org.lilie.services.eliot.brevet.BrevetNote\r
-import org.lilie.services.eliot.notes.brevet.BrevetRelEpreuveMatiereService\r
-import org.lilie.services.eliot.scolarite.Matiere\r
-import org.lilie.services.eliot.scolarite.matiere.MatiereService\r
-import org.lilie.services.eliot.notes.resultat.eleve.ResultatEleveServicePeriodeService\r
-import org.lilie.services.eliot.notes.scolarite.NotesServiceService\r
-import org.lilie.services.eliot.scolarite.Service\r
-import org.lilie.services.eliot.scolarite.Periode\r
-import org.lilie.services.eliot.notes.scolarite.NotesPeriodeService\r
-import org.lilie.services.eliot.scolarite.Enseignement\r
-import org.lilie.services.eliot.notes.scolarite.NotesEnseignementService\r
-import org.lilie.services.eliot.notes.resultat.eleve.AppreciationEleveEnseignementPeriodeService\r
-import org.lilie.services.eliot.scolarite.RelPeriodeServiceService\r
-import org.lilie.services.eliot.scolarite.RelPeriodeServiceParams\r
-import org.lilie.services.eliot.notes.test.InitDonneesNotesTestService\r
-import org.lilie.services.eliot.notes.brevet.BrevetNoteInfo\r
-import org.lilie.services.eliot.scolarite.AnneeScolaire\r
-import org.lilie.services.eliot.textes.TypeActivite\r
-import org.lilie.services.eliot.textes.TypeActiviteParDefaut\r
-import org.lilie.services.eliot.scolarite.IntervalleEnum\r
-import java.math.RoundingMode\r
-import org.lilie.services.eliot.test.ProprieteScolariteTestUtilService\r
-\r
-/**\r
- * Testes de BrevetNoteService\r
- * @author msan\r
- */\r
-class BrevetNoteServiceTests extends GrailsUnitTestCase {\r
-\r
- BrevetNoteService brevetNoteService\r
- LocalInitDonneesCommunesTestService localInitDonneesCommunesTestService\r
- LocalStructureEnseignementService localStructureEnseignementService\r
- AnneeScolaireService anneeScolaireService\r
- LocalPersonneService localPersonneService\r
- BrevetRelEpreuveMatiereService brevetRelEpreuveMatiereService\r
- MatiereService matiereService\r
- ResultatEleveServicePeriodeService resultatEleveServicePeriodeService\r
- NotesServiceService notesServiceService\r
- NotesPeriodeService notesPeriodeService\r
- NotesEnseignementService notesEnseignementService\r
- AppreciationEleveEnseignementPeriodeService appreciationEleveEnseignementPeriodeService\r
- RelPeriodeServiceService relPeriodeServiceService\r
- InitDonneesNotesTestService initDonneesNotesTestService\r
- ProprieteScolariteTestUtilService proprieteScolariteTestUtilService\r
-\r
- Etablissement etablissement = null\r
- StructureEnseignement classe = null\r
- Personne eleve1 = null\r
- Personne eleve2 = null\r
-\r
- Personne prof1 = null\r
- Personne prof2 = null\r
-\r
- BrevetEpreuve epreuve = null\r
- BrevetEpreuve epreuveSport = null\r
- BrevetSerie serie = null\r
- SecuriteSession securiteSessionDirection = null\r
-\r
- Matiere matiere1 = null\r
- Service service1 = null\r
- Enseignement enseignement1 = null\r
- Enseignement enseignement2 = null\r
-\r
- Periode periodeAnnee = null\r
-\r
- AnneeScolaire anneeScolaire = null\r
-\r
- protected void setUp() {\r
- super.setUp()\r
-\r
- anneeScolaire = anneeScolaireService.anneeScolaireEnCours()\r
-\r
- etablissement = localInitDonneesCommunesTestService.getEtablissement(\r
- PopulationTestEtablissement.ETABLISSEMENT_9\r
- )\r
-\r
- securiteSessionDirection = localInitDonneesCommunesTestService.getSecuriteSession(\r
- PopulationTestActeur.DIRECTION_5\r
- )\r
-\r
- classe = localStructureEnseignementService.creeStructureEnseignement(\r
- 'TEST-1',\r
- StructureEnseignement.TYPE_CLASSE,\r
- etablissement,\r
- anneeScolaire)\r
-\r
- eleve1 = localPersonneService.creePersonne("nom1", "eleve prenom1")\r
- eleve2 = localPersonneService.creePersonne("nom2", "eleve prenom2")\r
- prof1 = localPersonneService.creePersonne("nom1", "prof prenom1")\r
- prof2 = localPersonneService.creePersonne("nom2", "prof prenom2")\r
-\r
- proprieteScolariteTestUtilService.ajouteEleveDansStructureEnseignement(eleve1, classe)\r
- proprieteScolariteTestUtilService.ajouteEleveDansStructureEnseignement(eleve2, classe)\r
-\r
- serie = BrevetSerie.findByLibelleCourtAndAnneeScolaire(\r
- "Générale",\r
- anneeScolaire\r
- )\r
-\r
- epreuve = serie.epreuves.toList().sort { it.code }.get(0) // FRANÇAIS, max 20, AB\r
-\r
- epreuveSport = serie.epreuves.toList().find { it.isSport() }\r
-\r
- matiere1 = matiereService.creeMatiereManuel(\r
- etablissement,\r
- 'MAT1',\r
- 'Mat 1',\r
- false\r
- )\r
-\r
- notesPeriodeService.creePeriodesNotationPourStructureEnseignement(classe)\r
-\r
- periodeAnnee = classe.getPeriodeAnnee()\r
-\r
- service1 = notesServiceService.creeService(\r
- securiteSessionDirection,\r
- matiere1,\r
- classe\r
- )\r
-\r
- enseignement1 = notesEnseignementService.creeEnseignement(\r
- prof1.autorite,\r
- service1\r
- )\r
-\r
- enseignement2 = notesEnseignementService.creeEnseignement(\r
- prof2.autorite,\r
- service1\r
- )\r
- }\r
-\r
- /**\r
- * cas epreuve - 1 matiere fix\r
- */\r
- void testActualisationEpreuve1matiereFixe() {\r
- // test les donnees recuperes\r
-\r
- brevetRelEpreuveMatiereService.majRelEpreuveMatieres(\r
- epreuve,\r
- [matiere1],\r
- securiteSessionDirection\r
- )\r
-\r
- creeBrevetNote(eleve1, epreuve, 1, 'susu')\r
-\r
- // cree le resultat 13\r
- creeResultat(eleve1, service1, 13)\r
- // cree les appreciations\r
- creeAppreciation(eleve1, enseignement1, 'bubu')\r
-\r
- List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])\r
-\r
- assertEquals(\r
- "Le nombre des notes trouvees n'est pas comme attendu",\r
- 1,\r
- notes.size()\r
- )\r
- assertEquals(\r
- "La note trouve n'est pas comme prevue",\r
- 13,\r
- notes.first().valeurNumerique\r
- )\r
- assertEquals(\r
- "L'appreciation trouve n'est pas comme prevue",\r
- 'bubu',\r
- notes.first().appreciation\r
- )\r
- }\r
-\r
- /**\r
- * cas epreuve - 2 matieres fix - on prend la premiere matiere trouvee\r
- */\r
- void testActualisationEpreuve2matieresFixes() {\r
- // test les donnees recuperes\r
-\r
- Matiere matiere2 = matiereService.creeMatiereManuel(\r
- etablissement,\r
- 'MAT2',\r
- 'Mat 2',\r
- false\r
- )\r
- Service service2 = notesServiceService.creeService(\r
- securiteSessionDirection,\r
- matiere2,\r
- classe\r
- )\r
-\r
- Enseignement enseignement2 = notesEnseignementService.creeEnseignement(\r
- prof1.autorite,\r
- service2\r
- )\r
-\r
- brevetRelEpreuveMatiereService.majRelEpreuveMatieres(\r
- epreuve,\r
- [matiere1, matiere2],\r
- securiteSessionDirection\r
- )\r
-\r
- creeBrevetNote(eleve1, epreuve, 1, 'susu')\r
-\r
- // cree le resultat 13\r
- creeResultat(eleve1, service1, 13)\r
- creeResultat(eleve1, service2, 13)\r
- // cree les appreciations\r
- creeAppreciation(eleve1, enseignement1, 'bubu')\r
- creeAppreciation(eleve1, enseignement2, 'bubu')\r
-\r
- List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])\r
-\r
- assertEquals(\r
- "Le nombre des notes trouvees n'est pas comme attendu",\r
- 1,\r
- notes.size()\r
- )\r
- assertEquals(\r
- "La note trouve n'est pas comme prevue",\r
- 13,\r
- notes.first().valeurNumerique\r
- )\r
- assertEquals(\r
- "L'appreciation trouve n'est pas comme prevue",\r
- 'bubu',\r
- notes.first().appreciation\r
- )\r
- }\r
-\r
- /**\r
- * cas epreuve personalisee - 1 matiere\r
- */\r
- void testActualisationEpreuve1matierePersonalisee() {\r
- // test les donnees recuperes\r
-\r
- // epreuve personalisable\r
- BrevetEpreuve epreuvePers = serie.epreuves.find { it.personnalisable }\r
-\r
- BrevetNote note = creeBrevetNote(\r
- eleve1,\r
- epreuvePers,\r
- 1,\r
- 'susu'\r
- )\r
- note.matiere = matiere1\r
-\r
- // cree le resultat 13\r
- creeResultat(eleve1, service1, 13)\r
- // cree les appreciations\r
- creeAppreciation(eleve1, enseignement1, 'bubu')\r
-\r
- List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])\r
-\r
- assertEquals(\r
- "Le nombre des notes trouvees n'est pas comme attendu",\r
- 1,\r
- notes.size()\r
- )\r
- assertEquals(\r
- "La note trouve n'est pas comme prevue",\r
- 13,\r
- notes.first().valeurNumerique\r
- )\r
- assertEquals(\r
- "L'appreciation trouve n'est pas comme prevue",\r
- 'bubu',\r
- notes.first().appreciation\r
- )\r
- }\r
-\r
- /**\r
- * cas de HiGeo - si une matiere n'est pas liee avec EduCivique, la note de\r
- * HiGeo et rapportee a EduCivique\r
- */\r
- void testActualisationHiGeo() {\r
- // test les donnees recuperes\r
-\r
- BrevetEpreuve epreuveEdu = serie.epreuves.find { it.epreuveMatieresAHeriter != null }\r
- BrevetEpreuve epreuveHiGeo = epreuveEdu.epreuveMatieresAHeriter\r
-\r
- brevetRelEpreuveMatiereService.majRelEpreuveMatieres(\r
- epreuveHiGeo,\r
- [matiere1],\r
- securiteSessionDirection\r
- )\r
-\r
- creeBrevetNote(eleve1, epreuveHiGeo, 1, 'susu')\r
- creeBrevetNote(eleve1, epreuveEdu, 2, 'xuxu')\r
-\r
- // cree le resultat 13\r
- creeResultat(eleve1, service1, 13)\r
- // cree les appreciations\r
- creeAppreciation(eleve1, enseignement1, 'bubu')\r
-\r
- List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])\r
-\r
- // notes de HiGeo et EduCivique\r
- assertEquals(\r
- "Le nombre des notes trouvees n'est pas comme attendu",\r
- 2,\r
- notes.size()\r
- )\r
- assertEquals(\r
- "La note trouve n'est pas comme prevue",\r
- 13,\r
- notes.get(0).valeurNumerique\r
- )\r
- assertEquals(\r
- "L'appreciation trouve n'est pas comme prevue",\r
- 'bubu',\r
- notes.get(0).appreciation\r
- )\r
- assertEquals(\r
- "La note trouve n'est pas comme prevue",\r
- 13,\r
- notes.get(1).valeurNumerique\r
- )\r
- assertEquals(\r
- "L'appreciation trouve n'est pas comme prevue",\r
- 'bubu',\r
- notes.get(1).appreciation\r
- )\r
- }\r
-\r
- /**\r
- * cas de notes partiallement presentes\r
- */\r
- void testActualisationPartielle() {\r
- // test les donnees recuperes\r
-\r
- BrevetEpreuve epreuve2 = serie.epreuves.sort { it.code }.get(1)\r
- BrevetEpreuve epreuve3 = serie.epreuves.sort { it.code }.get(2)\r
- Matiere matiere2 = matiereService.creeMatiereManuel(\r
- etablissement,\r
- 'MAT2',\r
- 'Mat 2',\r
- false\r
- )\r
- Matiere matiere3 = matiereService.creeMatiereManuel(\r
- etablissement,\r
- 'MAT3',\r
- 'Mat 3',\r
- false\r
- )\r
- Service service2 = notesServiceService.creeService(\r
- securiteSessionDirection,\r
- matiere2,\r
- classe\r
- )\r
- Enseignement enseignement2 = notesEnseignementService.creeEnseignement(\r
- prof2.autorite,\r
- service2\r
- )\r
-\r
- brevetRelEpreuveMatiereService.majRelEpreuveMatieres(\r
- epreuve,\r
- [matiere1],\r
- securiteSessionDirection\r
- )\r
-\r
- brevetRelEpreuveMatiereService.majRelEpreuveMatieres(\r
- epreuve2,\r
- [matiere2],\r
- securiteSessionDirection\r
- )\r
-\r
- brevetRelEpreuveMatiereService.majRelEpreuveMatieres(\r
- epreuve3,\r
- [matiere3],\r
- securiteSessionDirection\r
- )\r
-\r
- BrevetNote note1 = creeBrevetNote(eleve1, epreuve, 1, 'susu')\r
- BrevetNote note2 = creeBrevetNote(eleve1, epreuve2, 2, 'xuxu')\r
- BrevetNote note3 = creeBrevetNote(eleve1, epreuve3, 3, 'zuzu')\r
-\r
- // cree le resultat 13 pour service 1\r
- ResultatEleveServicePeriode resService1 = creeResultat(eleve1, service1, 13)\r
-\r
- // cree l'appreciation pour les services 1 et 2\r
- AppreciationEleveEnseignementPeriode apprService1 =\r
- creeAppreciation(eleve1, enseignement1, 'bien')\r
-\r
- AppreciationEleveEnseignementPeriode apprService2 =\r
- creeAppreciation(eleve1, enseignement2, 'pas mal')\r
-\r
- List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])\r
-\r
- BrevetNoteInfo note1changee = notes.find { it.noteId == note1.id }\r
-\r
- // Une seule note doit etre mise à jour car il existe une seul moyenne.\r
- // Les appréciation ne sont récupérées que dans le cas il exite une moyenne\r
- // pour le service correspondant.\r
- assertEquals(\r
- "Le nombre des notes trouvees n'est pas comme attendu",\r
- 1,\r
- notes.size()\r
- )\r
-\r
- assertEquals(\r
- "La note trouve n'est pas comme prevue",\r
- resService1.moyenne,\r
- note1changee.valeurNumerique\r
- )\r
-\r
- assertEquals(\r
- "L'appreciation trouve n'est pas comme prevue",\r
- apprService1.appreciation,\r
- note1changee.appreciation\r
- )\r
- }\r
-\r
- /**\r
- * cas co-ens - 1 service, 2 ensignements - moyenne moyenne, apprs concatenes\r
- */\r
- void testActualisationCoenseignement() {\r
- // test les donnees recuperes\r
-\r
- brevetRelEpreuveMatiereService.majRelEpreuveMatieres(\r
- epreuve,\r
- [matiere1],\r
- securiteSessionDirection\r
- )\r
-\r
- creeBrevetNote(eleve1, epreuve, 1, 'susu')\r
-\r
- // cree le resultat 13\r
- creeResultat(eleve1, service1, 13)\r
-\r
- // cree les appreciations\r
- creeAppreciation(eleve1, enseignement1, 'bubu')\r
- creeAppreciation(eleve1, enseignement2, 'zuzu')\r
-\r
- List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])\r
-\r
- assertEquals(\r
- "Le nombre des notes trouvees n'est pas comme attendu",\r
- 1,\r
- notes.size()\r
- )\r
- assertEquals(\r
- "La note trouve n'est pas comme prevue",\r
- 13,\r
- notes.first().valeurNumerique\r
- )\r
- assertEquals(\r
- "L'appreciation trouve n'est pas comme prevue",\r
- 'bubu zuzu',\r
- notes.first().appreciation\r
- )\r
- }\r
-\r
- /**\r
- * cas partage de matieres - 2 services, 2 ensignements - moyenne moyenne, apprs concatenes\r
- */\r
- void testActualisationPartageMatieres() {\r
- // test les donnees recuperes\r
-\r
- brevetRelEpreuveMatiereService.majRelEpreuveMatieres(\r
- epreuve,\r
- [matiere1],\r
- securiteSessionDirection\r
- )\r
-\r
- creeBrevetNote(eleve1, epreuve, 1, 'susu')\r
-\r
- Service service2 = notesServiceService.creeService(\r
- securiteSessionDirection,\r
- matiere1,\r
- classe\r
- )\r
-\r
- relPeriodeServiceService.creeRelPeriodeService(\r
- new RelPeriodeServiceParams(\r
- service: service2,\r
- periode: periodeAnnee\r
- ))\r
-\r
- // cree les resultats\r
- creeResultat(eleve1, service1, 6)\r
- creeResultat(eleve1, service2, 7)\r
-\r
- // cree les appreciations\r
- creeAppreciation(eleve1, enseignement1, 'bubu')\r
- creeAppreciation(eleve1, enseignement2, 'zuzu')\r
-\r
- List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])\r
-\r
- assertEquals(\r
- "Le nombre des notes trouvees n'est pas comme attendu",\r
- 1,\r
- notes.size()\r
- )\r
- assertEquals(\r
- "La note trouve n'est pas comme prevue",\r
- (6 + 7) / 2,\r
- notes.first().valeurNumerique\r
- )\r
- assertTrue(\r
- "L'appreciation trouvee n'est pas comme prevue",\r
- notes.first().appreciation == 'zuzu bubu' ||\r
- notes.first().appreciation == 'bubu zuzu'\r
- )\r
- }\r
-\r
-\r
- void testActualisationEpreuveSport() {\r
-\r
- creeBrevetNote(eleve1, epreuveSport, 1, 'susu')\r
- creeResultat(eleve1, service1, 20)\r
-\r
- brevetRelEpreuveMatiereService.majRelEpreuveMatieres(\r
- epreuveSport,\r
- [matiere1],\r
- securiteSessionDirection\r
- )\r
-\r
- TypeActivite typeSport = TypeActivite.findByCodeAndEtablissement(\r
- TypeActiviteParDefaut.SPORT.code,\r
- classe.etablissement\r
- )\r
-\r
- Periode T1 = classe.periodes.find {it.intervalle == IntervalleEnum.T1}\r
- Periode T2 = classe.periodes.find {it.intervalle == IntervalleEnum.T2}\r
- Periode T3 = classe.periodes.find {it.intervalle == IntervalleEnum.T3}\r
-\r
- Evaluation eval1Ens1 = creeEvaluation("Foot", 10, enseignement1, T1, typeSport)\r
- Evaluation eval2Ens1 = creeEvaluation("Gym", 20, enseignement1, T2, typeSport)\r
- Evaluation eval3Ens1 = creeEvaluation("Golf", 40, enseignement1, T3, typeSport)\r
-\r
- Evaluation eval1Ens2 = creeEvaluation("Ski", 10, enseignement2, T1, typeSport)\r
- Evaluation eval2Ens2 = creeEvaluation("Hand", 20, enseignement2, T2, typeSport)\r
- Evaluation eval3Ens2 = creeEvaluation("Natation", 40, enseignement2, T3, typeSport)\r
-\r
- Note note1 = creeNote(eleve1, eval1Ens1, "ABS", false)\r
- Note note2 = creeNote(eleve1, eval2Ens1, '10', true) // 10 sur 20 => 10 sur 20\r
- Note note3 = creeNote(eleve1, eval3Ens1, '10', true) // 10 sur 40 => 5 sur 20\r
- Note note4 = creeNote(eleve1, eval1Ens2, '10', true) // 10 sur 10 => 20 sur 20\r
- Note note5 = creeNote(eleve1, eval2Ens2, '1', false)\r
- Note note6 = creeNote(eleve1, eval3Ens2, '1', false)\r
-\r
- BigDecimal moyenneSport = BigDecimal.valueOf((Long)(5 + 10 + 20)).divide((Long) 3, 10, RoundingMode.HALF_UP)\r
-\r
- notesServiceService.choisiServicePourSport(classe, service1)\r
-\r
- creeAppreciation(eleve1, enseignement1, 'bubu')\r
- creeAppreciation(eleve1, enseignement2, 'zuzu')\r
-\r
- List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])\r
-\r
- assertEquals(\r
- "La moyenne de Sport n'est pas correcte",\r
- moyenneSport,\r
- notes.first().valeurNumerique\r
- )\r
-\r
- assertTrue(\r
- "L'appreciation trouvée n'est pas correcte",\r
- notes.first().appreciation == 'zuzu bubu' ||\r
- notes.first().appreciation == 'bubu zuzu'\r
- )\r
-\r
- // Cas : moins de 3 notes sélectionées\r
- note2.choisiePourSport = false\r
- note2.save(failOnError: true)\r
-\r
- notes = brevetNoteService.actualiseNotes(classe, [eleve1])\r
-\r
- assertEquals(\r
- "La moyenne de Sport n'est pas correcte",\r
- 'DI',\r
- notes.first().noteValeur\r
- )\r
-\r
-\r
- // Cas : plus de 3 notes sélectionées\r
- note5.choisiePourSport = true\r
- note5.save(failOnError: true)\r
- note6.choisiePourSport = true\r
- note6.save(failOnError: true)\r
-\r
- Boolean exeption = false\r
-\r
- try {\r
- brevetNoteService.actualiseNotes(classe, [eleve1])\r
- } catch (IllegalStateException ex) {\r
- exeption = true\r
- }\r
-\r
- assertTrue(\r
- "L'exception n'a pas été levée alors qu'il y a plus 3 notes sélectionnées pour un élève",\r
- exeption\r
- )\r
- }\r
-\r
-\r
- Evaluation creeEvaluation(String titre,\r
- BigDecimal noteMax,\r
- Enseignement enseignement,\r
- Periode periode,\r
- TypeActivite type) {\r
-\r
- Evaluation eval = new Evaluation(\r
- titre: titre,\r
- noteMaxPossible: noteMax,\r
- enseignement: enseignement,\r
- typeActivite: type,\r
- coefficient: 1,\r
- dateEvaluation: new Date(),\r
- publiable: true\r
- )\r
-\r
- eval.addToPeriodes(periode)\r
- eval.save(failOnError: true)\r
- return eval\r
- }\r
-\r
-\r
- Note creeNote(Personne eleve, Evaluation eval, String valeur, Boolean choisiePourSport) {\r
- Note note = new Note(\r
- eleve: eleve.autorite,\r
- evaluation: eval,\r
- choisiePourSport: choisiePourSport\r
- )\r
- note.setValeur(valeur)\r
- note.save(failOnError: true)\r
- return note\r
- }\r
-\r
-\r
- /**\r
- * Cree une appreciation d'un eleve et d'un enseignement\r
- */\r
- AppreciationEleveEnseignementPeriode creeAppreciation(Personne eleve,\r
- Enseignement enseignement,\r
- String appreciation) {\r
- AppreciationEleveEnseignementPeriode appr =\r
- appreciationEleveEnseignementPeriodeService.internalFindOrCree(\r
- eleve.autorite,\r
- enseignement,\r
- periodeAnnee\r
- )\r
- appr.appreciation = appreciation\r
- appr.save()\r
- \r
- return appr\r
- }\r
-\r
- /**\r
- * Cree un resultat d'eleve pour un service\r
- */\r
- ResultatEleveServicePeriode creeResultat(Personne eleve, Service service, BigDecimal note) {\r
- ResultatEleveServicePeriode res = resultatEleveServicePeriodeService.\r
- internalFindOrCree(\r
- eleve.autorite,\r
- service,\r
- periodeAnnee\r
- )\r
- res.moyenneAuto = note\r
- res.save()\r
- \r
- return res\r
- }\r
-\r
- /**\r
- * Test d'initialisation des notes de brevet\r
- */\r
- void testInitialisation() {\r
-\r
- // test que les notes sont mises a jour apres l'initialisation\r
- brevetRelEpreuveMatiereService.majRelEpreuveMatieres(\r
- epreuve,\r
- [matiere1],\r
- securiteSessionDirection\r
- )\r
-\r
- creeBrevetNote(eleve1, epreuve, 1, 'susu')\r
-\r
- // cree le resultat 13\r
- creeResultat(eleve1, service1, 13)\r
- // cree les appreciations\r
- creeAppreciation(eleve1, enseignement1, 'bubu')\r
-\r
- brevetNoteService.initialiseNotesBrevet([classe])\r
-\r
- // verifie que la note a change\r
- BrevetNote noteChangee = brevetNoteService.findByEleveAndEpreuve(eleve1,epreuve)\r
-\r
- assertNotNull("Note mise a jour n'est pas trouvee", noteChangee)\r
- assertEquals(\r
- "La note trouve n'est pas comme prevue",\r
- 13,\r
- noteChangee.valeurNumerique\r
- )\r
- assertEquals(\r
- "L'appreciation trouve n'est pas comme prevue",\r
- 'bubu',\r
- noteChangee.appreciation\r
- )\r
-\r
- }\r
-\r
- /**\r
- * Cree une note de brevet\r
- */\r
- private BrevetNote creeBrevetNote(Personne eleve,\r
- BrevetEpreuve epreuve,\r
- BigDecimal note,\r
- String appreciation = null) {\r
-\r
- return initDonneesNotesTestService.creeBrevetNote(\r
- etablissement,\r
- eleve,\r
- epreuve,\r
- note,\r
- null,\r
- appreciation\r
- )\r
- }\r
-\r
-}\r
+package org.lilie.services.eliot.notes
+
+import grails.test.GrailsUnitTestCase
+import org.lilie.services.eliot.test.PopulationTestEtablissement
+import org.lilie.services.eliot.scolarite.StructureEnseignement
+import org.lilie.services.eliot.notes.brevet.BrevetNoteService
+import org.lilie.services.eliot.scolarite.Etablissement
+import org.lilie.services.eliot.scolarite.Personne
+import org.lilie.services.eliot.test.LocalInitDonneesCommunesTestService
+import org.lilie.services.eliot.scolarite.anneescolaire.AnneeScolaireService
+import org.lilie.services.eliot.scolarite.structureenseignement.LocalStructureEnseignementService
+import org.lilie.services.eliot.scolarite.personne.LocalPersonneService
+import org.lilie.services.eliot.brevet.BrevetEpreuve
+import org.lilie.services.eliot.brevet.BrevetSerie
+import org.lilie.services.eliot.test.PopulationTestActeur
+import org.lilie.services.eliot.annuaire.SecuriteSession
+import org.lilie.services.eliot.brevet.BrevetNote
+import org.lilie.services.eliot.notes.brevet.BrevetRelEpreuveMatiereService
+import org.lilie.services.eliot.scolarite.Matiere
+import org.lilie.services.eliot.scolarite.matiere.MatiereService
+import org.lilie.services.eliot.applications.notes.resultat.eleve.ResultatEleveServicePeriodeService
+import org.lilie.services.eliot.notes.scolarite.NotesServiceService
+import org.lilie.services.eliot.scolarite.Service
+import org.lilie.services.eliot.scolarite.Periode
+import org.lilie.services.eliot.notes.scolarite.NotesPeriodeService
+import org.lilie.services.eliot.scolarite.Enseignement
+import org.lilie.services.eliot.notes.scolarite.NotesEnseignementService
+import org.lilie.services.eliot.applications.notes.resultat.eleve.AppreciationEleveEnseignementPeriodeService
+import org.lilie.services.eliot.scolarite.RelPeriodeServiceService
+import org.lilie.services.eliot.scolarite.RelPeriodeServiceParams
+import org.lilie.services.eliot.notes.test.InitDonneesNotesTestService
+import org.lilie.services.eliot.notes.brevet.BrevetNoteInfo
+import org.lilie.services.eliot.scolarite.AnneeScolaire
+import org.lilie.services.eliot.textes.TypeActivite
+import org.lilie.services.eliot.textes.TypeActiviteParDefaut
+import org.lilie.services.eliot.scolarite.IntervalleEnum
+import java.math.RoundingMode
+import org.lilie.services.eliot.test.ProprieteScolariteTestUtilService
+
+/**
+ * Testes de BrevetNoteService
+ * @author msan
+ */
+class BrevetNoteServiceTests extends GrailsUnitTestCase {
+
+ BrevetNoteService brevetNoteService
+ LocalInitDonneesCommunesTestService localInitDonneesCommunesTestService
+ LocalStructureEnseignementService localStructureEnseignementService
+ AnneeScolaireService anneeScolaireService
+ LocalPersonneService localPersonneService
+ BrevetRelEpreuveMatiereService brevetRelEpreuveMatiereService
+ MatiereService matiereService
+ ResultatEleveServicePeriodeService resultatEleveServicePeriodeService
+ NotesServiceService notesServiceService
+ NotesPeriodeService notesPeriodeService
+ NotesEnseignementService notesEnseignementService
+ AppreciationEleveEnseignementPeriodeService appreciationEleveEnseignementPeriodeService
+ RelPeriodeServiceService relPeriodeServiceService
+ InitDonneesNotesTestService initDonneesNotesTestService
+ ProprieteScolariteTestUtilService proprieteScolariteTestUtilService
+
+ Etablissement etablissement = null
+ StructureEnseignement classe = null
+ Personne eleve1 = null
+ Personne eleve2 = null
+
+ Personne prof1 = null
+ Personne prof2 = null
+
+ BrevetEpreuve epreuve = null
+ BrevetEpreuve epreuveSport = null
+ BrevetSerie serie = null
+ SecuriteSession securiteSessionDirection = null
+
+ Matiere matiere1 = null
+ Service service1 = null
+ Enseignement enseignement1 = null
+ Enseignement enseignement2 = null
+
+ Periode periodeAnnee = null
+
+ AnneeScolaire anneeScolaire = null
+
+ protected void setUp() {
+ super.setUp()
+
+ anneeScolaire = anneeScolaireService.anneeScolaireEnCours()
+
+ etablissement = localInitDonneesCommunesTestService.getEtablissement(
+ PopulationTestEtablissement.ETABLISSEMENT_9
+ )
+
+ securiteSessionDirection = localInitDonneesCommunesTestService.getSecuriteSession(
+ PopulationTestActeur.DIRECTION_5
+ )
+
+ classe = localStructureEnseignementService.creeStructureEnseignement(
+ 'TEST-1',
+ StructureEnseignement.TYPE_CLASSE,
+ etablissement,
+ anneeScolaire)
+
+ eleve1 = localPersonneService.creePersonne("nom1", "eleve prenom1")
+ eleve2 = localPersonneService.creePersonne("nom2", "eleve prenom2")
+ prof1 = localPersonneService.creePersonne("nom1", "prof prenom1")
+ prof2 = localPersonneService.creePersonne("nom2", "prof prenom2")
+
+ proprieteScolariteTestUtilService.ajouteEleveDansStructureEnseignement(eleve1, classe)
+ proprieteScolariteTestUtilService.ajouteEleveDansStructureEnseignement(eleve2, classe)
+
+ serie = BrevetSerie.findByLibelleCourtAndAnneeScolaire(
+ "Générale",
+ anneeScolaire
+ )
+
+ epreuve = serie.epreuves.toList().sort { it.code }.get(0) // FRANÇAIS, max 20, AB
+
+ epreuveSport = serie.epreuves.toList().find { it.isSport() }
+
+ matiere1 = matiereService.creeMatiereManuel(
+ etablissement,
+ 'MAT1',
+ 'Mat 1',
+ false
+ )
+
+ notesPeriodeService.creePeriodesNotationPourStructureEnseignement(classe)
+
+ periodeAnnee = classe.getPeriodeAnnee()
+
+ service1 = notesServiceService.creeService(
+ securiteSessionDirection,
+ matiere1,
+ classe
+ )
+
+ enseignement1 = notesEnseignementService.creeEnseignement(
+ prof1.autorite,
+ service1
+ )
+
+ enseignement2 = notesEnseignementService.creeEnseignement(
+ prof2.autorite,
+ service1
+ )
+ }
+
+ /**
+ * cas epreuve - 1 matiere fix
+ */
+ void testActualisationEpreuve1matiereFixe() {
+ // test les donnees recuperes
+
+ brevetRelEpreuveMatiereService.majRelEpreuveMatieres(
+ epreuve,
+ [matiere1],
+ securiteSessionDirection
+ )
+
+ creeBrevetNote(eleve1, epreuve, 1, 'susu')
+
+ // cree le resultat 13
+ creeResultat(eleve1, service1, 13)
+ // cree les appreciations
+ creeAppreciation(eleve1, enseignement1, 'bubu')
+
+ List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])
+
+ assertEquals(
+ "Le nombre des notes trouvees n'est pas comme attendu",
+ 1,
+ notes.size()
+ )
+ assertEquals(
+ "La note trouve n'est pas comme prevue",
+ 13,
+ notes.first().valeurNumerique
+ )
+ assertEquals(
+ "L'appreciation trouve n'est pas comme prevue",
+ 'bubu',
+ notes.first().appreciation
+ )
+ }
+
+ /**
+ * cas epreuve - 2 matieres fix - on prend la premiere matiere trouvee
+ */
+ void testActualisationEpreuve2matieresFixes() {
+ // test les donnees recuperes
+
+ Matiere matiere2 = matiereService.creeMatiereManuel(
+ etablissement,
+ 'MAT2',
+ 'Mat 2',
+ false
+ )
+ Service service2 = notesServiceService.creeService(
+ securiteSessionDirection,
+ matiere2,
+ classe
+ )
+
+ Enseignement enseignement2 = notesEnseignementService.creeEnseignement(
+ prof1.autorite,
+ service2
+ )
+
+ brevetRelEpreuveMatiereService.majRelEpreuveMatieres(
+ epreuve,
+ [matiere1, matiere2],
+ securiteSessionDirection
+ )
+
+ creeBrevetNote(eleve1, epreuve, 1, 'susu')
+
+ // cree le resultat 13
+ creeResultat(eleve1, service1, 13)
+ creeResultat(eleve1, service2, 13)
+ // cree les appreciations
+ creeAppreciation(eleve1, enseignement1, 'bubu')
+ creeAppreciation(eleve1, enseignement2, 'bubu')
+
+ List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])
+
+ assertEquals(
+ "Le nombre des notes trouvees n'est pas comme attendu",
+ 1,
+ notes.size()
+ )
+ assertEquals(
+ "La note trouve n'est pas comme prevue",
+ 13,
+ notes.first().valeurNumerique
+ )
+ assertEquals(
+ "L'appreciation trouve n'est pas comme prevue",
+ 'bubu',
+ notes.first().appreciation
+ )
+ }
+
+ /**
+ * cas epreuve personalisee - 1 matiere
+ */
+ void testActualisationEpreuve1matierePersonalisee() {
+ // test les donnees recuperes
+
+ // epreuve personalisable
+ BrevetEpreuve epreuvePers = serie.epreuves.find { it.personnalisable }
+
+ BrevetNote note = creeBrevetNote(
+ eleve1,
+ epreuvePers,
+ 1,
+ 'susu'
+ )
+ note.matiere = matiere1
+
+ // cree le resultat 13
+ creeResultat(eleve1, service1, 13)
+ // cree les appreciations
+ creeAppreciation(eleve1, enseignement1, 'bubu')
+
+ List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])
+
+ assertEquals(
+ "Le nombre des notes trouvees n'est pas comme attendu",
+ 1,
+ notes.size()
+ )
+ assertEquals(
+ "La note trouve n'est pas comme prevue",
+ 13,
+ notes.first().valeurNumerique
+ )
+ assertEquals(
+ "L'appreciation trouve n'est pas comme prevue",
+ 'bubu',
+ notes.first().appreciation
+ )
+ }
+
+ /**
+ * cas de HiGeo - si une matiere n'est pas liee avec EduCivique, la note de
+ * HiGeo et rapportee a EduCivique
+ */
+ void testActualisationHiGeo() {
+ // test les donnees recuperes
+
+ BrevetEpreuve epreuveEdu = serie.epreuves.find { it.epreuveMatieresAHeriter != null }
+ BrevetEpreuve epreuveHiGeo = epreuveEdu.epreuveMatieresAHeriter
+
+ brevetRelEpreuveMatiereService.majRelEpreuveMatieres(
+ epreuveHiGeo,
+ [matiere1],
+ securiteSessionDirection
+ )
+
+ creeBrevetNote(eleve1, epreuveHiGeo, 1, 'susu')
+ creeBrevetNote(eleve1, epreuveEdu, 2, 'xuxu')
+
+ // cree le resultat 13
+ creeResultat(eleve1, service1, 13)
+ // cree les appreciations
+ creeAppreciation(eleve1, enseignement1, 'bubu')
+
+ List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])
+
+ // notes de HiGeo et EduCivique
+ assertEquals(
+ "Le nombre des notes trouvees n'est pas comme attendu",
+ 2,
+ notes.size()
+ )
+ assertEquals(
+ "La note trouve n'est pas comme prevue",
+ 13,
+ notes.get(0).valeurNumerique
+ )
+ assertEquals(
+ "L'appreciation trouve n'est pas comme prevue",
+ 'bubu',
+ notes.get(0).appreciation
+ )
+ assertEquals(
+ "La note trouve n'est pas comme prevue",
+ 13,
+ notes.get(1).valeurNumerique
+ )
+ assertEquals(
+ "L'appreciation trouve n'est pas comme prevue",
+ 'bubu',
+ notes.get(1).appreciation
+ )
+ }
+
+ /**
+ * cas de notes partiallement presentes
+ */
+ void testActualisationPartielle() {
+ // test les donnees recuperes
+
+ BrevetEpreuve epreuve2 = serie.epreuves.sort { it.code }.get(1)
+ BrevetEpreuve epreuve3 = serie.epreuves.sort { it.code }.get(2)
+ Matiere matiere2 = matiereService.creeMatiereManuel(
+ etablissement,
+ 'MAT2',
+ 'Mat 2',
+ false
+ )
+ Matiere matiere3 = matiereService.creeMatiereManuel(
+ etablissement,
+ 'MAT3',
+ 'Mat 3',
+ false
+ )
+ Service service2 = notesServiceService.creeService(
+ securiteSessionDirection,
+ matiere2,
+ classe
+ )
+ Enseignement enseignement2 = notesEnseignementService.creeEnseignement(
+ prof2.autorite,
+ service2
+ )
+
+ brevetRelEpreuveMatiereService.majRelEpreuveMatieres(
+ epreuve,
+ [matiere1],
+ securiteSessionDirection
+ )
+
+ brevetRelEpreuveMatiereService.majRelEpreuveMatieres(
+ epreuve2,
+ [matiere2],
+ securiteSessionDirection
+ )
+
+ brevetRelEpreuveMatiereService.majRelEpreuveMatieres(
+ epreuve3,
+ [matiere3],
+ securiteSessionDirection
+ )
+
+ BrevetNote note1 = creeBrevetNote(eleve1, epreuve, 1, 'susu')
+ BrevetNote note2 = creeBrevetNote(eleve1, epreuve2, 2, 'xuxu')
+ BrevetNote note3 = creeBrevetNote(eleve1, epreuve3, 3, 'zuzu')
+
+ // cree le resultat 13 pour service 1
+ ResultatEleveServicePeriode resService1 = creeResultat(eleve1, service1, 13)
+
+ // cree l'appreciation pour les services 1 et 2
+ AppreciationEleveEnseignementPeriode apprService1 =
+ creeAppreciation(eleve1, enseignement1, 'bien')
+
+ AppreciationEleveEnseignementPeriode apprService2 =
+ creeAppreciation(eleve1, enseignement2, 'pas mal')
+
+ List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])
+
+ BrevetNoteInfo note1changee = notes.find { it.noteId == note1.id }
+
+ // Une seule note doit etre mise à jour car il existe une seul moyenne.
+ // Les appréciation ne sont récupérées que dans le cas il exite une moyenne
+ // pour le service correspondant.
+ assertEquals(
+ "Le nombre des notes trouvees n'est pas comme attendu",
+ 1,
+ notes.size()
+ )
+
+ assertEquals(
+ "La note trouve n'est pas comme prevue",
+ resService1.moyenne,
+ note1changee.valeurNumerique
+ )
+
+ assertEquals(
+ "L'appreciation trouve n'est pas comme prevue",
+ apprService1.appreciation,
+ note1changee.appreciation
+ )
+ }
+
+ /**
+ * cas co-ens - 1 service, 2 ensignements - moyenne moyenne, apprs concatenes
+ */
+ void testActualisationCoenseignement() {
+ // test les donnees recuperes
+
+ brevetRelEpreuveMatiereService.majRelEpreuveMatieres(
+ epreuve,
+ [matiere1],
+ securiteSessionDirection
+ )
+
+ creeBrevetNote(eleve1, epreuve, 1, 'susu')
+
+ // cree le resultat 13
+ creeResultat(eleve1, service1, 13)
+
+ // cree les appreciations
+ creeAppreciation(eleve1, enseignement1, 'bubu')
+ creeAppreciation(eleve1, enseignement2, 'zuzu')
+
+ List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])
+
+ assertEquals(
+ "Le nombre des notes trouvees n'est pas comme attendu",
+ 1,
+ notes.size()
+ )
+ assertEquals(
+ "La note trouve n'est pas comme prevue",
+ 13,
+ notes.first().valeurNumerique
+ )
+ assertEquals(
+ "L'appreciation trouve n'est pas comme prevue",
+ 'bubu zuzu',
+ notes.first().appreciation
+ )
+ }
+
+ /**
+ * cas partage de matieres - 2 services, 2 ensignements - moyenne moyenne, apprs concatenes
+ */
+ void testActualisationPartageMatieres() {
+ // test les donnees recuperes
+
+ brevetRelEpreuveMatiereService.majRelEpreuveMatieres(
+ epreuve,
+ [matiere1],
+ securiteSessionDirection
+ )
+
+ creeBrevetNote(eleve1, epreuve, 1, 'susu')
+
+ Service service2 = notesServiceService.creeService(
+ securiteSessionDirection,
+ matiere1,
+ classe
+ )
+
+ relPeriodeServiceService.creeRelPeriodeService(
+ new RelPeriodeServiceParams(
+ service: service2,
+ periode: periodeAnnee
+ ))
+
+ // cree les resultats
+ creeResultat(eleve1, service1, 6)
+ creeResultat(eleve1, service2, 7)
+
+ // cree les appreciations
+ creeAppreciation(eleve1, enseignement1, 'bubu')
+ creeAppreciation(eleve1, enseignement2, 'zuzu')
+
+ List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])
+
+ assertEquals(
+ "Le nombre des notes trouvees n'est pas comme attendu",
+ 1,
+ notes.size()
+ )
+ assertEquals(
+ "La note trouve n'est pas comme prevue",
+ (6 + 7) / 2,
+ notes.first().valeurNumerique
+ )
+ assertTrue(
+ "L'appreciation trouvee n'est pas comme prevue",
+ notes.first().appreciation == 'zuzu bubu' ||
+ notes.first().appreciation == 'bubu zuzu'
+ )
+ }
+
+
+ void testActualisationEpreuveSport() {
+
+ creeBrevetNote(eleve1, epreuveSport, 1, 'susu')
+ creeResultat(eleve1, service1, 20)
+
+ brevetRelEpreuveMatiereService.majRelEpreuveMatieres(
+ epreuveSport,
+ [matiere1],
+ securiteSessionDirection
+ )
+
+ TypeActivite typeSport = TypeActivite.findByCodeAndEtablissement(
+ TypeActiviteParDefaut.SPORT.code,
+ classe.etablissement
+ )
+
+ Periode T1 = classe.periodes.find {it.intervalle == IntervalleEnum.T1}
+ Periode T2 = classe.periodes.find {it.intervalle == IntervalleEnum.T2}
+ Periode T3 = classe.periodes.find {it.intervalle == IntervalleEnum.T3}
+
+ Evaluation eval1Ens1 = creeEvaluation("Foot", 10, enseignement1, T1, typeSport)
+ Evaluation eval2Ens1 = creeEvaluation("Gym", 20, enseignement1, T2, typeSport)
+ Evaluation eval3Ens1 = creeEvaluation("Golf", 40, enseignement1, T3, typeSport)
+
+ Evaluation eval1Ens2 = creeEvaluation("Ski", 10, enseignement2, T1, typeSport)
+ Evaluation eval2Ens2 = creeEvaluation("Hand", 20, enseignement2, T2, typeSport)
+ Evaluation eval3Ens2 = creeEvaluation("Natation", 40, enseignement2, T3, typeSport)
+
+ Note note1 = creeNote(eleve1, eval1Ens1, "ABS", false)
+ Note note2 = creeNote(eleve1, eval2Ens1, '10', true) // 10 sur 20 => 10 sur 20
+ Note note3 = creeNote(eleve1, eval3Ens1, '10', true) // 10 sur 40 => 5 sur 20
+ Note note4 = creeNote(eleve1, eval1Ens2, '10', true) // 10 sur 10 => 20 sur 20
+ Note note5 = creeNote(eleve1, eval2Ens2, '1', false)
+ Note note6 = creeNote(eleve1, eval3Ens2, '1', false)
+
+ BigDecimal moyenneSport = BigDecimal.valueOf((Long)(5 + 10 + 20)).divide((Long) 3, 10, RoundingMode.HALF_UP)
+
+ notesServiceService.choisiServicePourSport(classe, service1)
+
+ creeAppreciation(eleve1, enseignement1, 'bubu')
+ creeAppreciation(eleve1, enseignement2, 'zuzu')
+
+ List<BrevetNoteInfo> notes = brevetNoteService.actualiseNotes(classe, [eleve1])
+
+ assertEquals(
+ "La moyenne de Sport n'est pas correcte",
+ moyenneSport,
+ notes.first().valeurNumerique
+ )
+
+ assertTrue(
+ "L'appreciation trouvée n'est pas correcte",
+ notes.first().appreciation == 'zuzu bubu' ||
+ notes.first().appreciation == 'bubu zuzu'
+ )
+
+ // Cas : moins de 3 notes sélectionées
+ note2.choisiePourSport = false
+ note2.save(failOnError: true)
+
+ notes = brevetNoteService.actualiseNotes(classe, [eleve1])
+
+ assertEquals(
+ "La moyenne de Sport n'est pas correcte",
+ 'DI',
+ notes.first().noteValeur
+ )
+
+
+ // Cas : plus de 3 notes sélectionées
+ note5.choisiePourSport = true
+ note5.save(failOnError: true)
+ note6.choisiePourSport = true
+ note6.save(failOnError: true)
+
+ Boolean exeption = false
+
+ try {
+ brevetNoteService.actualiseNotes(classe, [eleve1])
+ } catch (IllegalStateException ex) {
+ exeption = true
+ }
+
+ assertTrue(
+ "L'exception n'a pas été levée alors qu'il y a plus 3 notes sélectionnées pour un élève",
+ exeption
+ )
+ }
+
+
+ Evaluation creeEvaluation(String titre,
+ BigDecimal noteMax,
+ Enseignement enseignement,
+ Periode periode,
+ TypeActivite type) {
+
+ Evaluation eval = new Evaluation(
+ titre: titre,
+ noteMaxPossible: noteMax,
+ enseignement: enseignement,
+ typeActivite: type,
+ coefficient: 1,
+ dateEvaluation: new Date(),
+ publiable: true
+ )
+
+ eval.addToPeriodes(periode)
+ eval.save(failOnError: true)
+ return eval
+ }
+
+
+ Note creeNote(Personne eleve, Evaluation eval, String valeur, Boolean choisiePourSport) {
+ Note note = new Note(
+ eleve: eleve.autorite,
+ evaluation: eval,
+ choisiePourSport: choisiePourSport
+ )
+ note.setValeur(valeur)
+ note.save(failOnError: true)
+ return note
+ }
+
+
+ /**
+ * Cree une appreciation d'un eleve et d'un enseignement
+ */
+ AppreciationEleveEnseignementPeriode creeAppreciation(Personne eleve,
+ Enseignement enseignement,
+ String appreciation) {
+ AppreciationEleveEnseignementPeriode appr =
+ appreciationEleveEnseignementPeriodeService.internalFindOrCree(
+ eleve.autorite,
+ enseignement,
+ periodeAnnee
+ )
+ appr.appreciation = appreciation
+ appr.save()
+
+ return appr
+ }
+
+ /**
+ * Cree un resultat d'eleve pour un service
+ */
+ ResultatEleveServicePeriode creeResultat(Personne eleve, Service service, BigDecimal note) {
+ ResultatEleveServicePeriode res = resultatEleveServicePeriodeService.
+ internalFindOrCree(
+ eleve.autorite,
+ service,
+ periodeAnnee
+ )
+ res.moyenneAuto = note
+ res.save()
+
+ return res
+ }
+
+ /**
+ * Test d'initialisation des notes de brevet
+ */
+ void testInitialisation() {
+
+ // test que les notes sont mises a jour apres l'initialisation
+ brevetRelEpreuveMatiereService.majRelEpreuveMatieres(
+ epreuve,
+ [matiere1],
+ securiteSessionDirection
+ )
+
+ creeBrevetNote(eleve1, epreuve, 1, 'susu')
+
+ // cree le resultat 13
+ creeResultat(eleve1, service1, 13)
+ // cree les appreciations
+ creeAppreciation(eleve1, enseignement1, 'bubu')
+
+ brevetNoteService.initialiseNotesBrevet([classe])
+
+ // verifie que la note a change
+ BrevetNote noteChangee = brevetNoteService.findByEleveAndEpreuve(eleve1,epreuve)
+
+ assertNotNull("Note mise a jour n'est pas trouvee", noteChangee)
+ assertEquals(
+ "La note trouve n'est pas comme prevue",
+ 13,
+ noteChangee.valeurNumerique
+ )
+ assertEquals(
+ "L'appreciation trouve n'est pas comme prevue",
+ 'bubu',
+ noteChangee.appreciation
+ )
+
+ }
+
+ /**
+ * Cree une note de brevet
+ */
+ private BrevetNote creeBrevetNote(Personne eleve,
+ BrevetEpreuve epreuve,
+ BigDecimal note,
+ String appreciation = null) {
+
+ return initDonneesNotesTestService.creeBrevetNote(
+ etablissement,
+ eleve,
+ epreuve,
+ note,
+ null,
+ appreciation
+ )
+ }
+
+}