ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
ilSkinXMLTest.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 2016 Timon Amstutz <timon.amstutz@ilub.unibe.ch> Extended GPL, see docs/LICENSE */
3 
4 include_once("./Services/Style/System/classes/Utilities/class.ilSkinStyleXML.php");
5 include_once("./Services/Style/System/classes/Utilities/class.ilSkinXML.php");
6 include_once("./Services/Style/System/test/fixtures/mocks/ilSystemStyleConfigMock.php");
7 include_once("Services/Style/System/classes/Utilities/class.ilSystemStyleSkinContainer.php");
8 
10 
16 class ilSkinXMLTest extends TestCase
17 {
18 
19 
23  protected $skin;
24 
28  protected $style1 = null;
29 
33  protected $style2 = null;
34 
38  protected $substyle1 = null;
39 
43  protected $substyle2 = null;
44 
49 
50  protected function setUp() : void
51  {
52  $this->skin = new ilSkinXML("skin1", "skin 1");
53 
54  $this->style1 = new ilSkinStyleXML("style1", "Style 1");
55  $this->style1->setCssFile("style1css");
56  $this->style1->setImageDirectory("style1image");
57  $this->style1->setSoundDirectory("style1sound");
58  $this->style1->setFontDirectory("style1font");
59 
60  $this->style2 = new ilSkinStyleXML("style2", "Style 2");
61  $this->style2->setCssFile("style2css");
62  $this->style2->setImageDirectory("style2image");
63  $this->style2->setSoundDirectory("style2sound");
64  $this->style2->setFontDirectory("style2font");
65 
66  $this->substyle1 = new ilSkinStyleXML("substyle1", "Substyle 1");
67  $this->substyle1->setSubstyleOf($this->style1->getId());
68 
69  $this->substyle2 = new ilSkinStyleXML("substyle2", "Substyle 2");
70  $this->substyle2->setSubstyleOf($this->style2->getId());
71 
72  $this->system_style_config = new ilSystemStyleConfigMock();
73 
74  mkdir($this->system_style_config->test_skin_temp_path);
75  ilSystemStyleSkinContainer::xCopy($this->system_style_config->test_skin_original_path, $this->system_style_config->test_skin_temp_path);
76  }
77 
78  protected function tearDown() : void
79  {
80  ilSystemStyleSkinContainer::recursiveRemoveDir($this->system_style_config->test_skin_temp_path);
81  }
82 
83  public function testSkinNameAndId()
84  {
85  $this->assertEquals("skin1", $this->skin->getId());
86  $this->assertEquals("skin 1", $this->skin->getName());
87  }
88 
89  public function testAddStyle()
90  {
91  $this->assertEquals(count($this->skin), 0);
92  $this->assertEquals(count($this->skin->getStyles()), 0);
93  $this->skin->addStyle($this->style1);
94  $this->assertEquals(count($this->skin), 1);
95  $this->assertEquals(count($this->skin->getStyles()), 1);
96  $this->skin->addStyle($this->style1);
97  $this->assertEquals(count($this->skin), 2);
98  $this->assertEquals(count($this->skin->getStyles()), 2);
99  $this->skin->addStyle($this->style2);
100  $this->assertEquals(count($this->skin), 3);
101  $this->assertEquals(count($this->skin->getStyles()), 3);
102  }
103 
104  public function testGetStyles()
105  {
106  $this->skin->addStyle($this->style1);
107  $this->skin->addStyle($this->style2);
108 
109  $this->assertNotEquals($this->skin->getStyle("style2"), $this->style1);
110  $this->assertEquals($this->skin->getStyle("style2"), $this->style2);
111  }
112 
113  public function testAddSubstyle()
114  {
115  $this->skin->addStyle($this->substyle1);
116  $this->assertEquals(count($this->skin->getStyles()), 1);
117  $this->skin->addStyle($this->substyle2);
118  $this->assertEquals(count($this->skin), 2);
119  }
120 
121  public function testGetSubStyles()
122  {
123  $this->skin->addStyle($this->substyle1);
124  $this->skin->addStyle($this->substyle2);
125 
126  $this->assertNotEquals($this->skin->getStyle("substyle2"), $this->substyle1);
127  $this->assertEquals($this->skin->getStyle("substyle2"), $this->substyle2);
128  }
129 
130  public function testGetAllSubStyles()
131  {
132  $this->skin->addStyle($this->style1);
133  $this->skin->addStyle($this->style2);
134  $this->assertEquals($this->skin->getSubstylesOfStyle("style1"), []);
135  $this->skin->addStyle($this->substyle1);
136  $this->skin->addStyle($this->substyle2);
137  $this->assertEquals($this->skin->getSubstylesOfStyle("style1"), [$this->substyle1->getId() => $this->substyle1]);
138  $this->assertEquals($this->skin->getSubstylesOfStyle("style2"), [$this->substyle2->getId() => $this->substyle2]);
139  $this->substyle2->setSubstyleOf($this->style1->getId());
140  $this->assertEquals($this->skin->getSubstylesOfStyle("style1"), [$this->substyle1->getId() => $this->substyle1,$this->substyle2->getId() => $this->substyle2]);
141  }
142 
143  public function testUpdateParentOfStyle()
144  {
145  $this->skin->addStyle($this->style1);
146  $this->skin->addStyle($this->style2);
147  $this->skin->addStyle($this->substyle1);
148  $this->skin->addStyle($this->substyle2);
149  $this->assertEquals($this->skin->getSubstylesOfStyle("style1"), [$this->substyle1->getId() => $this->substyle1]);
150  $this->assertEquals($this->skin->getSubstylesOfStyle("style2"), [$this->substyle2->getId() => $this->substyle2]);
151  $this->skin->updateParentStyleOfSubstyles($this->style2->getId(), $this->style1->getId());
152  $this->assertEquals($this->skin->getSubstylesOfStyle("style1"), [$this->substyle1->getId() => $this->substyle1,$this->substyle2->getId() => $this->substyle2]);
153  }
154 
155  public function testRemoveStyles()
156  {
157  $this->skin->addStyle($this->style1);
158  $this->skin->addStyle($this->style2);
159  $this->assertEquals(count($this->skin), 2);
160  $this->skin->removeStyle("style1");
161  $this->assertEquals(count($this->skin), 1);
162  $this->skin->removeStyle("style2");
163  $this->assertEquals(count($this->skin), 0);
164  }
165 
166  public function testRemoveTestTwice()
167  {
168  $this->skin->addStyle($this->style1);
169  $this->skin->addStyle($this->style2);
170  $this->assertEquals(count($this->skin), 2);
171  $this->skin->removeStyle("style1");
172  $this->assertEquals(count($this->skin), 1);
173  $this->skin->removeStyle("style2");
174  $this->assertEquals(count($this->skin), 0);
175  try {
176  $this->skin->removeStyle("style2");
177  $this->assertTrue(false);
178  } catch (ilSystemStyleException $e) {
179  $this->assertEquals($e->getCode(), ilSystemStyleException::INVALID_ID);
180  }
181  }
182 
183  public function testAsXML()
184  {
185  $this->skin->addStyle($this->style1);
186  $this->skin->addStyle($this->style2);
187  $this->assertEquals($this->skin->asXML(), file_get_contents($this->system_style_config->getCustomizingSkinPath() . "skin1/template.xml"));
188  }
189 
190  public function testWriteXML()
191  {
192  $this->skin->addStyle($this->style1);
193  $this->skin->addStyle($this->style2);
194  $this->skin->writeToXMLFile($this->system_style_config->getCustomizingSkinPath() . "skin1/template-copy.xml");
195  $this->assertEquals(file_get_contents($this->system_style_config->getCustomizingSkinPath() . "skin1/template-copy.xml"), file_get_contents($this->system_style_config->getCustomizingSkinPath() . "skin1/template.xml"));
196  unlink($this->system_style_config->getCustomizingSkinPath() . "skin1/template-copy.xml");
197  }
198 
199  public function testReadXML()
200  {
201  $skin = ilSkinXML::parseFromXML($this->system_style_config->getCustomizingSkinPath() . "skin1/template.xml");
202  $this->assertEquals($skin->asXML(), file_get_contents($this->system_style_config->getCustomizingSkinPath() . "skin1/template.xml"));
203  }
204 }
ilSkinXml holds an manages the basic data of a skin as provide by the template of the skin...
static recursiveRemoveDir($dir)
Recursive delete of a folder.
Class for advanced editing exception handling in ILIAS.
ilSystemStyleConfig wraps all &#39;constants&#39; to ensure the testability of all classes using those &#39;const...
static xCopy($src, $dest)
Recursive copy of a folder.