diff --git a/tests/src/App/Property.cpp b/tests/src/App/Property.cpp
index 04f3aa8e42..7333909544 100644
--- a/tests/src/App/Property.cpp
+++ b/tests/src/App/Property.cpp
@@ -28,6 +28,7 @@
#include
#include
+#include
#include
#include
#include
@@ -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);
+}