Keep diagram selection after dragging and record native port evidence
This commit is contained in:
@@ -564,6 +564,62 @@ fn selecting_current_constructors_preserves_payloads() {
|
||||
send(&mut app, Message::Apply);
|
||||
assert_eq!(*app.project(), accepted);
|
||||
}
|
||||
#[test]
|
||||
fn dragging_keeps_semantic_selection_and_same_node_remains_editable() {
|
||||
let mut app = App::with_project(fixture());
|
||||
let diagram = app.active_diagram.unwrap();
|
||||
let placement = app.project().diagrams[&diagram]
|
||||
.nodes
|
||||
.values()
|
||||
.next()
|
||||
.unwrap()
|
||||
.clone();
|
||||
let semantic = placement.element;
|
||||
send(&mut app, Message::SelectNode(placement.id));
|
||||
let before = app.project().clone();
|
||||
for distance in [40., 80.] {
|
||||
send(
|
||||
&mut app,
|
||||
Message::MoveNode(
|
||||
placement.id,
|
||||
Position {
|
||||
x: placement.position.x + distance,
|
||||
y: placement.position.y + distance,
|
||||
},
|
||||
),
|
||||
);
|
||||
assert_eq!(app.selected, semantic);
|
||||
assert_eq!(app.selected_node, Some(placement.id));
|
||||
assert_eq!(
|
||||
app.draft.as_ref().unwrap().kind,
|
||||
crate::forms::RecordKind::Element
|
||||
);
|
||||
send(&mut app, Message::SelectNode(placement.id));
|
||||
assert_eq!(app.selected, semantic);
|
||||
}
|
||||
send(&mut app, Message::Undo);
|
||||
send(&mut app, Message::Undo);
|
||||
assert_eq!(app.project(), &before);
|
||||
// Explicit placement inspection must not make its canvas card unselectable.
|
||||
send(&mut app, Message::Select(placement.id));
|
||||
send(&mut app, Message::SelectNode(placement.id));
|
||||
assert_eq!(app.selected, semantic);
|
||||
send(
|
||||
&mut app,
|
||||
Message::Field("/name".into(), "Still editable after dragging".into()),
|
||||
);
|
||||
send(&mut app, Message::SelectNode(placement.id));
|
||||
assert_eq!(
|
||||
app.draft.as_ref().unwrap().inputs["/name"].raw,
|
||||
"Still editable after dragging"
|
||||
);
|
||||
send(&mut app, Message::Apply);
|
||||
assert_eq!(
|
||||
app.project().elements[&semantic].name,
|
||||
"Still editable after dragging"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn placement_identity_edit_then_drag_and_diagram_identity_then_arrange() {
|
||||
let mut app = App::with_project(fixture());
|
||||
|
||||
Reference in New Issue
Block a user