Skip to content

Commit e2c6a13

Browse files
committed
TEST: Metadata should be editable in a form rather than in a free text field (see #375).
1 parent 52a8bca commit e2c6a13

4 files changed

Lines changed: 54 additions & 11 deletions

File tree

frontend/scenarios/edit_metadata.feature

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,19 @@ Scénario: sans être connecté
4545
Alors je peux lire "Before editing this document, please log in first"
4646

4747

48-
49-
Scénario: avec un formulaire dont on est l'auteur
50-
48+
49+
Scénario: avec un formulaire dont on est l'auteur
5150
Soit un document dont je suis l'auteur affiché comme glose
5251
Et une session active avec mon compte
5352
Quand j'ouvre le formulaire de modification des métadonnées
54-
Et je remplis "title" avec "Chapitre 1: Contexte historique"
5553
Et je remplis "creator" avec "Alice Liddell"
54+
Et je remplis "title" avec "Chapitre 1: Contexte historique"
5655
Et je remplis "issued" avec "1932"
56+
Et j'ajoute le champ "Language" au formulaire
5757
Et je remplis "language" avec "french"
58+
Et j'ajoute le champ "Translator" au formulaire
5859
Et je remplis "translator" avec "Charles Beaudelaire"
60+
Et j'ajoute le champ "Part of" au formulaire
5961
Et je remplis "isPartOf" avec "Philosophie Moderne : Une première approche"
6062
Et je valide le formulaire
6163
Alors "Chapitre 1: Contexte historique" est la glose ouverte

frontend/src/components/Metadata.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ function Metadata({metadata = {}, editable, user, backend, setLastUpdate}) {
129129
<span className="edition">
130130
{formatTranslation(dc_translator, dc_language)}
131131
{dc_isPartOf ? <i>{dc_isPartOf}, </i> : ''}
132-
{dc_issued ? `${new Date(dc_issued.toString()).getFullYear()}` : ''}
132+
{dc_issued ? `${dc_issued.toString().slice(0, 4)}` : ''}
133133
</span>
134134
</>
135135
);

frontend/tests/event.js

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ Quand("j'ouvre {string} à côté", (title) => {
1818
cy.contains('span', title).parent().prevAll('a.open').first().click();
1919
});
2020

21-
Quand("j'essaie de remplacer les métadonnées de la glose par :", (metadata) => {
22-
cy.edit_metadata(metadata);
23-
});
21+
2422

2523
Quand("j'essaie de remplacer l'annotation du passage {int} par :", (block_number, markdown) => {
2624
let element = cy.get(`.lectern>.row:nth-child(${block_number + 1})>.scholium>.content>.formatted-text`);
@@ -156,6 +154,12 @@ Quand("{string} remplace les métadonnées de la glose par :", (username, metada
156154
cy.request_by_user(username, parseStrToObject(metadata));
157155
});
158156

157+
158+
Quand("j'ouvre le formulaire de modification des métadonnées", () => { cy.click_on_text('metadata'); });
159+
160+
161+
Quand("je valide le formulaire", () => { cy.get('.metadata-form').submit();
162+
});
159163
Quand("le titre de l'onglet est {string}", (title) => {
160164
cy.title().should("eq", title);
161165
});
@@ -173,3 +177,38 @@ Quand("j'essaie de créer une glose qui soit découpée en passages", () => {
173177
cy.click_on_create();
174178
cy.get('.scholium .focus').click();
175179
});
180+
181+
//MOFIER PAR MOI
182+
Quand("je remplis {string} avec {string}", (field, value) => {
183+
const input = cy.get(`#dc_${field}`);
184+
// dc_issued est de type "date" : on force la valeur via invoke('val') + trigger
185+
if (field === 'issued') {
186+
const dateValue = value.length === 4 ? `${value}-01-01` : value;
187+
input.invoke('val', dateValue).trigger('input').trigger('change');
188+
} else {
189+
input.clear().type(value);
190+
}
191+
});
192+
193+
Quand("je remplis {string} avec {string}", (field, value) => {
194+
const input = cy.get(`#dc_${field}`);
195+
if (field === 'issued') {
196+
const dateValue = value.length === 4 ? `${value}-01-01` : value;
197+
input
198+
.focus()
199+
.clear()
200+
.type(dateValue)
201+
.blur()
202+
.focus();
203+
} else {
204+
input.clear().type(value);
205+
}
206+
});
207+
208+
Quand("j'ajoute le champ {string} au formulaire", (label) => {
209+
cy.get('.add-section-toggle').click();
210+
cy.contains('.dropdown-item', label).click();
211+
});
212+
213+
//
214+

frontend/tests/outcome.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,6 @@ Alors("l'année de publication est {string}", (year) => {
5050
cy.get('.metadata > .edition').first().should('contain', year);
5151
});
5252

53-
Alors("le titre de l'ouvrage est {string}", (title) => {
54-
cy.get('.metadata > .edition').first().should('contain', title);
55-
})
5653

5754
Alors("la langue est {string}", (language) => {
5855
cy.get('.metadata > .edition').first().should('contain', language);
@@ -222,3 +219,8 @@ Alors("le document apparaît une seule fois dans la liste de ma bibliothèque",
222219
cy.get('.bookshelf').contains(this.randomName);
223220
cy.get('.bookshelf .work').filter(`:contains("${this.randomName}")`).should('have.length', 1);
224221
});
222+
223+
224+
Alors("le titre de l'ouvrage est {string}", (title) => {
225+
cy.get('.metadata').should('contain', title);
226+
});

0 commit comments

Comments
 (0)