@@ -251,6 +251,62 @@ describe('findLayoutIssues', () => {
251251 expect ( issues . some ( ( i ) => i . kind === 'crossing' ) ) . toBe ( true )
252252 } )
253253
254+ it ( 'detecta una etiqueta de rama posada sobre el trazo de otra flecha' , ( ) => {
255+ const issues = findLayoutIssues ( {
256+ ...base ,
257+ lanes : [
258+ { id : 'a' , label : '' } ,
259+ { id : 'b' , label : '' } ,
260+ ] ,
261+ nodes : [
262+ { id : 'g' , type : 'gatewayExclusive' , label : '' , lane : 'a' , col : 0 } ,
263+ { id : 'x' , type : 'task' , label : 'X' , lane : 'a' , col : 1 } ,
264+ { id : 'y' , type : 'task' , label : 'Y' , lane : 'b' , col : 1 } ,
265+ { id : 'z' , type : 'task' , label : 'Z' , lane : 'b' , col : 0 } ,
266+ ] ,
267+ // z → x sube por el mismo corredor donde g etiqueta su rama hacia y.
268+ flows : [
269+ { from : 'g' , to : 'y' , label : 'una etiqueta bien ancha' } ,
270+ { from : 'g' , to : 'x' , label : 'otra' } ,
271+ { from : 'z' , to : 'x' } ,
272+ ] ,
273+ } )
274+ expect ( issues . some ( ( i ) => i . kind === 'label' ) ) . toBe ( true )
275+ } )
276+
277+ it ( 'detecta una etiqueta de nodo aterrizando sobre la figura de al lado' , ( ) => {
278+ const issues = findLayoutIssues ( {
279+ ...base ,
280+ nodes : [
281+ // El texto de un evento cuelga debajo; con la tarea justo en la fila
282+ // siguiente, cae dentro de su caja.
283+ { id : 'e' , type : 'startEvent' , label : 'Una etiqueta larga de evento' , lane : 'l' , col : 0 } ,
284+ { id : 't' , type : 'task' , label : 'T' , lane : 'l' , col : 0 , row : 1 } ,
285+ ] ,
286+ flows : [ { from : 'e' , to : 't' } ] ,
287+ } )
288+ expect ( issues . some ( ( i ) => i . detail . includes ( 'cae sobre la figura' ) ) ) . toBe ( true )
289+ } )
290+
291+ it ( 'detecta un texto que se sale del lienzo' , ( ) => {
292+ const issues = findLayoutIssues ( {
293+ ...base ,
294+ nodes : [
295+ {
296+ id : 'a' ,
297+ type : 'task' ,
298+ label : 'A' ,
299+ lane : 'l' ,
300+ col : 0 ,
301+ duracion : 'una anotación de tiempo absurdamente larga que no cabe' ,
302+ } ,
303+ { id : 'b' , type : 'task' , label : 'B' , lane : 'l' , col : 1 } ,
304+ ] ,
305+ flows : [ { from : 'a' , to : 'b' } ] ,
306+ } )
307+ expect ( issues . some ( ( i ) => i . detail . includes ( 'se sale del lienzo' ) ) ) . toBe ( true )
308+ } )
309+
254310 it ( 'detecta la etiqueta de una rama encimada con la de su compuerta' , ( ) => {
255311 const gwAbajo = findLayoutIssues ( {
256312 ...base ,
0 commit comments