diff --git a/pallets/smith-members/src/lib.rs b/pallets/smith-members/src/lib.rs index 2b32a98616a45df65a05c059f10f89bb091ad50c..64c45dd32d3953057bc1914055f45ac8b5f964a0 100644 --- a/pallets/smith-members/src/lib.rs +++ b/pallets/smith-members/src/lib.rs @@ -447,11 +447,17 @@ impl<T: Config> Pallet<T> { } else { SmithStatus::Pending }; - // expiry postponed - let new_expires_on = - CurrentSession::<T>::get() + T::SmithInactivityMaxDuration::get(); - smith_meta.expires_on = Some(new_expires_on); - Self::deposit_event(Event::<T>::SmithCertAdded { receiver, issuer }); + + if smith_meta.status == SmithStatus::Pending { + // - postpone the expiration: a Pending smith cannot do anything but wait + // this postponement is here to ease the process of becoming a smith + let new_expires_on = + CurrentSession::<T>::get() + T::SmithInactivityMaxDuration::get(); + smith_meta.expires_on = Some(new_expires_on); + // ExpiresOn::<T>::append(new_expires_on, receiver); + } + + // - if the status is smith but wasn't, notify that smith gained membership if smith_meta.status == SmithStatus::Smith && previous_status != SmithStatus::Smith { Self::deposit_event(Event::<T>::SmithMembershipAdded { diff --git a/pallets/smith-members/src/tests.rs b/pallets/smith-members/src/tests.rs index 826c096a36e4d5aa63e182561cf645c086147970..a1ba5942a3c49ee2c152c338d70823f4258d7c27 100644 --- a/pallets/smith-members/src/tests.rs +++ b/pallets/smith-members/src/tests.rs @@ -610,7 +610,6 @@ fn certifying_an_online_smith() { RuntimeOrigin::signed(3), 5 )); - // TODO: this test currently fails because expires_on is not None assert_eq!( Smiths::<Runtime>::get(5), Some(SmithMeta {