Core: Add tests for undo/redo property rename

This commit is contained in:
Pieter Hijma
2025-06-13 15:34:53 +02:00
parent 2bf376cffb
commit b19fc992fb

View File

@@ -28,6 +28,7 @@
#include <Base/Interpreter.h>
#include <App/Application.h>
#include <App/AutoTransaction.h>
#include <App/Document.h>
#include <App/Expression.h>
#include <App/ObjectIdentifier.h>
@@ -313,3 +314,74 @@ TEST_F(RenameProperty, updateExpressionDifferentDocument)
EXPECT_EQ(varSet->getDynamicPropertyByName("NewName"), prop);
EXPECT_EQ(prop2->getValue(), Value);
}
// Tests whether we can rename a property and undo it
TEST_F(RenameProperty, undoRenameProperty)
{
// Arrange
_doc->setUndoMode(1);
// Act
bool isRenamed = false;
{
App::AutoTransaction transaction("Rename Property");
isRenamed = varSet->renameDynamicProperty(prop, "NewName");
}
// Assert
EXPECT_TRUE(isRenamed);
EXPECT_STREQ(varSet->getPropertyName(prop), "NewName");
EXPECT_EQ(prop->getValue(), Value);
EXPECT_EQ(varSet->getDynamicPropertyByName("Variable"), nullptr);
EXPECT_EQ(varSet->getDynamicPropertyByName("NewName"), prop);
// Act: Undo the rename
bool undone = _doc->undo();
// Assert: The property should be back to its original name and value
EXPECT_TRUE(undone);
EXPECT_STREQ(varSet->getPropertyName(prop), "Variable");
EXPECT_EQ(prop->getValue(), Value);
EXPECT_EQ(varSet->getDynamicPropertyByName("Variable"), prop);
EXPECT_EQ(varSet->getDynamicPropertyByName("NewName"), nullptr);
}
// Tests whether we can rename a property, undo, and redo it
TEST_F(RenameProperty, redoRenameProperty)
{
// Arrange
_doc->setUndoMode(1);
// Act
bool isRenamed = false;
{
App::AutoTransaction transaction("Rename Property");
isRenamed = varSet->renameDynamicProperty(prop, "NewName");
}
// Assert
EXPECT_TRUE(isRenamed);
EXPECT_STREQ(varSet->getPropertyName(prop), "NewName");
EXPECT_EQ(prop->getValue(), Value);
EXPECT_EQ(varSet->getDynamicPropertyByName("Variable"), nullptr);
EXPECT_EQ(varSet->getDynamicPropertyByName("NewName"), prop);
// Act: Undo the rename
bool undone = _doc->undo();
// Assert: The property should be back to its original name and value
EXPECT_TRUE(undone);
EXPECT_STREQ(varSet->getPropertyName(prop), "Variable");
EXPECT_EQ(prop->getValue(), Value);
EXPECT_EQ(varSet->getDynamicPropertyByName("Variable"), prop);
EXPECT_EQ(varSet->getDynamicPropertyByName("NewName"), nullptr);
// Act: Redo the rename
bool redone = _doc->redo();
EXPECT_TRUE(redone);
EXPECT_STREQ(varSet->getPropertyName(prop), "NewName");
EXPECT_EQ(prop->getValue(), Value);
EXPECT_EQ(varSet->getDynamicPropertyByName("Variable"), nullptr);
EXPECT_EQ(varSet->getDynamicPropertyByName("NewName"), prop);
}