Skip to content

Commit 6de235f

Browse files
authored
Test that select tool GRS works with only one anchor (#2502)
* one-anchor-point-testing implementation * merge conflict * merge conflict * ci cd error
1 parent fb17b93 commit 6de235f

File tree

1 file changed

+37
-4
lines changed

1 file changed

+37
-4
lines changed

editor/src/messages/tool/transform_layer/transform_layer_message_handler.rs

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -702,12 +702,14 @@ impl MessageHandler<TransformLayerMessage, TransformData<'_>> for TransformLayer
702702

703703
#[cfg(test)]
704704
mod test_transform_layer {
705-
use crate::messages::portfolio::document::graph_operation::transform_utils;
705+
use crate::messages::{
706+
portfolio::document::graph_operation::{transform_utils, utility_types::ModifyInputsContext},
707+
prelude::Message,
708+
tool::transform_layer::transform_layer_message_handler::VectorModificationType,
709+
};
706710
use crate::test_utils::test_prelude::*;
707-
// Use ModifyInputsContext to locate the transform node
708-
use crate::messages::portfolio::document::graph_operation::utility_types::ModifyInputsContext;
709-
use crate::messages::prelude::Message;
710711
use glam::DAffine2;
712+
use graphene_core::vector::PointId;
711713
use std::collections::VecDeque;
712714

713715
async fn get_layer_transform(editor: &mut EditorTestUtils, layer: LayerNodeIdentifier) -> Option<DAffine2> {
@@ -1064,4 +1066,35 @@ mod test_transform_layer {
10641066
let angle_change = ((angle_change % 360.0) + 360.0) % 360.0;
10651067
assert!((angle_change - 90.0).abs() < 0.1, "Expected rotation of 90 degrees, got: {}", angle_change);
10661068
}
1069+
1070+
#[tokio::test]
1071+
async fn test_grs_single_anchor() {
1072+
let mut editor = EditorTestUtils::create();
1073+
editor.new_document().await;
1074+
editor.handle_message(DocumentMessage::CreateEmptyFolder).await;
1075+
let document = editor.active_document();
1076+
let layer = document.metadata().all_layers().next().unwrap();
1077+
1078+
let point_id = PointId::generate();
1079+
let modification_type = VectorModificationType::InsertPoint {
1080+
id: point_id,
1081+
position: DVec2::new(100.0, 100.0),
1082+
};
1083+
editor.handle_message(GraphOperationMessage::Vector { layer, modification_type }).await;
1084+
editor.handle_message(ToolMessage::ActivateTool { tool_type: ToolType::Select }).await;
1085+
1086+
// Testing grab operation - just checking that it doesn't crash.
1087+
editor.handle_message(TransformLayerMessage::BeginGrab).await;
1088+
editor.move_mouse(150.0, 150.0, ModifierKeys::empty(), MouseKeys::NONE).await;
1089+
editor
1090+
.handle_message(TransformLayerMessage::PointerMove {
1091+
slow_key: Key::Shift,
1092+
increments_key: Key::Control,
1093+
})
1094+
.await;
1095+
editor.handle_message(TransformLayerMessage::ApplyTransformOperation { final_transform: true }).await;
1096+
1097+
let final_transform = get_layer_transform(&mut editor, layer).await;
1098+
assert!(final_transform.is_some(), "Transform node should exist after grab operation");
1099+
}
10671100
}

0 commit comments

Comments
 (0)