1
0

TemplateSwitcherTest.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php declare(strict_types=1);
  2. use PHPUnit\Framework\TestCase;
  3. use PrivateBin\Configuration;
  4. use PrivateBin\TemplateSwitcher;
  5. class TemplateSwitcherTest extends TestCase
  6. {
  7. public function testSetTemplateFallback()
  8. {
  9. $conf = new Configuration;
  10. $defaultTemplateFallback = 'bootstrap5';
  11. $existingTemplateFallback = 'bootstrap-dark';
  12. $wrongBootstrapTemplateFallback = 'bootstrap-wrong';
  13. $wrongTemplateFallback = 'wrong-template';
  14. TemplateSwitcher::setAvailableTemplates(['bootstrap5', 'bootstrap-dark']);
  15. TemplateSwitcher::setTemplateFallback($wrongBootstrapTemplateFallback);
  16. $this->assertEquals($defaultTemplateFallback, TemplateSwitcher::getTemplate(), 'Wrong bootstrap template fallback');
  17. TemplateSwitcher::setTemplateFallback($wrongTemplateFallback);
  18. $this->assertEquals($defaultTemplateFallback, TemplateSwitcher::getTemplate(), 'Wrong template fallback');
  19. TemplateSwitcher::setTemplateFallback($existingTemplateFallback);
  20. $this->assertEquals($existingTemplateFallback, TemplateSwitcher::getTemplate(), 'Correct template fallback');
  21. }
  22. public function testSetAvailableTemplates()
  23. {
  24. $conf = new Configuration;
  25. $availableTemplates = ['bootstrap5', 'bootstrap-dark'];
  26. TemplateSwitcher::setAvailableTemplates($availableTemplates);
  27. $this->assertEquals($availableTemplates, TemplateSwitcher::getAvailableTemplates(), 'Set available templates');
  28. }
  29. public function testGetTemplate()
  30. {
  31. $defaultTemplateFallback = 'bootstrap5';
  32. $customTemplate = 'bootstrap-dark';
  33. $customWrongTemplate = 'bootstrap-wrong';
  34. $escapeTemplateDirectory = '../index';
  35. TemplateSwitcher::setAvailableTemplates(['bootstrap5', 'bootstrap-dark']);
  36. TemplateSwitcher::setTemplateFallback($defaultTemplateFallback);
  37. $_COOKIE['template'] = $customWrongTemplate;
  38. $this->assertEquals($defaultTemplateFallback, TemplateSwitcher::getTemplate(), 'Custom wrong template');
  39. $_COOKIE['template'] = $customTemplate;
  40. $this->assertEquals($customTemplate, TemplateSwitcher::getTemplate(), 'Custom template');
  41. $_COOKIE['template'] = $escapeTemplateDirectory;
  42. $this->assertEquals($defaultTemplateFallback, TemplateSwitcher::getTemplate(), 'Fallback on escaping template directory');
  43. $_COOKIE['template'] = [$customTemplate];
  44. $this->assertEquals($defaultTemplateFallback, TemplateSwitcher::getTemplate(), 'Fallback on invalid cookie type');
  45. }
  46. public function testGetAvailableTemplates()
  47. {
  48. $this->assertNotEmpty(TemplateSwitcher::getAvailableTemplates(), 'Get available templates');
  49. }
  50. public function testIsTemplateAvailable()
  51. {
  52. $conf = new Configuration;
  53. $existingTemplate = 'bootstrap5';
  54. $nonExistentTemplate = 'bootstrap-wrong';
  55. TemplateSwitcher::setAvailableTemplates($conf->getKey('availabletemplates'));
  56. $this->assertTrue(TemplateSwitcher::isTemplateAvailable($existingTemplate), 'Existing template');
  57. $this->assertFalse(TemplateSwitcher::isTemplateAvailable($nonExistentTemplate), 'Non-existent template');
  58. }
  59. }