Browse Source

runtime: working-group: Add check for the application_rationing_policy.

- add check for the application_rationing_policy to the add_opening extrinsic
- modify add_opening_parameter test
Shamil Gadelshin 4 years ago
parent
commit
ea209f5bc0

+ 4 - 0
runtime-modules/working-group/src/errors.rs

@@ -297,6 +297,10 @@ decl_error! {
         /// Invalid OpeningPolicyCommitment parameter (application_staking_policy):
         /// review_period_expired_unstaking_period_length should be non-zero.
         ApplicationStakingPolicyReviewPeriodUnstakingPeriodIsZero,
+
+        /// Invalid OpeningPolicyCommitment parameter (application_rationing_policy):
+        /// max_active_applicants should be non-zero.
+        ApplicationRationingPolicyMaxActiveApplicantsIsZero,
     }
 }
 

+ 9 - 0
runtime-modules/working-group/src/lib.rs

@@ -1073,6 +1073,15 @@ impl<T: Trait<I>, I: Instance> Module<T, I> {
             Error::ApplicationStakingPolicyReviewPeriodUnstakingPeriodIsZero,
         )?;
 
+        if let Some(application_rationing_policy) =
+            policy_commitment.application_rationing_policy.clone()
+        {
+            ensure!(
+                application_rationing_policy.max_active_applicants > 0,
+                Error::ApplicationRationingPolicyMaxActiveApplicantsIsZero
+            );
+        }
+
         Ok(())
     }
 

+ 11 - 0
runtime-modules/working-group/src/tests/mod.rs

@@ -164,6 +164,17 @@ fn add_opening_fails_with_incorrect_unstaking_periods() {
         add_opening_fixture.call_and_assert(Err(
             Error::ApplicationStakingPolicyReviewPeriodUnstakingPeriodIsZero,
         ));
+
+        let add_opening_fixture =
+            AddWorkerOpeningFixture::default().with_policy_commitment(OpeningPolicyCommitment {
+                application_rationing_policy: Some(hiring::ApplicationRationingPolicy {
+                    max_active_applicants: 0,
+                }),
+                ..OpeningPolicyCommitment::default()
+            });
+        add_opening_fixture.call_and_assert(Err(
+            Error::ApplicationRationingPolicyMaxActiveApplicantsIsZero,
+        ));
     });
 }