/** * Maps requested type from request into the current registry of types * * @return string[] * @throws \InvalidArgumentException */ private function getRequestedTypes() { $requestedTypes = []; if (isset($this->requestArgs[self::KEY_TYPES])) { $requestedTypes = explode(',', $this->requestArgs[self::KEY_TYPES]); $requestedTypes = array_filter(array_map('trim', $requestedTypes), 'strlen'); } $availableTypes = $this->cacheManager->getAvailableTypes(); if (empty($requestedTypes)) { return $availableTypes; } else { $unsupportedTypes = array_diff($requestedTypes, $availableTypes); if ($unsupportedTypes) { throw new \InvalidArgumentException("The following requested cache types are not supported: '" . join("', '", $unsupportedTypes) . "'.\nSupported types: " . join(", ", $availableTypes) . ""); } return array_values(array_intersect($availableTypes, $requestedTypes)); } }
public function testGetAvailableTypes() { $types = [['id' => 'foo', 'status' => true], ['id' => 'bar', 'status' => false]]; $this->cacheTypeList->expects($this->once())->method('getTypes')->willReturn($types); $this->assertSame(['foo', 'bar'], $this->model->getAvailableTypes()); }