diff --git a/crates/oa-desktop/src/app/process_canvas.rs b/crates/oa-desktop/src/app/process_canvas.rs index 089275bd..bb1be8d9 100644 --- a/crates/oa-desktop/src/app/process_canvas.rs +++ b/crates/oa-desktop/src/app/process_canvas.rs @@ -65,6 +65,7 @@ impl App { owner: context.owner, revision: context.revision, epoch: lifetime, + scenario_view: None, }; if self.behavior.has_pending() || self.draft_dirty() diff --git a/crates/oa-desktop/src/app/scenario_diagram/adoption_tests.rs b/crates/oa-desktop/src/app/scenario_diagram/adoption_tests.rs index 68b2044b..d45e6e77 100644 --- a/crates/oa-desktop/src/app/scenario_diagram/adoption_tests.rs +++ b/crates/oa-desktop/src/app/scenario_diagram/adoption_tests.rs @@ -166,66 +166,64 @@ fn source_cross_layer_owner_retarget_undo_redo_keeps_requested_saved_uuid() { retarget(true); } -#[test] -fn source_deleted_owner_and_saved_view_mount_unavailable_instead_of_another_behavior() { - iced::futures::executor::block_on(async { - let mut f = fixture(); - let before = f.app.document.snapshot(); - let mut expected = before.decoded.project.clone(); - assert!(expected.elements.remove(&f.owner).is_some()); - assert!(expected.diagrams.remove(&f.view).is_some()); - assert!(expected.elements.contains_key(&f.same_layer)); - assert!( - expected - .elements - .values() - .any(|e| e.kind() == Kind::Process) - ); - adopt_from_source(&mut f.app, &expected); - assert_eq!( - f.app.behavior.scenario.representation(), - Some(Representation::Saved { diagram: f.view }) - ); - let adopted = f.app.document.snapshot(); - let revision = f.app.document.revision(); - let mut mounted = Mounted::new(&mut f.app).await; - let geometry = mounted.geometry(&f.app); - assert!( - geometry - .containers - .contains_key(&widget::Id::from("scenario-viewport-unavailable")) - ); - assert!( - !geometry - .containers - .contains_key(&widget::Id::from("scenario-viewport")) - ); - assert_eq!(f.app.project(), &expected); - assert_eq!(f.app.document.bundle(), &adopted.bundle); - assert_eq!( - f.app.document.revision(), - revision, - "mounting unavailable must remain passive" - ); +#[tokio::test] +async fn source_deleted_owner_and_saved_view_mount_unavailable_instead_of_another_behavior() { + let mut f = fixture(); + let before = f.app.document.snapshot(); + let mut expected = before.decoded.project.clone(); + assert!(expected.elements.remove(&f.owner).is_some()); + assert!(expected.diagrams.remove(&f.view).is_some()); + assert!(expected.elements.contains_key(&f.same_layer)); + assert!( + expected + .elements + .values() + .any(|e| e.kind() == Kind::Process) + ); + adopt_from_source(&mut f.app, &expected); + assert_eq!( + f.app.behavior.scenario.representation(), + Some(Representation::Saved { diagram: f.view }) + ); + let adopted = f.app.document.snapshot(); + let revision = f.app.document.revision(); + let mut mounted = Mounted::new(&mut f.app).await; + let geometry = mounted.geometry(&f.app); + assert!( + geometry + .containers + .contains_key(&widget::Id::from("scenario-viewport-unavailable")) + ); + assert!( + !geometry + .containers + .contains_key(&widget::Id::from("scenario-viewport")) + ); + assert_eq!(f.app.project(), &expected); + assert_eq!(f.app.document.bundle(), &adopted.bundle); + assert_eq!( + f.app.document.revision(), + revision, + "mounting unavailable must remain passive" + ); - let _ = f.app.update(Message::Undo); - assert_saved(&f.app, f.view, f.owner, Layer::Oa); - assert_eq!(f.app.document.bundle(), &before.bundle); - let _ = f.app.update(Message::Redo); - assert_eq!( - f.app.behavior.scenario.representation(), - Some(Representation::Saved { diagram: f.view }) - ); - mounted.settle(&mut f.app).await; - assert!( - mounted - .geometry(&f.app) - .containers - .contains_key(&widget::Id::from("scenario-viewport-unavailable")) - ); - assert_eq!(f.app.project(), &expected); - assert_eq!(f.app.document.bundle(), &adopted.bundle); - }); + let _ = f.app.update(Message::Undo); + assert_saved(&f.app, f.view, f.owner, Layer::Oa); + assert_eq!(f.app.document.bundle(), &before.bundle); + let _ = f.app.update(Message::Redo); + assert_eq!( + f.app.behavior.scenario.representation(), + Some(Representation::Saved { diagram: f.view }) + ); + mounted.settle(&mut f.app).await; + assert!( + mounted + .geometry(&f.app) + .containers + .contains_key(&widget::Id::from("scenario-viewport-unavailable")) + ); + assert_eq!(f.app.project(), &expected); + assert_eq!(f.app.document.bundle(), &adopted.bundle); } #[test]