@@ -41,6 +41,7 @@ class TestQgsLayout: public QObject
41
41
void addItem ();
42
42
void layoutItems ();
43
43
void layoutItemByUuid ();
44
+ void undoRedoOccurred ();
44
45
45
46
private:
46
47
QString mReport ;
@@ -419,6 +420,55 @@ void TestQgsLayout::layoutItemByUuid()
419
420
QCOMPARE ( l.itemByUuid ( map1->uuid () ), map1 );
420
421
}
421
422
423
+ void TestQgsLayout::undoRedoOccurred ()
424
+ {
425
+ // test emitting undo/redo occurred signal
426
+ QgsProject proj;
427
+ QgsLayout l ( &proj );
428
+
429
+ QSignalSpy spyOccurred ( l.undoStack (), &QgsLayoutUndoStack::undoRedoOccurredForItems );
430
+
431
+ QgsLayoutItemShape *item = new QgsLayoutItemShape ( &l );
432
+ l.addLayoutItem ( item );
433
+
434
+ QCOMPARE ( spyOccurred.count (), 0 );
435
+ // adds a new undo command
436
+ item->setId ( " test" );
437
+ QCOMPARE ( spyOccurred.count (), 0 );
438
+
439
+ QgsLayoutItemShape *item2 = new QgsLayoutItemShape ( &l );
440
+ l.addLayoutItem ( item2 );
441
+ item2->setId ( " test2" );
442
+ QCOMPARE ( spyOccurred.count (), 0 );
443
+
444
+ l.undoStack ()->stack ()->undo ();
445
+ QCOMPARE ( spyOccurred.count (), 1 );
446
+ QSet< QString > items = qvariant_cast< QSet< QString > >( spyOccurred.at ( 0 ).at ( 0 ) );
447
+ QCOMPARE ( items, QSet< QString >() << item2->uuid () );
448
+
449
+ l.undoStack ()->stack ()->redo ();
450
+ QCOMPARE ( spyOccurred.count (), 2 );
451
+ items = qvariant_cast< QSet< QString> >( spyOccurred.at ( 1 ).at ( 0 ) );
452
+ QCOMPARE ( items, QSet< QString >() << item2->uuid () );
453
+
454
+ // macro undo
455
+ l.undoStack ()->beginMacro ( QString () );
456
+ item->setId ( " new id" );
457
+ item2->setId ( " new id2" );
458
+ l.undoStack ()->endMacro ();
459
+ QCOMPARE ( spyOccurred.count (), 2 );
460
+
461
+ l.undoStack ()->stack ()->undo ();
462
+ QCOMPARE ( spyOccurred.count (), 3 );
463
+ items = qvariant_cast< QSet< QString > >( spyOccurred.at ( 2 ).at ( 0 ) );
464
+ QCOMPARE ( items, QSet< QString >() << item->uuid () << item2->uuid () );
465
+ l.undoStack ()->stack ()->redo ();
466
+ QCOMPARE ( spyOccurred.count (), 4 );
467
+ items = qvariant_cast< QSet< QString > >( spyOccurred.at ( 3 ).at ( 0 ) );
468
+ QCOMPARE ( items, QSet< QString >() << item->uuid () << item2->uuid () );
469
+
470
+ }
471
+
422
472
423
473
QGSTEST_MAIN ( TestQgsLayout )
424
474
#include " testqgslayout.moc"
0 commit comments