AnnounceFetcherUnitTest.php

Same filename in other branches
  1. 10 core/modules/announcements_feed/tests/src/Unit/AnnounceFetcherUnitTest.php

Namespace

Drupal\Tests\announcements_feed\Unit

File

core/modules/announcements_feed/tests/src/Unit/AnnounceFetcherUnitTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\announcements_feed\Unit;

use Drupal\Tests\UnitTestCase;
use Drupal\announcements_feed\AnnounceFetcher;

/**
 * Simple test to ensure that asserts pass.
 *
 * @group announcements_feed
 */
class AnnounceFetcherUnitTest extends UnitTestCase {
    
    /**
     * The Fetcher service object.
     *
     * @var \Drupal\announcements_feed\AnnounceFetcher
     */
    protected AnnounceFetcher $fetcher;
    
    /**
     * {@inheritdoc}
     */
    public function setUp() : void {
        parent::setUp();
        $httpClient = $this->createMock('GuzzleHttp\\ClientInterface');
        $config = $this->getConfigFactoryStub([
            'announcements_feed.settings' => [
                'max_age' => 86400,
                'cron_interval' => 21600,
                'limit' => 10,
            ],
        ]);
        $tempStore = $this->createMock('Drupal\\Core\\KeyValueStore\\KeyValueExpirableFactoryInterface');
        $tempStore->expects($this->once())
            ->method('get')
            ->willReturn($this->createMock('Drupal\\Core\\KeyValueStore\\KeyValueStoreExpirableInterface'));
        $logger = $this->createMock('Psr\\Log\\LoggerInterface');
        $this->fetcher = new AnnounceFetcher($httpClient, $config, $tempStore, $logger, 'https://www.drupal.org/announcements.json');
    }
    
    /**
     * Test the ValidateUrl() method.
     *
     * @covers \Drupal\announcements_feed\AnnounceFetcher::validateUrl
     *
     * @dataProvider urlProvider
     */
    public function testValidateUrl($url, $isValid) : void {
        $this->assertEquals($isValid, $this->fetcher
            ->validateUrl($url));
    }
    
    /**
     * Data for the testValidateUrl.
     */
    public static function urlProvider() : array {
        return [
            [
                'https://www.drupal.org',
                TRUE,
            ],
            [
                'https://drupal.org',
                TRUE,
            ],
            [
                'https://api.drupal.org',
                TRUE,
            ],
            [
                'https://a.drupal.org',
                TRUE,
            ],
            [
                'https://123.drupal.org',
                TRUE,
            ],
            [
                'https://api-new.drupal.org',
                TRUE,
            ],
            [
                'https://api_new.drupal.org',
                TRUE,
            ],
            [
                'https://api-.drupal.org',
                TRUE,
            ],
            [
                'https://www.example.org',
                FALSE,
            ],
            [
                'https://example.org',
                FALSE,
            ],
            [
                'https://api.example.org/project/announce',
                FALSE,
            ],
            [
                'https://-api.drupal.org',
                FALSE,
            ],
            [
                'https://a.example.org/project/announce',
                FALSE,
            ],
            [
                'https://test.drupaal.com',
                FALSE,
            ],
            [
                'https://api.drupal.org.example.com',
                FALSE,
            ],
            [
                'https://example.org/drupal.org',
                FALSE,
            ],
        ];
    }

}

Classes

Title Deprecated Summary
AnnounceFetcherUnitTest Simple test to ensure that asserts pass.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.