Expand editor regression coverage
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "Actions/EditActionRouter.h"
|
||||
#include "Actions/HierarchyActionRouter.h"
|
||||
#include "Actions/MainMenuActionRouter.h"
|
||||
#include "Actions/ProjectActionRouter.h"
|
||||
#include "Commands/EntityCommands.h"
|
||||
#include "Commands/SceneCommands.h"
|
||||
#include "Core/EditorContext.h"
|
||||
@@ -220,5 +223,78 @@ TEST_F(EditorActionRoutingTest, ReparentPreserveWorldTransformKeepsWorldPose) {
|
||||
ExpectNear(child->GetTransform()->GetScale(), worldScaleBefore);
|
||||
}
|
||||
|
||||
TEST_F(EditorActionRoutingTest, MainMenuRouterRequestsExitResetAndAboutPopup) {
|
||||
int exitRequestCount = 0;
|
||||
int resetLayoutCount = 0;
|
||||
|
||||
const uint64_t exitSubscription = m_context.GetEventBus().Subscribe<EditorExitRequestedEvent>(
|
||||
[&](const EditorExitRequestedEvent&) {
|
||||
++exitRequestCount;
|
||||
});
|
||||
const uint64_t resetSubscription = m_context.GetEventBus().Subscribe<DockLayoutResetRequestedEvent>(
|
||||
[&](const DockLayoutResetRequestedEvent&) {
|
||||
++resetLayoutCount;
|
||||
});
|
||||
|
||||
UI::DeferredPopupState aboutPopup;
|
||||
EXPECT_FALSE(aboutPopup.HasPendingOpenRequest());
|
||||
|
||||
Actions::RequestAboutPopup(aboutPopup);
|
||||
Actions::RequestDockLayoutReset(m_context);
|
||||
Actions::RequestEditorExit(m_context);
|
||||
|
||||
EXPECT_TRUE(aboutPopup.HasPendingOpenRequest());
|
||||
EXPECT_EQ(resetLayoutCount, 1);
|
||||
EXPECT_EQ(exitRequestCount, 1);
|
||||
|
||||
m_context.GetEventBus().Unsubscribe<EditorExitRequestedEvent>(exitSubscription);
|
||||
m_context.GetEventBus().Unsubscribe<DockLayoutResetRequestedEvent>(resetSubscription);
|
||||
}
|
||||
|
||||
TEST_F(EditorActionRoutingTest, HierarchyRouterRenameHelpersPublishAndCommit) {
|
||||
auto* entity = Commands::CreateEmptyEntity(m_context, nullptr, "Create Entity", "BeforeRename");
|
||||
ASSERT_NE(entity, nullptr);
|
||||
|
||||
uint64_t renameRequestedId = 0;
|
||||
const uint64_t renameSubscription = m_context.GetEventBus().Subscribe<EntityRenameRequestedEvent>(
|
||||
[&](const EntityRenameRequestedEvent& event) {
|
||||
renameRequestedId = event.entityId;
|
||||
});
|
||||
|
||||
Actions::RequestEntityRename(m_context, entity);
|
||||
EXPECT_EQ(renameRequestedId, entity->GetID());
|
||||
|
||||
EXPECT_TRUE(Actions::CommitEntityRename(m_context, entity->GetID(), "AfterRename"));
|
||||
ASSERT_NE(m_context.GetSceneManager().GetEntity(entity->GetID()), nullptr);
|
||||
EXPECT_EQ(m_context.GetSceneManager().GetEntity(entity->GetID())->GetName(), "AfterRename");
|
||||
EXPECT_TRUE(m_context.GetUndoManager().CanUndo());
|
||||
|
||||
EXPECT_FALSE(Actions::CommitEntityRename(m_context, entity->GetID(), ""));
|
||||
EXPECT_FALSE(Actions::CommitEntityRename(m_context, 0, "Invalid"));
|
||||
|
||||
m_context.GetEventBus().Unsubscribe<EntityRenameRequestedEvent>(renameSubscription);
|
||||
}
|
||||
|
||||
TEST_F(EditorActionRoutingTest, ProjectCommandsCreateFolderMoveAssetAndOpenFolderHelper) {
|
||||
const fs::path assetsDir = m_projectRoot / "Assets";
|
||||
const fs::path sourceFilePath = assetsDir / "MoveMe.txt";
|
||||
|
||||
std::ofstream(sourceFilePath.string()) << "move source";
|
||||
|
||||
EXPECT_TRUE(Commands::CreateFolder(m_context.GetProjectManager(), "MovedFolder"));
|
||||
m_context.GetProjectManager().RefreshCurrentFolder();
|
||||
|
||||
const AssetItemPtr folderItem = FindCurrentItemByName("MovedFolder");
|
||||
ASSERT_NE(folderItem, nullptr);
|
||||
ASSERT_TRUE(folderItem->isFolder);
|
||||
|
||||
EXPECT_TRUE(Commands::MoveAssetToFolder(m_context.GetProjectManager(), sourceFilePath.string(), folderItem));
|
||||
EXPECT_FALSE(fs::exists(sourceFilePath));
|
||||
EXPECT_TRUE(fs::exists(assetsDir / "MovedFolder" / "MoveMe.txt"));
|
||||
|
||||
EXPECT_TRUE(Actions::OpenProjectAsset(m_context, folderItem));
|
||||
EXPECT_EQ(m_context.GetProjectManager().GetCurrentPath(), "Assets/MovedFolder");
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace XCEngine::Editor
|
||||
|
||||
Reference in New Issue
Block a user