diff --git a/governance/program/tests/process_remove_signatory.rs b/governance/program/tests/process_remove_signatory.rs index a228b65c..6a8109e9 100644 --- a/governance/program/tests/process_remove_signatory.rs +++ b/governance/program/tests/process_remove_signatory.rs @@ -213,3 +213,53 @@ async fn test_remove_signatory_with_not_editable_error() { GovernanceError::InvalidStateCannotEditSignatories.into() ); } + +#[tokio::test] +async fn test_remove_signatory_with_already_signed_error() { + // Arrange + let mut governance_test = GovernanceProgramTest::start_new().await; + + let realm_cookie = governance_test.with_realm().await; + let governed_account_cookie = governance_test.with_governed_account().await; + + let mut account_governance_cookie = governance_test + .with_account_governance(&realm_cookie, &governed_account_cookie) + .await + .unwrap(); + + let token_owner_record_cookie = governance_test + .with_community_token_deposit(&realm_cookie) + .await; + + let proposal_cookie = governance_test + .with_proposal(&token_owner_record_cookie, &mut account_governance_cookie) + .await + .unwrap(); + + let signatory_record_cookie = governance_test + .with_signatory(&proposal_cookie, &token_owner_record_cookie) + .await + .unwrap(); + + governance_test + .sign_off_proposal(&proposal_cookie, &signatory_record_cookie) + .await + .unwrap(); + + // Act + let err = governance_test + .remove_signatory( + &proposal_cookie, + &token_owner_record_cookie, + &signatory_record_cookie, + ) + .await + .err() + .unwrap(); + + // Assert + assert_eq!( + err, + GovernanceError::InvalidStateCannotEditSignatories.into() + ); +}