Skip to content

Commit 8845172

Browse files
committed
Test cloning attributes
1 parent f2cf92a commit 8845172

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

tests/AttributesTest.php

+45
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22

33
namespace ipl\Tests\Html;
44

5+
use ipl\Html\Attribute;
56
use ipl\Html\Attributes;
67
use ipl\Html\BaseHtmlElement;
8+
use ipl\Html\HtmlString;
9+
use ipl\Html\ValidHtml;
710

811
class AttributesTest extends TestCase
912
{
@@ -113,4 +116,46 @@ function ($v) use (&$value) {
113116

114117
$this->assertEquals(' foo="bar rab" bar="foo"', $attributes->render());
115118
}
119+
120+
public function testClone(): void
121+
{
122+
$original = Attributes::create([
123+
'class' => 'original-class',
124+
'value' => 'original-value'
125+
]);
126+
127+
$clone = clone $original;
128+
$clone->get('class')->setValue('clone-class');
129+
$clone->get('name')->setValue('clone-name');
130+
$clone->remove('value');
131+
132+
$cloneCone = clone $clone;
133+
$cloneCone->get('class')->addValue('clone-clone-class');
134+
$cloneCone->get('name')->setValue('clone-clone-name');
135+
$cloneCone->get('value')->setValue('clone-clone-value');
136+
137+
$this->assertSame('original-class', $original->get('class')->getValue());
138+
$this->assertSame('original-value', $original->get('value')->getValue());
139+
$this->assertNull($original->get('name')->getValue());
140+
$this->assertSame(
141+
' class="original-class" value="original-value"',
142+
$original->render()
143+
);
144+
145+
$this->assertSame('clone-class', $clone->get('class')->getValue());
146+
$this->assertNull($clone->get('value')->getValue());
147+
$this->assertSame('clone-name', $clone->get('name')->getValue());
148+
$this->assertSame(
149+
' class="clone-class" name="clone-name"',
150+
$clone->render()
151+
);
152+
153+
$this->assertSame(['clone-class', 'clone-clone-class'], $cloneCone->get('class')->getValue());
154+
$this->assertSame('clone-clone-name', $cloneCone->get('name')->getValue());
155+
$this->assertSame('clone-clone-value', $cloneCone->get('value')->getValue());
156+
$this->assertSame(
157+
' class="clone-class clone-clone-class" name="clone-clone-name" value="clone-clone-value"',
158+
$cloneCone->render()
159+
);
160+
}
116161
}

0 commit comments

Comments
 (0)