Complete canvas scope wiring and use Tokio for mounted Scenario test
This commit is contained in:
@@ -65,6 +65,7 @@ impl App {
|
|||||||
owner: context.owner,
|
owner: context.owner,
|
||||||
revision: context.revision,
|
revision: context.revision,
|
||||||
epoch: lifetime,
|
epoch: lifetime,
|
||||||
|
scenario_view: None,
|
||||||
};
|
};
|
||||||
if self.behavior.has_pending()
|
if self.behavior.has_pending()
|
||||||
|| self.draft_dirty()
|
|| self.draft_dirty()
|
||||||
|
|||||||
@@ -166,66 +166,64 @@ fn source_cross_layer_owner_retarget_undo_redo_keeps_requested_saved_uuid() {
|
|||||||
retarget(true);
|
retarget(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[tokio::test]
|
||||||
fn source_deleted_owner_and_saved_view_mount_unavailable_instead_of_another_behavior() {
|
async fn source_deleted_owner_and_saved_view_mount_unavailable_instead_of_another_behavior() {
|
||||||
iced::futures::executor::block_on(async {
|
let mut f = fixture();
|
||||||
let mut f = fixture();
|
let before = f.app.document.snapshot();
|
||||||
let before = f.app.document.snapshot();
|
let mut expected = before.decoded.project.clone();
|
||||||
let mut expected = before.decoded.project.clone();
|
assert!(expected.elements.remove(&f.owner).is_some());
|
||||||
assert!(expected.elements.remove(&f.owner).is_some());
|
assert!(expected.diagrams.remove(&f.view).is_some());
|
||||||
assert!(expected.diagrams.remove(&f.view).is_some());
|
assert!(expected.elements.contains_key(&f.same_layer));
|
||||||
assert!(expected.elements.contains_key(&f.same_layer));
|
assert!(
|
||||||
assert!(
|
expected
|
||||||
expected
|
.elements
|
||||||
.elements
|
.values()
|
||||||
.values()
|
.any(|e| e.kind() == Kind::Process)
|
||||||
.any(|e| e.kind() == Kind::Process)
|
);
|
||||||
);
|
adopt_from_source(&mut f.app, &expected);
|
||||||
adopt_from_source(&mut f.app, &expected);
|
assert_eq!(
|
||||||
assert_eq!(
|
f.app.behavior.scenario.representation(),
|
||||||
f.app.behavior.scenario.representation(),
|
Some(Representation::Saved { diagram: f.view })
|
||||||
Some(Representation::Saved { diagram: f.view })
|
);
|
||||||
);
|
let adopted = f.app.document.snapshot();
|
||||||
let adopted = f.app.document.snapshot();
|
let revision = f.app.document.revision();
|
||||||
let revision = f.app.document.revision();
|
let mut mounted = Mounted::new(&mut f.app).await;
|
||||||
let mut mounted = Mounted::new(&mut f.app).await;
|
let geometry = mounted.geometry(&f.app);
|
||||||
let geometry = mounted.geometry(&f.app);
|
assert!(
|
||||||
assert!(
|
geometry
|
||||||
geometry
|
.containers
|
||||||
.containers
|
.contains_key(&widget::Id::from("scenario-viewport-unavailable"))
|
||||||
.contains_key(&widget::Id::from("scenario-viewport-unavailable"))
|
);
|
||||||
);
|
assert!(
|
||||||
assert!(
|
!geometry
|
||||||
!geometry
|
.containers
|
||||||
.containers
|
.contains_key(&widget::Id::from("scenario-viewport"))
|
||||||
.contains_key(&widget::Id::from("scenario-viewport"))
|
);
|
||||||
);
|
assert_eq!(f.app.project(), &expected);
|
||||||
assert_eq!(f.app.project(), &expected);
|
assert_eq!(f.app.document.bundle(), &adopted.bundle);
|
||||||
assert_eq!(f.app.document.bundle(), &adopted.bundle);
|
assert_eq!(
|
||||||
assert_eq!(
|
f.app.document.revision(),
|
||||||
f.app.document.revision(),
|
revision,
|
||||||
revision,
|
"mounting unavailable must remain passive"
|
||||||
"mounting unavailable must remain passive"
|
);
|
||||||
);
|
|
||||||
|
|
||||||
let _ = f.app.update(Message::Undo);
|
let _ = f.app.update(Message::Undo);
|
||||||
assert_saved(&f.app, f.view, f.owner, Layer::Oa);
|
assert_saved(&f.app, f.view, f.owner, Layer::Oa);
|
||||||
assert_eq!(f.app.document.bundle(), &before.bundle);
|
assert_eq!(f.app.document.bundle(), &before.bundle);
|
||||||
let _ = f.app.update(Message::Redo);
|
let _ = f.app.update(Message::Redo);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
f.app.behavior.scenario.representation(),
|
f.app.behavior.scenario.representation(),
|
||||||
Some(Representation::Saved { diagram: f.view })
|
Some(Representation::Saved { diagram: f.view })
|
||||||
);
|
);
|
||||||
mounted.settle(&mut f.app).await;
|
mounted.settle(&mut f.app).await;
|
||||||
assert!(
|
assert!(
|
||||||
mounted
|
mounted
|
||||||
.geometry(&f.app)
|
.geometry(&f.app)
|
||||||
.containers
|
.containers
|
||||||
.contains_key(&widget::Id::from("scenario-viewport-unavailable"))
|
.contains_key(&widget::Id::from("scenario-viewport-unavailable"))
|
||||||
);
|
);
|
||||||
assert_eq!(f.app.project(), &expected);
|
assert_eq!(f.app.project(), &expected);
|
||||||
assert_eq!(f.app.document.bundle(), &adopted.bundle);
|
assert_eq!(f.app.document.bundle(), &adopted.bundle);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
Reference in New Issue
Block a user