v0.3.8-pre.007-fix.002

This commit is contained in:
2026-09-03 18:51:37 +02:00
parent 32577ea48d
commit c9e52d1926
7 changed files with 148 additions and 23 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-app-store-desk/tests/desktop_contract.rs
// version: 5
// version: 6
//! Desktop template and frontend contract tests for the Store Desk scaffold.
@@ -88,7 +88,8 @@ fn pre_007_shell_exposes_transaction_filters_detail_and_keeps_account_skeleton_u
}
assert!(html.contains("id=\"rawTransactionsTable\""));
assert!(html.contains("id=\"rawAccountsTable\""));
for overview_id in ["refreshOverview", "overviewStoreProfile", "overviewStoreTarget", "overviewStoreHealth", "overviewStorePool", "overviewStoreMigration"] {
for overview_id in ["refreshOverview", "overviewStoreProfile", "overviewStoreTarget", "overviewStoreHealth", "overviewStorePool", "overviewStoreMigration"]
{
assert!(html.contains(&format!("id=\"{overview_id}\"")), "missing Store Overview field: {overview_id}");
}
for transaction_id in ["refreshTransactions", "transactionSlotMin", "transactionSlotMax", "transactionDirection", "transactionDetailModal"] {
@@ -202,14 +203,31 @@ fn pre_007_fix_001_long_transaction_identifiers_are_truncated_tooltipped_and_cop
let frontend = include_str!("../frontend/ts/main.ts");
let sass = include_str!("../frontend/sass/_app.scss");
assert!(frontend.contains("truncateLongText"));
assert!(frontend.contains("renderCopyableLongText(String(data), "transaction-signature")"));
assert!(frontend.contains("renderCopyableLongText(String(data), "transaction-content-hash")"));
assert!(frontend.contains("setCopyableLongText("transactionDetailSignature""));
assert!(frontend.contains("setCopyableLongText("transactionDetailContentHash""));
assert!(frontend.contains("title="${escapedValue}""));
assert!(frontend.contains(r#"renderCopyableLongText(String(data), "transaction-signature")"#));
assert!(frontend.contains(r#"renderCopyableLongText(String(data), "transaction-content-hash")"#));
assert!(frontend.contains(r#"setCopyableLongText("transactionDetailSignature""#));
assert!(frontend.contains(r#"setCopyableLongText("transactionDetailContentHash""#));
assert!(frontend.contains(r#"title="${escapedValue}""#));
assert!(frontend.contains("data-copy-long-text"));
assert!(frontend.contains("navigator.clipboard.writeText"));
assert!(frontend.contains("document.execCommand("copy")"));
assert!(frontend.contains(r#"document.execCommand("copy")"#));
assert!(sass.contains(".app-copyable-long-text__value"));
assert!(sass.contains("text-overflow: ellipsis"));
}
#[test]
fn pre_007_fix_002_payload_preview_remains_bounded_and_is_explicitly_copyable() {
let frontend = include_str!("../frontend/ts/main.ts");
let html = include_str!("../frontend/main.html");
let runtime = include_str!("../src/store_runtime.rs");
assert!(runtime.contains("const TRANSACTION_DETAIL_PREVIEW_BYTES: usize = 512;"));
assert!(html.contains("transactionDetailPayloadPreviewCopy"));
assert!(html.contains("Copier le preview hex affiché"));
assert!(html.contains("Preview tronquée à 512 bytes"));
assert!(frontend.contains(r#"payloadPreviewCopy.dataset.copyField = "transaction-payload-preview""#));
assert!(frontend.contains("payloadPreviewCopy.dataset.copyLongText = payloadPreview"));
assert!(frontend.contains("payloadPreviewCopy.hidden = false"));
assert!(frontend.contains("payloadPreviewCopy.hidden = true"));
assert!(frontend.contains("const previousTitle = button.title"));
assert!(frontend.contains("button.title = previousTitle"));
}