diff --git a/src/main/java/fr/abes/cbs/notices/Exemplaire.java b/src/main/java/fr/abes/cbs/notices/Exemplaire.java index 8127607..20b5d4e 100644 --- a/src/main/java/fr/abes/cbs/notices/Exemplaire.java +++ b/src/main/java/fr/abes/cbs/notices/Exemplaire.java @@ -120,7 +120,7 @@ public void createExemplaireFromUnimarc(String exemplaire) throws ZoneException } firstSousZone = false; } else { - this.addSousZone(labelZone, matcher.group("szk" + i), matcher.group("szv" + i), indexZone); + this.addSousZone(labelZone, matcher.group("szk" + i), matcher.group("szv" + i), indexZone); } } } @@ -141,7 +141,8 @@ public void createExemplaireFromUnimarc(String exemplaire) throws ZoneException /** * Méthode permettant de générer une zone A99 d'exemplaire - * @param lineZone ligne de la notice contenant la zone + * + * @param lineZone ligne de la notice contenant la zone * @param labelZone intitulé de la zone */ private void genererZoneA99(String lineZone, String labelZone) throws ZoneException { @@ -162,7 +163,8 @@ private void genererZoneA99(String lineZone, String labelZone) throws ZoneExcept /** * Méthode permettant de générer une zone A98 d'exemplaire - * @param lineZone ligne de la notice contenant la zone + * + * @param lineZone ligne de la notice contenant la zone * @param labelZone intitulé de la zone */ private void genererZoneA98(String lineZone, String labelZone) throws ZoneException { @@ -183,7 +185,8 @@ private void genererZoneA98(String lineZone, String labelZone) throws ZoneExcept /** * Méthode permettant de générer une zone A97 d'exemplaire - * @param lineZone ligne de la notice contenant la zone + * + * @param lineZone ligne de la notice contenant la zone * @param labelZone intitulé de la zone */ private void genererZoneA97(String lineZone, String labelZone) throws ZoneException { @@ -197,13 +200,14 @@ private void genererZoneA97(String lineZone, String labelZone) throws ZoneExcept labelZone = matcher.group("zSysName"); } if (matcher.group("zSysv0") != null && matcher.group("zSysv1") != null) { - this.addZone(labelZone,matcher.group("zSysv0") + " " + matcher.group("zSysv1")); + this.addZone(labelZone, matcher.group("zSysv0") + " " + matcher.group("zSysv1")); } } } /** * Méthode de génération d'une zone d'état de collection : 955, 956, 957, 959 + * * @param lineZone */ private void genererEtatCollection(String lineZone) throws ZoneException { @@ -241,8 +245,7 @@ private void genererEtatCollection(String lineZone) throws ZoneException { if (tabNumerotationPara.length == 2) { sequenceParaStr = tabNumerotationPara[1]; sequencePrimaireStr = tabNumerotationPara[0]; - } - else { + } else { sequencePrimaireStr = tabNumerotationPara[0]; } //si on a trouvé de séquence de numérotation parallèle @@ -280,7 +283,7 @@ private void genererEtatCollection(String lineZone) throws ZoneException { matcher = pattern.matcher(lineZone); if (matcher.find()) { - for (int i = 0; i< nbSousZones ; i++) { + for (int i = 0; i < nbSousZones; i++) { if (matcher.group("szk" + i) != null) { zoneEtatColl.addSubLabel(matcher.group("szk" + i), matcher.group("szv" + i)); } diff --git a/src/main/java/fr/abes/cbs/process/ProcessCBS.java b/src/main/java/fr/abes/cbs/process/ProcessCBS.java index 2d8a5be..01f356b 100644 --- a/src/main/java/fr/abes/cbs/process/ProcessCBS.java +++ b/src/main/java/fr/abes/cbs/process/ProcessCBS.java @@ -2,6 +2,8 @@ import fr.abes.cbs.commandes.Commandes; import fr.abes.cbs.exception.CBSException; +import fr.abes.cbs.exception.ZoneException; +import fr.abes.cbs.notices.*; import fr.abes.cbs.utilitaire.Constants; import fr.abes.cbs.utilitaire.Utilitaire; import lombok.Getter; @@ -93,20 +95,20 @@ public String search(String query) throws CBSException { nbNotices = Utilitaire.getNbNoticesFromChe(resu); switch (nbNotices) { - case 1: - nbNotices = 1; - lotEncours = Integer.parseInt(Utilitaire.recupEntre(resu, Constants.STR_1D + "VSIS", Constants.STR_1D)); - ppnEncours = Utilitaire.recupEntre(resu, "LPP", Constants.STR_1B); - lgNoticeSearch = resu.length(); - break; - case 0: - nbNotices = 0; - break; - default: - lotEncours = Integer.parseInt(Utilitaire.recupEntre(resu, "VSIS", Constants.STR_1D + "KTA")); - String[] lstrecords = resu.split(Constants.STR_1B + "H" + Constants.STR_1B + "LPP"); - initTablesResult(lstrecords); - lgNoticeSearch = resu.length(); + case 1: + nbNotices = 1; + lotEncours = Integer.parseInt(Utilitaire.recupEntre(resu, Constants.STR_1D + "VSIS", Constants.STR_1D)); + ppnEncours = Utilitaire.recupEntre(resu, "LPP", Constants.STR_1B); + lgNoticeSearch = resu.length(); + break; + case 0: + nbNotices = 0; + break; + default: + lotEncours = Integer.parseInt(Utilitaire.recupEntre(resu, "VSIS", Constants.STR_1D + "KTA")); + String[] lstrecords = resu.split(Constants.STR_1B + "H" + Constants.STR_1B + "LPP"); + initTablesResult(lstrecords); + lgNoticeSearch = resu.length(); } return resu; } @@ -161,7 +163,7 @@ private void initTablesResult(String[] lstrecords) throws CBSException { /** * authentifie un utilisateur au CBS de bout en bout (sélection base * incluse) - * + * * @param serveur IP du serveur CBS * @param port Port du serveur CBS * @param login Utilisateur @@ -191,7 +193,7 @@ public void authenticate(String serveur, String port, String login, String passw /** * Visualiser une notice parametres: no de record dans le liste * courte,retour en xml ou natif,format de recup:UNMA, UNX.. - * + * * @param noLigne Numéro du résultat à retourner * @param xml format natif ou XML * @param formatOrigine format d'origine de la notice @@ -223,7 +225,7 @@ public String view(final String noLigne, final boolean xml, String formatOrigine /** * Affiche la liste des resultats suivants après une première recherche - * + * * @return Retourne les 16 prochains résultats * @throws CBSException Erreur CBS */ @@ -240,7 +242,7 @@ public String next() throws CBSException { /** * Met une notice en edit sur le CBS et la retourne en XML le numero de * record est la position dans la liste courte - * + * * @param noRecord Numéro de la notice souhaitée * @return notice en XML en édition * @throws CBSException Erreur CBS @@ -252,7 +254,7 @@ public String editerEnXml(final String noRecord) throws CBSException { } /** - * Crée une notice dans le CBS + * Crée une notice dans le CBS * @param notice Notice pica * @return Résultat de la création * @throws CBSException Erreur CBS @@ -269,7 +271,7 @@ public String enregistrerNew(final String notice) throws CBSException { /** * Enregistrer une notice en edit * (pica) - * + * * @param notice Notice au format natif * @return Réponse du CBS * @throws CBSException Erreur CBS @@ -290,7 +292,7 @@ public String enregistrer(final String notice) throws CBSException { /** * Enregistrer une nouvelle notice d'autorites - * + * * @param notice notice au format natif * @return Réponse du CBS * @throws CBSException Erreur CBS @@ -305,7 +307,7 @@ public String enregistrerNewAut(final String notice) throws CBSException { /** * envoi commande de translitération - * + * * @param notice Notice au format natif * @return Réponse du CBS */ @@ -322,7 +324,7 @@ public String transliterer(final String notice) throws CBSException { /** * envoi commande de translitération sans ppn - * + * * @param notice Notice au format natif * @return Réponse du CBS * @throws CBSException Erreur CBS @@ -336,7 +338,7 @@ public String translitererSansPPN(final String notice) throws CBSException { /** * Supprime une notice - * + * * @param nonotice position de la notice dans le liste de resultats * @return Réponse du CBS * @throws CBSException Erreur CBS @@ -352,7 +354,7 @@ public String supprimer(final String nonotice) throws CBSException { /** * Permet de passer des parametres par defaut (utilisé dans wini par un * ecran de parametres) - * + * * @param params Tableau des paramètres pour le CBS * @return Réponse du CBS * @throws CBSException Erreur CBS @@ -363,7 +365,7 @@ public String setParams(final String[] params) throws CBSException { /** * Envoi au CBS la commande "mod" suivi de validation de la modification - * + * * @param norecord Position de la notice dans la liste * @param notice Notice au format natif * @return le message renvoyé par le CBS suite à la modification @@ -382,10 +384,50 @@ public String modifierNotice(String norecord, String notice) throws CBSException return clientCBS.valMod(notice, lgnotice, String.valueOf(lotEncours), ppnEncours, norecord, noticedeb, ""); } + /** + * Envoie au CBS la modification d'une notice sous forme d'objet + * @param norecord position de la notice dans le jeu de résultat + * @param notice notice au format NoticeConcrete + * @return le message renvoyé par le CBS suite à la validation + * @throws CBSException erreur de validation CBS + */ + public String modifierNoticeConcrete(String norecord, NoticeConcrete notice) throws CBSException { + String resu = clientCBS.mod(norecord, String.valueOf(lotEncours)); + String noticeStr = notice.getNoticeBiblio().toString(); + String noticedeb = Utilitaire.recupEntre(resu, "VTXT", Constants.STR_1F); + int lgnotice; + // on regarde si la lg de la notice a plus ou moins de 9999 caractères + if (Integer.parseInt(noticedeb.substring(3, 7)) >= 9999) { + lgnotice = lgNoticeSearch + 5000; + } else { + lgnotice = Integer.parseInt(noticedeb.substring(3, 7)) - 1; + } + String noticeLocDeb = resu.substring(resu.indexOf("VTXTLOK") + 7); + noticeLocDeb = noticeLocDeb.substring(0, noticeLocDeb.indexOf(Constants.STR_1F)); + int lgNoticeLoc = notice.getNoticeLocale().toString().length() + 1; + if (lgNoticeLoc != 1) { + noticeStr += Constants.STR_1F + Constants.STR_1E; + noticeStr += "VTX0TLOK" + noticeLocDeb + "D" + lgNoticeLoc + Constants.STR_1F + "I" + notice.getNoticeLocale().toString() + Constants.STR_1D + Constants.STR_1D; + } + + if (!notice.getExemplaires().isEmpty()) { + noticeStr += Constants.STR_1F + Constants.STR_1E; + for (Exemplaire exemplaire : notice.getExemplaires()) { + String noticeExempDeb = resu.substring(resu.indexOf("VTXTE" + exemplaire.getNumEx()) + 7); + noticeExempDeb = noticeExempDeb.substring(0, noticeExempDeb.indexOf(Constants.STR_1F)); + int lgNoticeExemp = exemplaire.toString().length() + 1; + noticeStr += "VTXT0TE" + exemplaire.getNumEx() + noticeExempDeb + "D" + lgNoticeExemp + Constants.STR_1F + "I" + exemplaire + Constants.STR_1D+ Constants.STR_1D; + } + } + return clientCBS.valMod(noticeStr, lgnotice, String.valueOf(lotEncours), ppnEncours, norecord, noticedeb, ""); + } + + + /** * Retourne l'iln de rattachement d'un rcr passé en paramètre envoi la * commande "aff bib + n° rcr" - * + * * @param rcr * le rcr concerné * @return l'ILN de rattachement @@ -398,7 +440,7 @@ public String ilnRattachement(final String rcr) throws CBSException { /** * Passe en édition un exemplaire - * + * * @param numEx * : numéro de l'exemplaire à modifier * @return : exemplaire sélectionné @@ -419,7 +461,7 @@ public String editerExemplaire(String numEx) throws CBSException { /** * Passe en édition une notice et renvoi la notice * Le numéro d'exemplaire est dans un champ de la classe - * + * * @param noRecord notice au format natif, en mode édition * @return Notice éditée * @throws CBSException Erreur CBS @@ -467,6 +509,67 @@ public String editer(final String noRecord) throws CBSException { return resu; } + /** + * Passe en édition une notice et renvoi la notice sous forme d'objet avec les exemplaires et les données locales + * Le numéro d'exemplaire est dans un champ de la classe + * + * @param noRecord notice au format natif, en mode édition + * @return Notice éditée + * @throws CBSException Erreur CBS + */ + public NoticeConcrete editerNoticeConcrete(final String noRecord) throws CBSException, ZoneException { + // num de l'exemplaire en cours + nbExPPnEncours = 0; + // num du prochain exemplaire + nvNumEx = ""; + int posLastEx; + String resu = clientCBS.mod(noRecord, String.valueOf(lotEncours)); + //on récupère la notice bibliographique + String biblio = Utilitaire.recupEntre(resu, Constants.VTXTBIB, Constants.STR_1E); + Biblio noticeBiblio = new Biblio(biblio.substring(biblio.indexOf(Constants.STR_1F) + 1)); + String donneesLoc = Utilitaire.recupEntre(resu, Constants.VTXTLOK, Constants.STR_1E); + DonneeLocale donneeLocale = new DonneeLocale(donneesLoc.substring(donneesLoc.indexOf(Constants.STR_1F) + 1)); + // on récupère les données locales + String exemps; + // on récupère les exemplaires + if (resu.contains(Constants.STR_1E + Constants.VMC)) { + exemps = Constants.VTXTE + Utilitaire.recupEntre(resu, Constants.VTXTE, Constants.STR_1E + Constants.VMC); + } else { + exemps = Constants.VTXTE + + Utilitaire.recupEntre(resu, Constants.VTXTE, Constants.STR_1E + Constants.STR_1D + "VV"); + } + List exemplaires = new ArrayList<>(); + if (!exemps.equals("VTXTE")) { + hasExpl = exemps.contains(rcr); + // la notice a au moins 1 exemplaire pour le rcr d'iln + posLastEx = exemps.lastIndexOf(Constants.VTXTE); + if (posLastEx < 0) { + nbExPPnEncours = 1; + } else { + nbExPPnEncours = Integer.parseInt(exemps.substring(posLastEx + 5, posLastEx + 7)); + } + + nbExPPnEncours = nbExPPnEncours + 1; + if (String.valueOf(nbExPPnEncours).length() == 1) { + nvNumEx = "e0" + nbExPPnEncours; + } else { + nvNumEx = "e" + nbExPPnEncours; + } + for (String exemp : exemps.split(Constants.STR_1E)) { + Exemplaire exemplaire = new Exemplaire(exemp.substring(exemp.indexOf(Constants.STR_1F) + 1)); + exemplaires.add(exemplaire); + } + } else { + // il n'y a pas d'exemplaire de la notice le rcr d'iln + nvNumEx = "e01"; + hasExpl = false; + } + + onEdit = true; + onNew = false; + return new NoticeConcrete(noticeBiblio, donneeLocale, exemplaires); + } + /** * Passage en édition comme utilisé dans JCBS (comptabilité IDRef * @return Notice au format édition @@ -482,30 +585,26 @@ public String editerJCBS(String noRecord) throws CBSException { notice = Utilitaire.recupEntre(resu, Constants.STR_1F + Constants.STR_1B +"P", Constants.STR_0D +Constants.STR_0D + Constants.STR_1E); //on suprime le P et le dernier caractere parasite actEncours="P"; - } - else - if (resu.contains(Constants.STR_1B +"P003")){ - ppnEncours = Utilitaire.recupEntre(resu, Constants.STR_1B +"P003", Constants.STR_1B); - ppnEncours = ppnEncours.substring(0, ppnEncours.length() - 1).trim().replaceAll("\\$a", ""); - //entre 1F1B et 0D0E donne la notice avec le P001 - notice = Utilitaire.recupEntre(resu, Constants.STR_1F+ Constants.STR_1B +"P", Constants.STR_0D +Constants.STR_0D + Constants.STR_1E); - if (("").equals(notice)) { - notice = Utilitaire.recupEntre(resu, Constants.STR_1F+ Constants.STR_1B +"P", Constants.STR_0D + Constants.STR_1E); - } - if (("").equals(notice)) { - //cas ou la notice termine par une zone protégée - notice = Utilitaire.recupEntre(resu, Constants.STR_1F+ Constants.STR_1B +"P", Constants.STR_0D + Constants.STR_1B + "D" + Constants.STR_1E); - } - //on suprime le P et le dernier caractere parasite - actEncours="P"; + } else if (resu.contains(Constants.STR_1B +"P003")){ + ppnEncours = Utilitaire.recupEntre(resu, Constants.STR_1B +"P003", Constants.STR_1B); + ppnEncours = ppnEncours.substring(0, ppnEncours.length() - 1).trim().replaceAll("\\$a", ""); + //entre 1F1B et 0D0E donne la notice avec le P001 + notice = Utilitaire.recupEntre(resu, Constants.STR_1F+ Constants.STR_1B +"P", Constants.STR_0D +Constants.STR_0D + Constants.STR_1E); + if (("").equals(notice)) { + notice = Utilitaire.recupEntre(resu, Constants.STR_1F+ Constants.STR_1B +"P", Constants.STR_0D + Constants.STR_1E); } - else - { - ppnEncours = Utilitaire.recupEntre(resu, Constants.STR_1F+"003", Constants.STR_0D); - ppnEncours = ppnEncours.trim().replaceAll("\\$a", ""); - notice = Utilitaire.recupEntre(resu, Constants.STR_1F, Constants.STR_0D +Constants.STR_0D + Constants.STR_1E); - actEncours=""; + if (("").equals(notice)) { + //cas ou la notice termine par une zone protégée + notice = Utilitaire.recupEntre(resu, Constants.STR_1F+ Constants.STR_1B +"P", Constants.STR_0D + Constants.STR_1B + "D" + Constants.STR_1E); } + //on suprime le P et le dernier caractere parasite + actEncours="P"; + } else { + ppnEncours = Utilitaire.recupEntre(resu, Constants.STR_1F+"003", Constants.STR_0D); + ppnEncours = ppnEncours.trim().replaceAll("\\$a", ""); + notice = Utilitaire.recupEntre(resu, Constants.STR_1F, Constants.STR_0D +Constants.STR_0D + Constants.STR_1E); + actEncours=""; + } timeStpEncours = Utilitaire.recupEntre(resu, "VTXTBIB", Constants.STR_1F); //pour recupere les exemplaires a faire.... @@ -556,7 +655,7 @@ public String creerDonneeLocale() throws CBSException { * succès - false si échec renseigne le ppn de la notice créée dans * PpnEncours si la création a réussi * utilisée uniquement par IdRef - * + * * @param exemplaire * le nouveau num. d'exemplaire en concaténant "e" et NvNumEx * @return le message renvoyé par le CBS suite à la création de l'exemplaire @@ -568,7 +667,7 @@ public String newExemplaire(String exemplaire) throws CBSException { /** * Modifie un exemplaire dans le CBS - * + * * @param exemplaire * : l'exemplaire à modifier * @param numEx Numéro d'exemplaire @@ -591,7 +690,7 @@ public String back() throws CBSException { * renvoie dans ErrorMessage, le message renvoyé par le CBS suite au rajout * de l'utilisateur modifie la valeur de CmdOk : true si succès - false si * échec - * + * * @param user Tableau contenant les infos de l'utilisateur à créer * @return le message renvoyé par le CBS suite à la création de * l'utilisateur @@ -633,7 +732,7 @@ private void majRcr() throws CBSException { * unma" renvoie dans ErrorMessage, le message renvoyé par le CBS suite au * changement de format modifie la valeur de CmdOk : true si succès - false * si échec - * + * * @return la notice au format unimarc * @throws CBSException Erreur CBS */ @@ -646,7 +745,7 @@ public String affUnma() throws CBSException { * "aff format" renvoie dans ErrorMessage, le message renvoyé par le CBS * suite au changement de format modifie la valeur de CmdOk : true si succès * - false si échec - * + * * @param format * format à afficher * @return la notice au format unimarc @@ -661,7 +760,7 @@ public String affFormat(String format) throws CBSException { * le message renvoyé par le CBS suite à la suppression de l'exemplaire * modifie la valeur de CmdOk : true si succès - false si échec PpnEncours * doit contenir un ppn, suite à une recherche de notice par exemple - * + * * @param exemplaire * numéro de l'exemplaire à supprimer * @return le résultat de la suppression @@ -676,7 +775,7 @@ public String supExemplaire(String exemplaire) throws CBSException { * message renvoyé par le CBS suite à la suppression de la notice modifie la * valeur de CmdOk : true si succès - false si échec PpnEncours doit * contenir un ppn, suite à une recherche de notice par exemple - * + * * @return le résultat de la suppression * @throws CBSException Erreur CBS */ @@ -690,7 +789,7 @@ public String supBiblio() throws CBSException { * modification de la donnée locale modifie la valeur de CmdOk : true si * succès - false si échec PpnEncours doit contenir un ppn, suite à une * recherche de notice par exemple - * + * * @param vloc * !!!!!!!!!!!! * @return le message renvoyé par le CBS suite à la modification diff --git a/src/main/java/fr/abes/cbs/utilitaire/Constants.java b/src/main/java/fr/abes/cbs/utilitaire/Constants.java index 6794a63..72b599e 100644 --- a/src/main/java/fr/abes/cbs/utilitaire/Constants.java +++ b/src/main/java/fr/abes/cbs/utilitaire/Constants.java @@ -115,6 +115,7 @@ public class Constants { public static final String ZONE_EXEMPLAIRE_NAME_REGEX = "^([A|e]\\d{2})|^([E]\\d{3})|^([9]\\d{2})"; //public static final String ZONE_DEBUT_EXEMPLAIRE_REGEX = "^[e]\\d{2}"; public static final String ZONE_DEBUT_EXEMPLAIRE_XML_REGEX = "930"; + public static final String VTXTLOK = "VTXTLOK"; /*** * Constructeur privé permet de rendre la classe non instantiable diff --git a/src/test/java/fr/abes/cbs/CommandesTest.java b/src/test/java/fr/abes/cbs/CommandesTest.java index d89e5aa..c25467b 100644 --- a/src/test/java/fr/abes/cbs/CommandesTest.java +++ b/src/test/java/fr/abes/cbs/CommandesTest.java @@ -3,9 +3,11 @@ import fr.abes.cbs.exception.CBSException; import fr.abes.cbs.exception.ZoneException; import fr.abes.cbs.notices.Exemplaire; +import fr.abes.cbs.notices.NoticeConcrete; import fr.abes.cbs.process.ProcessCBS; import fr.abes.cbs.utilitaire.Constants; import fr.abes.cbs.utilitaire.Utilitaire; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -18,6 +20,7 @@ import java.util.Scanner; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.not; class CommandesTest { @@ -317,7 +320,7 @@ void modLoc() throws CBSException { * * @return Le dernier numéro d'exemplaire, sous forme d'une string (ex : e07) */ - private String getLastNumEx() { + String getLastNumEx() { String numEx = cmd.getNvNumEx(); if (!numEx.equals("e01")) { int num = Integer.parseInt(numEx.substring(1, 3)); @@ -330,13 +333,56 @@ private String getLastNumEx() { return numEx; } + /** + * teste le passage en mode édition d'une notice et la récupération sous forme d'objet + */ + @Test + @DisplayName("test editerNoticeConcrete") + void editerNoticeConcreteTest() throws CBSException, ZoneException { + cmd.search("che ppn 23073426X"); + NoticeConcrete notice = cmd.editerNoticeConcrete("1"); + Assertions.assertEquals(4, notice.getExemplaires().size()); + + String biblioExpected = "100 0#$a2018\r" + + "101 0#$aeng\r" + + "200 0#$aNotice de test de modification dans API Sudoc@testmodifier Notice\r"; + Assertions.assertTrue(notice.getNoticeBiblio().toString().contains(biblioExpected)); + + String donneesLocExpected = "L005 27-07-23 08:54:47.000\r" + + "L035 ##$a123456789\r"; + Assertions.assertTrue(notice.getNoticeLocale().toString().contains(donneesLocExpected)); + } + + @Test + @DisplayName("test edition avec notice concrète") + void modifierNoticeConcreteTest() throws CBSException, ZoneException { + //Date du jour + DateFormat dateFormat = new SimpleDateFormat("dd-MM-yy"); + Date date = new Date(); + + //Recherche de la notice a modifier + cmd.search("che ppn 23073426X"); + NoticeConcrete notice = cmd.editerNoticeConcrete("1"); + cmd.back(); + notice.getNoticeBiblio().addSousZone("200", "c", "test"); + String resu = cmd.modifierNoticeConcrete("1", notice); + + //On vérifie la date de modification et le contenu de la notice pour voir si la modification a bien fonctionné + assertThat(resu).contains("008 $aAax").contains("Modifié: 341720001:" + dateFormat.format(date)); + + //2nde modification de la notice pour remise en état précédent + notice.getNoticeBiblio().deleteSousZone("200", "c"); + resu = cmd.modifierNoticeConcrete("1", notice); + assertThat(resu).contains("008 $aAax").contains("Modifié: 341720001:" + dateFormat.format(date)); + } + /** * Recherche la notice utilisé pour les tests et la retourne, utile pour factoriser les TU ici * * @return La notice utilisé pour les tests (ppn 219041989) * @throws CBSException si erreur lors de la recherche (pas connecté, pas de résultat, etc.) */ - private String noticeTestEnEdition() throws CBSException { + String noticeTestEnEdition() throws CBSException { cmd.search("che ppn 23073426X"); cmd.affUnma(); return cmd.editer("1");