throttlingHandler = $this->diContainer->get(SendingThrottlingHandler::class); $this->settings = $this->diContainer->get(SettingsController::class); } public function testItReturnsDefaultBatchSize(): void { $batchSize = $this->throttlingHandler->getBatchSize(); verify($batchSize)->equals(SendingThrottlingHandler::BATCH_SIZE); } public function testItThrottlesBatchSizeToHalf(): void { $batchSize = $this->throttlingHandler->getBatchSize(); verify($batchSize)->equals(SendingThrottlingHandler::BATCH_SIZE); verify($this->throttlingHandler->throttleBatchSize())->equals($batchSize / 2); } public function testItIncreaseSuccessRequestCountInRow(): void { $this->throttlingHandler->throttleBatchSize(); $this->throttlingHandler->processSuccess(); $throttlingSettings = $this->settings->get(SendingThrottlingHandler::SETTINGS_KEY); verify($throttlingSettings['success_count'])->equals(1); } public function testItSetsBatchSizeMinimumToOne(): void { for ($i = 1; $i <= 10; $i++) { $this->throttlingHandler->throttleBatchSize(); } verify($this->throttlingHandler->getBatchSize())->equals(1); } public function testInIncreasesBatchSizeBack(): void { $this->settings->set(SendingThrottlingHandler::SETTINGS_KEY, []); $this->throttlingHandler->throttleBatchSize(); verify($this->throttlingHandler->getBatchSize())->equals(SendingThrottlingHandler::BATCH_SIZE / 2); for ($i = 1; $i <= SendingThrottlingHandler::SUCCESS_THRESHOLD_TO_INCREASE; $i++) { $this->throttlingHandler->processSuccess(); } verify($this->throttlingHandler->getBatchSize())->equals(SendingThrottlingHandler::BATCH_SIZE); } }