fix: add DefaultReferrer to all pallet test mocks

After DefaultReferrer was added to pezpallet_identity_kyc::Config trait,
all dependent pallets need this type in their mock configs. Updated mocks
for identity-kyc, pez-rewards, trust, and welati. Also updated
identity-kyc tests for Option<referrer> parameter change.
This commit is contained in:
2026-02-11 04:38:11 +03:00
parent 2be5c6d11e
commit 5a2504912c
5 changed files with 67 additions and 32 deletions
@@ -75,6 +75,13 @@ impl crate::types::CitizenNftProvider<AccountId> for MockCitizenNftProvider {
}
}
pub struct DefaultReferrerAccount;
impl pezframe_support::traits::Get<AccountId> for DefaultReferrerAccount {
fn get() -> AccountId {
FOUNDER
}
}
impl crate::Config for Test {
type Currency = Balances;
type GovernanceOrigin = EnsureRoot<Self::AccountId>;
@@ -82,6 +89,7 @@ impl crate::Config for Test {
type OnKycApproved = MockOnKycApproved;
type OnCitizenshipRevoked = MockOnCitizenshipRevoked;
type CitizenNftProvider = MockCitizenNftProvider;
type DefaultReferrer = DefaultReferrerAccount;
type KycApplicationDeposit = KycApplicationDepositAmount;
type MaxStringLength = MaxStringLen;
type MaxCidLength = MaxCidLen;
@@ -39,7 +39,7 @@ fn apply_for_citizenship_works() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
identity_hash,
CITIZEN_1
Some(CITIZEN_1)
));
// Check status changed to PendingReferral
@@ -62,29 +62,32 @@ fn apply_for_citizenship_works() {
}
#[test]
fn apply_for_citizenship_fails_if_self_referral() {
fn apply_for_citizenship_falls_back_on_self_referral() {
new_test_ext().execute_with(|| {
// Cannot refer yourself
assert_noop!(
IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(CITIZEN_1),
H256::from_low_u64_be(999),
CITIZEN_1 // Same as caller
),
Error::<Test>::SelfReferral
);
// Self-referral with Some(self) is silently filtered,
// falls back to DefaultReferrer (FOUNDER)
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(CITIZEN_2),
H256::from_low_u64_be(999),
Some(CITIZEN_2) // Same as caller → filtered → DefaultReferrer
));
// Should use FOUNDER as referrer
let app = IdentityKycPallet::applications(CITIZEN_2).unwrap();
assert_eq!(app.referrer, FOUNDER);
});
}
#[test]
fn apply_for_citizenship_fails_if_referrer_not_citizen() {
new_test_ext().execute_with(|| {
// APPLICANT is not a citizen, so cannot be a referrer
new_test_ext_empty().execute_with(|| {
// In empty setup, no founding citizens exist
// Any referrer is invalid, and DefaultReferrer (FOUNDER) is also not a citizen
assert_noop!(
IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(CITIZEN_2),
RuntimeOrigin::signed(APPLICANT),
H256::from_low_u64_be(999),
APPLICANT // Not a citizen
Some(CITIZEN_1) // Not a citizen, falls back to FOUNDER who is also not citizen
),
Error::<Test>::ReferrerNotCitizen
);
@@ -100,7 +103,7 @@ fn apply_for_citizenship_fails_if_already_applied() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
identity_hash,
CITIZEN_1
Some(CITIZEN_1)
));
// Second application fails
@@ -108,7 +111,7 @@ fn apply_for_citizenship_fails_if_already_applied() {
IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
H256::from_low_u64_be(99999),
CITIZEN_1
Some(CITIZEN_1)
),
Error::<Test>::ApplicationAlreadyExists
);
@@ -124,7 +127,7 @@ fn apply_for_citizenship_fails_insufficient_balance() {
IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(poor_user),
H256::from_low_u64_be(12345),
CITIZEN_1
Some(CITIZEN_1)
),
pezpallet_balances::Error::<Test>::InsufficientBalance
);
@@ -144,7 +147,7 @@ fn approve_referral_works() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
identity_hash,
CITIZEN_1
Some(CITIZEN_1)
));
// CITIZEN_1 approves the referral
@@ -170,7 +173,7 @@ fn approve_referral_fails_if_not_referrer() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
H256::from_low_u64_be(12345),
CITIZEN_1
Some(CITIZEN_1)
));
// FOUNDER (different citizen) cannot approve
@@ -206,7 +209,7 @@ fn confirm_citizenship_works() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
identity_hash,
CITIZEN_1
Some(CITIZEN_1)
));
// Referrer approves
@@ -246,7 +249,7 @@ fn confirm_citizenship_fails_if_not_referrer_approved() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
H256::from_low_u64_be(12345),
CITIZEN_1
Some(CITIZEN_1)
));
// Try to self-confirm without referrer approval
@@ -281,7 +284,7 @@ fn cancel_application_works() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
H256::from_low_u64_be(12345),
CITIZEN_1
Some(CITIZEN_1)
));
// Deposit should be reserved
@@ -312,7 +315,7 @@ fn cancel_application_fails_if_not_pending_referral() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
H256::from_low_u64_be(12345),
CITIZEN_1
Some(CITIZEN_1)
));
assert_ok!(IdentityKycPallet::approve_referral(
RuntimeOrigin::signed(CITIZEN_1),
@@ -334,7 +337,7 @@ fn cancel_application_allows_reapplication() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
H256::from_low_u64_be(12345),
CITIZEN_1
Some(CITIZEN_1)
));
// Cancel
@@ -344,7 +347,7 @@ fn cancel_application_allows_reapplication() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
H256::from_low_u64_be(99999),
FOUNDER // Different referrer this time
Some(FOUNDER) // Different referrer this time
));
assert_eq!(IdentityKycPallet::kyc_status_of(APPLICANT), KycLevel::PendingReferral);
@@ -362,7 +365,7 @@ fn revoke_citizenship_works() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
H256::from_low_u64_be(12345),
CITIZEN_1
Some(CITIZEN_1)
));
assert_ok!(IdentityKycPallet::approve_referral(
RuntimeOrigin::signed(CITIZEN_1),
@@ -452,7 +455,7 @@ fn full_citizenship_workflow() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
identity_hash,
CITIZEN_1
Some(CITIZEN_1)
));
assert_eq!(IdentityKycPallet::kyc_status_of(APPLICANT), KycLevel::PendingReferral);
@@ -475,7 +478,7 @@ fn full_citizenship_workflow() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(new_user),
H256::from_low_u64_be(99999),
APPLICANT // APPLICANT is now the referrer
Some(APPLICANT) // APPLICANT is now the referrer
));
assert_eq!(IdentityKycPallet::kyc_status_of(new_user), KycLevel::PendingReferral);
});
@@ -488,7 +491,7 @@ fn renounce_and_reapply_workflow() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
H256::from_low_u64_be(12345),
CITIZEN_1
Some(CITIZEN_1)
));
assert_ok!(IdentityKycPallet::approve_referral(
RuntimeOrigin::signed(CITIZEN_1),
@@ -505,7 +508,7 @@ fn renounce_and_reapply_workflow() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
H256::from_low_u64_be(99999), // Different hash
FOUNDER // Different referrer
Some(FOUNDER) // Different referrer
));
assert_eq!(IdentityKycPallet::kyc_status_of(APPLICANT), KycLevel::PendingReferral);
});
@@ -534,7 +537,7 @@ fn get_referrer_works() {
assert_ok!(IdentityKycPallet::apply_for_citizenship(
RuntimeOrigin::signed(APPLICANT),
H256::from_low_u64_be(12345),
CITIZEN_1
Some(CITIZEN_1)
));
assert_ok!(IdentityKycPallet::approve_referral(
RuntimeOrigin::signed(CITIZEN_1),
@@ -193,6 +193,13 @@ parameter_types! {
pub const MaxCidLength: u32 = 128;
}
pub struct DefaultReferrerAccount;
impl pezframe_support::traits::Get<H256> for DefaultReferrerAccount {
fn get() -> H256 {
H256::from_low_u64_be(100)
}
}
impl pezpallet_identity_kyc::Config for Test {
type Currency = Balances;
type GovernanceOrigin = EnsureRoot<H256>;
@@ -200,6 +207,7 @@ impl pezpallet_identity_kyc::Config for Test {
type OnKycApproved = NoOpOnKycApproved;
type OnCitizenshipRevoked = NoOpOnCitizenshipRevoked;
type CitizenNftProvider = NoOpCitizenNftProvider;
type DefaultReferrer = DefaultReferrerAccount;
type KycApplicationDeposit = KycApplicationDeposit;
type MaxStringLength = MaxStringLength;
type MaxCidLength = MaxCidLength;
@@ -91,6 +91,13 @@ impl pezpallet_identity_kyc::types::CitizenNftProvider<u64> for NoOpCitizenNftPr
}
}
pub struct DefaultReferrerAccount;
impl pezframe_support::traits::Get<u64> for DefaultReferrerAccount {
fn get() -> u64 {
100 // Founder account for tests
}
}
impl pezpallet_identity_kyc::Config for Test {
type Currency = Balances;
type GovernanceOrigin = pezframe_system::EnsureRoot<u64>;
@@ -98,6 +105,7 @@ impl pezpallet_identity_kyc::Config for Test {
type OnKycApproved = NoOpOnKycApproved;
type OnCitizenshipRevoked = NoOpOnCitizenshipRevoked;
type CitizenNftProvider = NoOpCitizenNftProvider;
type DefaultReferrer = DefaultReferrerAccount;
type KycApplicationDeposit = pezframe_support::traits::ConstU128<100>;
type MaxStringLength = pezframe_support::traits::ConstU32<128>;
type MaxCidLength = pezframe_support::traits::ConstU32<64>;
@@ -262,6 +262,13 @@ impl pezpallet_identity_kyc::types::CitizenNftProvider<AccountId> for NoOpCitize
}
}
pub struct DefaultReferrerKyc;
impl pezframe_support::traits::Get<AccountId> for DefaultReferrerKyc {
fn get() -> AccountId {
1
}
}
impl pezpallet_identity_kyc::Config for Test {
type Currency = Balances;
type GovernanceOrigin = pezframe_system::EnsureRoot<AccountId>;
@@ -272,6 +279,7 @@ impl pezpallet_identity_kyc::Config for Test {
type KycApplicationDeposit = KycApplicationDeposit;
type MaxStringLength = MaxStringLength;
type MaxCidLength = MaxCidLength;
type DefaultReferrer = DefaultReferrerKyc;
}
// Mock StakingInfo provider - SADECE BİR KEZ TANIMLA