Testing/Unit/PowerShell/Orchestrator/Get-FullOutJsonName.Tests.ps1

$OrchestratorPath = '../../../../Modules/Orchestrator.psm1'
Import-Module (Join-Path -Path $PSScriptRoot -ChildPath $OrchestratorPath) -Function 'Get-FullOutJsonName'

Describe -Tag 'Orchestrator' -Name 'Get-FullOutJsonName' {
    InModuleScope Orchestrator {
        It 'Adds the full UUID' {
            $FullNameParams = @{
                'OutJsonFileName'                  = "CyberResults";
                'Guid'                             = "30ebce05-f8f0-4a09-8ec2-589efbbd0e72";
                'NumberOfUUIDCharactersToTruncate' = 0;
            }
            (Get-FullOutJsonName @FullNameParams) | Should -eq "CyberResults_30ebce05-f8f0-4a09-8ec2-589efbbd0e72.json"
        }
        It 'Handles partial truncation' {
            $FullNameParams = @{
                'OutJsonFileName'                  = "CyberResults";
                'Guid'                             = "30ebce05-f8f0-4a09-8ec2-589efbbd0e72";
                'NumberOfUUIDCharactersToTruncate' = 18;
            }
            (Get-FullOutJsonName @FullNameParams) | Should -eq "CyberResults_30ebce05-f8f0-4a09.json"
        }
        It 'Handles full truncation' {
            $FullNameParams = @{
                'OutJsonFileName'                  = "CyberResults";
                'Guid'                             = "30ebce05-f8f0-4a09-8ec2-589efbbd0e72";
                'NumberOfUUIDCharactersToTruncate' = 36;
            }
            (Get-FullOutJsonName @FullNameParams) | Should -eq "CyberResults.json"
        }
        It 'Handles non-default names' {
            $FullNameParams = @{
                'OutJsonFileName'                  = "my_results";
                'Guid'                             = "30ebce05-f8f0-4a09-8ec2-589efbbd0e72";
                'NumberOfUUIDCharactersToTruncate' = 18;
            }
            (Get-FullOutJsonName @FullNameParams) | Should -eq "my_results_30ebce05-f8f0-4a09.json"
        }
    }
}

AfterAll {
    Remove-Module Orchestrator -ErrorAction SilentlyContinue
}