tests/general/strings.Tests.ps1

<#
.DESCRIPTION
    This test verifies, that all strings that have been used,
    are listed in the language files and thus have a message being displayed.
 
    It also checks, whether the language files have orphaned entries that need cleaning up.
#>




Describe "Testing localization strings" {
    $moduleRoot = (Get-Module CmdFav).ModuleBase
    $stringsResults = Export-PSMDString -ModuleRoot $moduleRoot
    $exceptions = & "$global:testroot\general\strings.Exceptions.ps1"
    
    foreach ($stringEntry in $stringsResults) {
        if ($stringEntry.String -eq "key") { continue } # Skipping the template default entry
        It "Should be used & have text: $($stringEntry.String)" -TestCases @{ stringEntry = $stringEntry; exceptions = $exceptions } {
            if ($exceptions.LegalSurplus -notcontains $stringEntry.String) {
                $stringEntry.Surplus | Should -BeFalse
            }
            if ($exceptions.NoTextNeeded -notcontains $stringEntry.String) {
                $stringEntry.Text | Should -Not -BeNullOrEmpty
            }
        }
    }
}