diff --git a/runtime-modules/working-group/src/lib.rs b/runtime-modules/working-group/src/lib.rs index d4206a67c5..d80ee9f9ec 100644 --- a/runtime-modules/working-group/src/lib.rs +++ b/runtime-modules/working-group/src/lib.rs @@ -1395,6 +1395,13 @@ impl, I: Instance> Module { .collect() } + /// Returns all existing worker id list. + pub fn get_all_worker_ids() -> Vec> { + >::iter() + .map(|(worker_id, _)| worker_id) + .collect() + } + fn make_stake_opt_imbalance( opt_balance: &Option>, source_account: &T::AccountId, diff --git a/runtime-modules/working-group/src/tests/mod.rs b/runtime-modules/working-group/src/tests/mod.rs index 6589ae04fb..07fabd3559 100644 --- a/runtime-modules/working-group/src/tests/mod.rs +++ b/runtime-modules/working-group/src/tests/mod.rs @@ -2157,7 +2157,7 @@ fn slash_worker_stake_fails_with_not_set_lead() { } #[test] -fn get_all_worker_ids_succeeds() { +fn get_regular_worker_ids_succeeds() { build_test_externalities().execute_with(|| { let worker_ids = TestWorkingGroup::get_regular_worker_ids(); assert_eq!(worker_ids, Vec::new()); @@ -2182,6 +2182,30 @@ fn get_all_worker_ids_succeeds() { }); } +#[test] +fn get_all_worker_ids_succeeds() { + build_test_externalities().execute_with(|| { + let worker_ids = TestWorkingGroup::get_all_worker_ids(); + assert_eq!(worker_ids, Vec::new()); + + let leader_worker_id = HireLeadFixture::default().hire_lead(); + + let worker_id1 = fill_worker_position(None, None, false, OpeningType::Worker, None); + let worker_id2 = fill_worker_position(None, None, false, OpeningType::Worker, None); + + let mut expected_ids = vec![leader_worker_id, worker_id1, worker_id2]; + expected_ids.sort(); + + let mut worker_ids = TestWorkingGroup::get_all_worker_ids(); + worker_ids.sort(); + assert_eq!(worker_ids, expected_ids); + + >::remove(worker_id1); + let worker_ids = TestWorkingGroup::get_all_worker_ids(); + assert_eq!(worker_ids, vec![leader_worker_id, worker_id2]); + }); +} + #[test] fn set_working_group_mint_capacity_succeeds() { build_test_externalities().execute_with(|| { diff --git a/runtime/src/integration/storage.rs b/runtime/src/integration/storage.rs index 5ca1aff99c..8560b4c743 100644 --- a/runtime/src/integration/storage.rs +++ b/runtime/src/integration/storage.rs @@ -8,7 +8,7 @@ pub struct StorageProviderHelper; impl storage::data_directory::StorageProviderHelper for StorageProviderHelper { fn get_random_storage_provider() -> Result { - let ids = crate::StorageWorkingGroup::get_regular_worker_ids(); + let ids = crate::StorageWorkingGroup::get_all_worker_ids(); let live_ids: Vec = ids .into_iter()