1 | <?php |
||
2 | |||
3 | namespace SilverStripe\ElementalBlocks\Tests\Block; |
||
4 | |||
5 | use SilverStripe\CMS\Model\SiteTree; |
||
6 | use SilverStripe\Dev\SapphireTest; |
||
7 | use SilverStripe\ElementalBlocks\Block\BannerBlock; |
||
8 | use SilverStripe\Forms\HTMLEditor\TinyMCEConfig; |
||
9 | use SilverStripe\View\ArrayData; |
||
10 | use SilverStripe\View\Requirements; |
||
11 | |||
12 | class BannerBlockTest extends SapphireTest |
||
13 | { |
||
14 | protected static $fixture_file = 'BannerBlockTest.yml'; |
||
15 | |||
16 | public function testTinyMceJavascriptIsRequiredBeforeBlocks() |
||
17 | { |
||
18 | $block = new BannerBlock; |
||
19 | $block->getCMSFields(); |
||
20 | |||
21 | $javascript = Requirements::backend()->getJavascript(); |
||
22 | |||
23 | // Ensure TinyMCE's scripts are loaded first |
||
24 | $mcePath = TinyMCEConfig::get()->getScriptURL(); |
||
25 | $this->assertArrayHasKey($mcePath, $javascript, 'TinyMCE is loaded first'); |
||
26 | |||
27 | // By pushing the bundle reference again, the size of the requirements shouldn't change |
||
28 | $this->assertNotEmpty($javascript); |
||
29 | Requirements::javascript('silverstripe/elemental-blocks:client/dist/js/bundle.js'); |
||
30 | $this->assertSame( |
||
31 | count($javascript), |
||
32 | count(Requirements::backend()->getJavascript()), |
||
33 | 'Blocks bundle is added' |
||
34 | ); |
||
35 | } |
||
36 | |||
37 | public function testCallToActionLink() |
||
38 | { |
||
39 | $block = new BannerBlock; |
||
40 | $this->assertNull($block->CallToActionLink(), 'No link data set returns null'); |
||
41 | |||
42 | $block->CallToActionLink = json_encode([ |
||
0 ignored issues
–
show
Bug
Best Practice
introduced
by
![]() |
|||
43 | 'PageID' => $this->idFromFixture(SiteTree::class, 'test_page'), |
||
44 | 'Text' => 'Click here', |
||
45 | 'Description' => 'Link title text', |
||
46 | 'TargetBlank' => true, |
||
47 | ]); |
||
48 | |||
49 | $result = $block->CallToActionLink(); |
||
50 | $this->assertInstanceOf(ArrayData::class, $result, 'ArrayData object is returned'); |
||
51 | $this->assertEquals($this->idFromFixture(SiteTree::class, 'test_page'), $result->Page->ID, 'Page is attached'); |
||
52 | $this->assertInstanceOf(SiteTree::class, $result->Page); |
||
53 | $this->assertSame('Link title text', $result->Description, 'Link attributes are available'); |
||
54 | } |
||
55 | } |
||
56 |