feat(test): diagnose failed effect assertions
This commit is contained in:
@@ -17,6 +17,30 @@ fn inspects_tuple_effects() {
|
||||
}));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn html_update_assertion_reports_expectation_and_actual_effects() {
|
||||
// req: test/018
|
||||
let target = TestTarget(ResourceKind::Slot, 42);
|
||||
let inspected = hemx_test::inspect(Effect::Put {
|
||||
target: ResourceRef::unscoped(ResourceId::new(ResourceKind::Slot, 7)),
|
||||
payload: Payload::Html(String::from("<p>actual</p>")),
|
||||
});
|
||||
|
||||
let panic = std::panic::catch_unwind(|| {
|
||||
inspected.assert_updates_html_containing(target, "expected fragment");
|
||||
})
|
||||
.expect_err("a mismatched target and payload must fail");
|
||||
let message = panic
|
||||
.downcast_ref::<String>()
|
||||
.map(String::as_str)
|
||||
.or_else(|| panic.downcast_ref::<&str>().copied())
|
||||
.expect("assertion panic must carry a message");
|
||||
|
||||
assert!(message.contains("expected fragment"), "{message}");
|
||||
assert!(message.contains("ResourceId"), "{message}");
|
||||
assert!(message.contains("actual"), "{message}");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn finds_keyed_slot_targets() {
|
||||
let rows = KeyedSlot::<u32, String>::new(9);
|
||||
|
||||
Reference in New Issue
Block a user