Skip to content

Commit 3cfe74e

Browse files
committed
Custom Render option test case added
1 parent 02c511d commit 3cfe74e

4 files changed

Lines changed: 187 additions & 32 deletions

File tree

src/Resource/RenderableInterface.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,9 @@
88

99
interface RenderableInterface
1010
{
11+
/**
12+
* @param $embeddedObject - Embedded object content of type Asset/Entry
13+
* @param $metadata - Tag details and attributes
14+
*/
1115
function renderOptions(array $embeddedObject, Metadata $metadata): string;
1216
}

tests/CustomOptionTest.php

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Contentstack\Tests\Utils;
6+
7+
require_once __DIR__ . '/Helpers/Utility.php';
8+
require_once __DIR__ . '/Mock/EmbedObjectMock.php';
9+
require_once __DIR__ . '/Mock/CustomOptionMock.php';
10+
11+
use Contentstack\Utils\Utils;
12+
use Contentstack\Utils\Enum\EmbedItemType;
13+
use Contentstack\Utils\Enum\StyleType;
14+
use Contentstack\Utils\Model\Metadata;
15+
use Contentstack\Utils\Model\Option;
16+
use PHPUnit\Framework\TestCase;
17+
18+
class CustomOptionTest extends TestCase
19+
{
20+
public static $customeRender;
21+
public static $embeddedEntry;
22+
public static $embeddedContentType;
23+
public static $embeddedAsset;
24+
public static $text = "Text To set Link";
25+
26+
public function getMetadata($itemType, $styleType, $linkText = null)
27+
{
28+
$html = "<test type={$itemType} sys-style-type={$styleType}>{$linkText}</test>";
29+
$element = Utility::getElement($html, '//test')[0];
30+
return new Metadata($element);
31+
}
32+
33+
public function setUp(): void
34+
{
35+
CustomOptionTest::$customeRender = new CustomOptionMock(EmbedObjectMock::embeddedModel(''));
36+
CustomOptionTest::$embeddedEntry = EmbedObjectMock::embeddedEntryModel();
37+
CustomOptionTest::$embeddedContentType = EmbedObjectMock::embeddedContentTypeUidModel();
38+
CustomOptionTest::$embeddedAsset = EmbedObjectMock::embeddedAssetModel();
39+
}
40+
public function tearDown(): void{ }
41+
42+
public function testEmbeddedContentTypeEntry(): void
43+
{
44+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::BLOCK));
45+
$this->assertEquals($resultString, '<div type="entry" sys-style-type="block" ><p>uid</p><p>Content type: <span>contentTypeUid</span></p></div>');
46+
47+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::INLINE));
48+
$this->assertEquals($resultString, '<span type="entry" sys-style-type="inline" >uid</span>');
49+
50+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::LINK));
51+
$this->assertEquals($resultString, '<a type="entry" sys-style-type="link" ></a>');
52+
}
53+
54+
public function testEmbeddedEntry(): void
55+
{
56+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::BLOCK));
57+
$this->assertEquals($resultString, '<div type="entry" sys-style-type="block" ><p>title</p><p>Content type: <span>contentTypeUid</span></p></div>');
58+
59+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::INLINE));
60+
$this->assertEquals($resultString, '<span type="entry" sys-style-type="inline" >title</span>');
61+
62+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::LINK));
63+
$this->assertEquals($resultString, '<a type="entry" sys-style-type="link" ></a>');
64+
}
65+
66+
public function testEmbeddedAsset(): void
67+
{
68+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedAsset, $this->getMetadata(EmbedItemType::ASSET, StyleType::DISPLAY));
69+
$this->assertEquals($resultString, '<img type="asset" sys-style-type="display" />');
70+
71+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedAsset, $this->getMetadata(EmbedItemType::ASSET, StyleType::DOWNLOAD));
72+
$this->assertEquals($resultString, '<a type="asset" sys-style-type="download" ></a>');
73+
}
74+
public function testEmbeddedContentTypeEntryWithText(): void
75+
{
76+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::BLOCK, CustomOptionTest::$text));
77+
$this->assertEquals($resultString, '<div type="entry" sys-style-type="block" ><p>uid</p><p>Content type: <span>contentTypeUid</span></p></div>');
78+
79+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::INLINE, CustomOptionTest::$text));
80+
$this->assertEquals($resultString, '<span type="entry" sys-style-type="inline" >uid</span>');
81+
82+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::LINK, CustomOptionTest::$text));
83+
$this->assertEquals($resultString, '<a type="entry" sys-style-type="link" >Text To set Link</a>');
84+
}
85+
86+
public function testEmbeddedEntryWithText(): void
87+
{
88+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::BLOCK, CustomOptionTest::$text));
89+
$this->assertEquals($resultString, '<div type="entry" sys-style-type="block" ><p>title</p><p>Content type: <span>contentTypeUid</span></p></div>');
90+
91+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::INLINE, CustomOptionTest::$text));
92+
$this->assertEquals($resultString, '<span type="entry" sys-style-type="inline" >title</span>');
93+
94+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::LINK, CustomOptionTest::$text));
95+
$this->assertEquals($resultString, '<a type="entry" sys-style-type="link" >Text To set Link</a>');
96+
}
97+
98+
public function testEmbeddedAssetWithText(): void
99+
{
100+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedAsset, $this->getMetadata(EmbedItemType::ASSET, StyleType::DISPLAY, CustomOptionTest::$text));
101+
$this->assertEquals($resultString, '<img type="asset" sys-style-type="display" />');
102+
103+
$resultString = CustomOptionTest::$customeRender->renderOptions(CustomOptionTest::$embeddedAsset, $this->getMetadata(EmbedItemType::ASSET, StyleType::DOWNLOAD, CustomOptionTest::$text));
104+
$this->assertEquals($resultString, '<a type="asset" sys-style-type="download" >Text To set Link</a>');
105+
}
106+
}

tests/DefaultOptionTest.php

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -40,66 +40,66 @@ public function tearDown(): void{ }
4040

4141
public function testEmbeddedContentTypeEntry(): void
4242
{
43-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::BLOCK));
44-
$this->assertEquals($blockString, '<div><p>uid</p><p>Content type: <span>contentTypeUid</span></p></div>');
43+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::BLOCK));
44+
$this->assertEquals($resultString, '<div><p>uid</p><p>Content type: <span>contentTypeUid</span></p></div>');
4545

46-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::INLINE));
47-
$this->assertEquals($blockString, '<span>uid</span>');
46+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::INLINE));
47+
$this->assertEquals($resultString, '<span>uid</span>');
4848

49-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::LINK));
50-
$this->assertEquals($blockString, '<a href=""></a>');
49+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::LINK));
50+
$this->assertEquals($resultString, '<a href=""></a>');
5151
}
5252

5353
public function testEmbeddedEntry(): void
5454
{
55-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::BLOCK));
56-
$this->assertEquals($blockString, '<div><p>title</p><p>Content type: <span>contentTypeUid</span></p></div>');
55+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::BLOCK));
56+
$this->assertEquals($resultString, '<div><p>title</p><p>Content type: <span>contentTypeUid</span></p></div>');
5757

58-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::INLINE));
59-
$this->assertEquals($blockString, '<span>title</span>');
58+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::INLINE));
59+
$this->assertEquals($resultString, '<span>title</span>');
6060

61-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::LINK));
62-
$this->assertEquals($blockString, '<a href=""></a>');
61+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::LINK));
62+
$this->assertEquals($resultString, '<a href=""></a>');
6363
}
6464

6565
public function testEmbeddedAsset(): void
6666
{
67-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedAsset, $this->getMetadata(EmbedItemType::ASSET, StyleType::DISPLAY));
68-
$this->assertEquals($blockString, '<img src="URL" alt="asset" />');
67+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedAsset, $this->getMetadata(EmbedItemType::ASSET, StyleType::DISPLAY));
68+
$this->assertEquals($resultString, '<img src="URL" alt="asset" />');
6969

70-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedAsset, $this->getMetadata(EmbedItemType::ASSET, StyleType::DOWNLOAD));
71-
$this->assertEquals($blockString, '<a href="URL"></a>');
70+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedAsset, $this->getMetadata(EmbedItemType::ASSET, StyleType::DOWNLOAD));
71+
$this->assertEquals($resultString, '<a href="URL"></a>');
7272
}
7373
public function testEmbeddedContentTypeEntryWithText(): void
7474
{
75-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::BLOCK, DefaultOptionTest::$text));
76-
$this->assertEquals($blockString, '<div><p>uid</p><p>Content type: <span>contentTypeUid</span></p></div>');
75+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::BLOCK, DefaultOptionTest::$text));
76+
$this->assertEquals($resultString, '<div><p>uid</p><p>Content type: <span>contentTypeUid</span></p></div>');
7777

78-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::INLINE, DefaultOptionTest::$text));
79-
$this->assertEquals($blockString, '<span>uid</span>');
78+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::INLINE, DefaultOptionTest::$text));
79+
$this->assertEquals($resultString, '<span>uid</span>');
8080

81-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::LINK, DefaultOptionTest::$text));
82-
$this->assertEquals($blockString, '<a href="">Text To set Link</a>');
81+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedContentType, $this->getMetadata(EmbedItemType::ENTRY, StyleType::LINK, DefaultOptionTest::$text));
82+
$this->assertEquals($resultString, '<a href="">Text To set Link</a>');
8383
}
8484

8585
public function testEmbeddedEntryWithText(): void
8686
{
87-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::BLOCK, DefaultOptionTest::$text));
88-
$this->assertEquals($blockString, '<div><p>title</p><p>Content type: <span>contentTypeUid</span></p></div>');
87+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::BLOCK, DefaultOptionTest::$text));
88+
$this->assertEquals($resultString, '<div><p>title</p><p>Content type: <span>contentTypeUid</span></p></div>');
8989

90-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::INLINE, DefaultOptionTest::$text));
91-
$this->assertEquals($blockString, '<span>title</span>');
90+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::INLINE, DefaultOptionTest::$text));
91+
$this->assertEquals($resultString, '<span>title</span>');
9292

93-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::LINK, DefaultOptionTest::$text));
94-
$this->assertEquals($blockString, '<a href="">Text To set Link</a>');
93+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedEntry, $this->getMetadata(EmbedItemType::ENTRY, StyleType::LINK, DefaultOptionTest::$text));
94+
$this->assertEquals($resultString, '<a href="">Text To set Link</a>');
9595
}
9696

9797
public function testEmbeddedAssetWithText(): void
9898
{
99-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedAsset, $this->getMetadata(EmbedItemType::ASSET, StyleType::DISPLAY, DefaultOptionTest::$text));
100-
$this->assertEquals($blockString, '<img src="URL" alt="asset" />');
99+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedAsset, $this->getMetadata(EmbedItemType::ASSET, StyleType::DISPLAY, DefaultOptionTest::$text));
100+
$this->assertEquals($resultString, '<img src="URL" alt="asset" />');
101101

102-
$blockString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedAsset, $this->getMetadata(EmbedItemType::ASSET, StyleType::DOWNLOAD, DefaultOptionTest::$text));
103-
$this->assertEquals($blockString, '<a href="URL">Text To set Link</a>');
102+
$resultString = DefaultOptionTest::$defaultRender->renderOptions(DefaultOptionTest::$embeddedAsset, $this->getMetadata(EmbedItemType::ASSET, StyleType::DOWNLOAD, DefaultOptionTest::$text));
103+
$this->assertEquals($resultString, '<a href="URL">Text To set Link</a>');
104104
}
105105
}

tests/Mock/CustomOptionMock.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Contentstack\Tests\Utils;
6+
7+
use Contentstack\Utils\Resource\EntryEmbedable;
8+
use Contentstack\Utils\Resource\RenderableInterface;
9+
use Contentstack\Utils\Resource\EmbeddedObject;
10+
use Contentstack\Utils\Model\Option;
11+
use Contentstack\Utils\Model\Metadata;
12+
use Contentstack\Utils\Enum\StyleType;
13+
14+
class CustomOptionMock extends Option {
15+
16+
function renderOptions(array $embeddedObject, Metadata $metadata): string
17+
{
18+
$attributeStrig = "";
19+
$resultString = "";
20+
21+
foreach($metadata->getAttributes() as $attribute_name => $attribute_node)
22+
{
23+
$attributeStrig = $attributeStrig."{$attribute_name}=\"{$attribute_node->value}\" ";
24+
}
25+
26+
switch ($metadata->getStyleType()) {
27+
case StyleType::get(StyleType::BLOCK):
28+
$resultString = "<div ".$attributeStrig."><p>" . ($embeddedObject["title"] ?? $embeddedObject["uid"]) . "</p><p>Content type: <span>". $embeddedObject["_content_type_uid"] ."</span></p></div>";
29+
break;
30+
case StyleType::get(StyleType::INLINE):
31+
$resultString = "<span ".$attributeStrig.">".($embeddedObject["title"] ?? $embeddedObject["uid"])."</span>";
32+
break;
33+
case StyleType::get(StyleType::LINK):
34+
$resultString = "<a ".$attributeStrig.">".($metadata->getText() ?? $embeddedObject["title"] ?? $embeddedObject["uid"])."</a>";
35+
break;
36+
case StyleType::get(StyleType::DISPLAY):
37+
$resultString = "<img ".$attributeStrig." />";
38+
break;
39+
case StyleType::get(StyleType::DOWNLOAD):
40+
$resultString = "<a ".$attributeStrig.">".($metadata->getText() ?? $embeddedObject["filename"]?? $embeddedObject["title"] ?? $embeddedObject["uid"])."</a>";
41+
break;
42+
}
43+
return $resultString;
44+
}
45+
}

0 commit comments

Comments
 (0)