Tests/Private/MapUrlsWithHostName.Tests.ps1

$PSScriptRoot = "$PSScriptRoot/../../";
. "$PSScriptRoot/Private/MapUrlsWithHostName";

Describe "MapUrlsWithHostName" {
    Mock -CommandName Write-Host -Verifiable -MockWith { };
    Mock -CommandName Write-Output -Verifiable -MockWith { };

    It "SingleUrl" {

        # Assing
        $defaultHostName = "someHostName.tld";
        $WarmupUrls = "/page";

        # Act
        $result = MapUrlsWithHostName -defaultHostName $defaultHostName -urls $WarmupUrls;

        # Assert
        $result | Should Be "https://$defaultHostName/page/";

    }

    It "RootUrl HasNoTrailing /" {

        # Assing
        $defaultHostName = "someHostName.tld";
        $WarmupUrls = "/image.png";

        $WarmupUrls = @(
            "/image.png"
            "/image.png?width=something"
            "/image.png?width=something&height=something"
        );
        # Act
        $result = MapUrlsWithHostName -defaultHostName $defaultHostName -urls $WarmupUrls;

        # Assert
        $result | Should Be @(
            "https://$defaultHostName/image.png"
            "https://$defaultHostName/image.png?width=something"
            "https://$defaultHostName/image.png?width=something&height=something"
        );

    }

    It "UrlWithExtension HasNoTrailing /" {

        # Assing
        $defaultHostName = "someHostName.tld";
        $WarmupUrls = "/";

        # Act
        $result = MapUrlsWithHostName -defaultHostName $defaultHostName -urls $WarmupUrls;

        # Assert
        $result | Should Be "https://$defaultHostName"

    }

    It "MultiUrl" {

        # Assing
        $defaultHostName = "someHostName.tld";
        $WarmupUrls = @(
            "/"
            "/page-a/"
            "/page-b"
        );

        # Act
        $result = MapUrlsWithHostName -defaultHostName $defaultHostName -urls $WarmupUrls;

        # Assert
        $result | Should Be @(
            "https://$defaultHostName"
            "https://$defaultHostName/page-a/"
            "https://$defaultHostName/page-b/"
        );

    }

    It "MissingParameters ShouldFail" {

        # Act
        $noDefaultHostName = { MapUrlsWithHostName -defaultHostName "hostname"; }
        $noUrls = { MapUrlsWithHostName -urls "/"; }
        $none = { MapUrlsWithHostName; }

        # Assert
        $noDefaultHostName | Should Throw "urls parameter is null";
        $noUrls | Should Throw "defaultHostName parameter is null or empty";
        $none | Should Throw "defaultHostName parameter is null or empty";

    }
}