From 4bf325824da1c51df60e1c03fcf279d0e61977e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CMainnet-ops=E2=80=9D?= <“footballwatch68@gmail.com”> Date: Wed, 21 Oct 2026 19:42:49 +0100 Subject: [PATCH] test(progress-tracker): verify delegation caller error message Co-Authored-By: Claude Sonnet 5.5 --- tests/unit/error_message_tests.rs | 38 +++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/unit/error_message_tests.rs b/tests/unit/error_message_tests.rs index df11b6d..a42c30f 100644 --- a/tests/unit/error_message_tests.rs +++ b/tests/unit/error_message_tests.rs @@ -797,5 +797,43 @@ mod error_message_tests { client.set_prerequisites(&course_id, &prereqs); } + #[test] + #[should_panic(expected = "caller is not the learner or their delegate")] + fn test_progress_tracker_non_delegate_caller_error_message() { + let env = Env::default(); + let (_admin, contract_id) = setup_progress_tracker(&env); + let client = ProgressTrackerClient::new(&env, &contract_id); + + env.mock_all_auths(); + let course_id = Symbol::new(&env, "rust_101"); + create_course_with_modules_and_quizzes(&env, &client, &course_id, 3, 2); + let learner = Address::generate(&env); + let delegate = Address::generate(&env); + let stranger = Address::generate(&env); + client.enroll(&learner, &course_id); + client.delegate_progress(&learner, &delegate); + + client.complete_module_for(&stranger, &learner, &course_id, &Symbol::new(&env, "mod_1")); + } + + #[test] + #[should_panic(expected = "caller is not the learner or their delegate")] + fn test_progress_tracker_revoked_delegate_error_message() { + let env = Env::default(); + let (_admin, contract_id) = setup_progress_tracker(&env); + let client = ProgressTrackerClient::new(&env, &contract_id); + + env.mock_all_auths(); + let course_id = Symbol::new(&env, "rust_101"); + create_course_with_modules_and_quizzes(&env, &client, &course_id, 3, 2); + let learner = Address::generate(&env); + let delegate = Address::generate(&env); + client.enroll(&learner, &course_id); + client.delegate_progress(&learner, &delegate); + client.revoke_delegation(&learner); + + client.complete_module_for(&delegate, &learner, &course_id, &Symbol::new(&env, "mod_1")); + } + // ── Error Message Analysis Tests ────────────────────────────────────── }