From bbf45c4fd02da803dc171a2b83ddd565b296594c Mon Sep 17 00:00:00 2001
From: Hugo Trentesaux <hugo@trentesaux.fr>
Date: Mon, 4 Sep 2023 15:47:29 +0200
Subject: [PATCH] detail the rest of identity removal

---
 pallets/duniter-wot/src/tests.rs | 34 ++++++++++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

diff --git a/pallets/duniter-wot/src/tests.rs b/pallets/duniter-wot/src/tests.rs
index 4a5b9f4a1..bade3ace7 100644
--- a/pallets/duniter-wot/src/tests.rs
+++ b/pallets/duniter-wot/src/tests.rs
@@ -429,7 +429,7 @@ fn test_certification_expire() {
 
         // smith cert Bob → Alice expires at block 10
         run_to_block(10);
-        println!("{:?}", System::events());
+        // println!("{:?}", System::events());
         System::assert_has_event(RuntimeEvent::SmithCert(
             pallet_certification::Event::RemovedCert {
                 issuer: 2,                  // Bob
@@ -452,7 +452,7 @@ fn test_certification_expire() {
 
         // normal cert Bob → Alice expires at block 20
         run_to_block(20);
-        println!("{:?}", System::events());
+        // println!("{:?}", System::events());
         System::assert_has_event(RuntimeEvent::Cert(
             pallet_certification::Event::RemovedCert {
                 issuer: 2,                  // Bob
@@ -466,5 +466,35 @@ fn test_certification_expire() {
         System::assert_has_event(RuntimeEvent::Membership(
             pallet_membership::Event::MembershipExpired(1),
         ));
+
+        // --- BLOCK 21 ---
+        // Bob and Charlie can renew their membership
+        run_to_block(21);
+        assert_ok!(Membership::renew_membership(RuntimeOrigin::signed(2)));
+        assert_ok!(Membership::renew_membership(RuntimeOrigin::signed(3)));
+
+        // Alice can not renew her membership which does not exist because it is pending
+        assert_noop!(
+            Membership::renew_membership(RuntimeOrigin::signed(1)),
+            pallet_membership::Error::<Test, Instance1>::MembershipNotFound
+        );
+
+        // Alice can not claim her membership because she does not have enough certifications
+        assert_noop!(
+            Membership::claim_membership(RuntimeOrigin::signed(1)),
+            pallet_duniter_wot::Error::<Test, Instance1>::IdtyNotAllowedToClaimMembership
+        );
+
+        // --- BLOCK 23 ---
+        run_to_block(23);
+        // println!("{:?}", System::events());
+        // after a delay (3 blocks), the pending membership finally expires
+        System::assert_has_event(RuntimeEvent::Membership(
+            pallet_membership::Event::PendingMembershipExpired(1),
+        ));
+        // and the identity is removed
+        System::assert_has_event(RuntimeEvent::Identity(
+            pallet_identity::Event::IdtyRemoved { idty_index: 1 },
+        ));
     })
 }
-- 
GitLab