Skip to content

Commit

Permalink
feat: add slideHasLink method and corresponding tests for link valida…
Browse files Browse the repository at this point in the history
…tion (#795)
  • Loading branch information
thorbrink authored Jan 28, 2025
1 parent 83f43b7 commit eadf9e9
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 1 deletion.
21 changes: 20 additions & 1 deletion source/php/Module/Slider/Slider.php
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,8 @@ private function getImageContract(int $imageId, ?array $focus = null): ?ImageCom
* @return array
*/
private function getLinkData(array $slide) {
if (empty($slide['link_url'])) {

if(!$this->slideHasLink($slide)) {
return $slide;
}

Expand All @@ -228,6 +229,24 @@ private function getLinkData(array $slide) {
return $slide;
}

/**
* Check if slide has link
*
* @param array $slide
* @return bool
*/
public function slideHasLink(array $slide):bool {
if( $slide['link_type'] !== 'internal' && $slide['link_type'] !== 'external' ) {
return false;
}

if( empty($slide['link_url']) ) {
return false;
}

return true;
}

/**
* Check if link url is valid
*
Expand Down
42 changes: 42 additions & 0 deletions source/php/Module/Slider/Slider.test.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php

namespace Modularity\Module\Slider;

use PHPUnit\Framework\TestCase;

class SliderTest extends TestCase {

/**
* @testdox class can be instantiated
*/
public function testClassCanBeInstantiated() {
$slider = new Slider();
$this->assertInstanceOf(Slider::class, $slider);
}

/**
* @testdox slideHasLink returns false if link_type is not internal or external
*/
public function testSlideHasLinkReturnFalseIfLinkTypeIndicatesNoLink() {
$slider = new Slider();
$linkUrl = 'https://example.com';
$this->assertFalse($slider->slideHasLink([ 'link_type' => 'false', 'link_url' => $linkUrl ]));
}

/**
* @testdox slideHasLink returns false if link_url is empty
*/
public function testSlideHasLinkReturnFalseIfLinkUrlIsEmpty() {
$slider = new Slider();
$this->assertFalse($slider->slideHasLink([ 'link_type' => 'internal', 'link_url' => '' ]));
}

/**
* @testdox slideHasLink returns true if link_type is internal and link_url is not empty
*/
public function testSlideHasLinkReturnTrueIfLinkTypeIsInternalAndLinkUrlIsNotEmpty() {
$slider = new Slider();
$linkUrl = 'https://example.com';
$this->assertTrue($slider->slideHasLink([ 'link_type' => 'internal', 'link_url' => $linkUrl ]));
}
}

0 comments on commit eadf9e9

Please sign in to comment.