public function testAddErrorTemplateDefault() { $expected = ['key' => 'foo', 'defaultTemplates' => [], 'errorTemplates' => ['404' => 'template404', 'default' => 'template']]; $theme = new Theme(); $theme->setKey($expected['key']); $theme->addErrorTemplate('default', 'template'); $theme->addErrorTemplate('404', 'template404'); $this->assertEquals('template404', $theme->getErrorTemplate(404)); $this->assertEquals('template', $theme->getErrorTemplate(500)); $this->assertEquals($expected, $theme->toArray()); $this->assertEquals($expected['errorTemplates'], $theme->getErrorTemplates()); }
private function generateErrorTemplates(Theme $theme) { $defaultErrorTemplates = 0; foreach ($this->xpath->query('/x:webspace/x:theme/x:error-templates/x:error-template') as $errorTemplateNode) { /* @var \DOMNode $errorTemplateNode */ $template = $errorTemplateNode->nodeValue; if (($codeNode = $errorTemplateNode->attributes->getNamedItem('code')) !== null) { $code = $codeNode->nodeValue; } elseif (($defaultNode = $errorTemplateNode->attributes->getNamedItem('default')) !== null) { $default = $defaultNode->nodeValue === 'true'; if (!$default) { throw new InvalidDefaultErrorTemplateException($template, $this->webspace->getKey()); } ++$defaultErrorTemplates; $code = 'default'; } else { throw new InvalidErrorTemplateException($template, $this->webspace->getKey()); } $theme->addErrorTemplate($code, $template); } // only one or none default error-template is legal if ($defaultErrorTemplates > 1) { throw new InvalidAmountOfDefaultErrorTemplateException($this->webspace->getKey()); } return $theme; }