PsWrite.Tests.ps1

<#
    .SYNOPSIS
        TEST TDD RDS
    .DESCRIPTION
        Unblock-File
    .EXAMPLE
        While ($true) {$test = Invoke-Pester -CodeCoverage .\RDS.Tests.ps1 -PassThru; $test.FailedCount; start-sleep -s 15}
    .EXAMPLE
        https://github.com/pester/Pester/wiki/Should

        Be
        BeExactly
        BeGreaterThan
        BeGreaterOrEqual
        BeIn
        BeLessThan
        BeLessOrEqual
        BeLike
        BeLikeExactly
        BeOfType
        BeTrue
        BeFalse
        HaveCount
        Contain
        Exist
        FileContentMatch
        FileContentMatchExactly
        FileContentMatchMultiline
        Match
        MatchExactly
        Throw
        BeNullOrEmpty

    .NOTES
        Alopez 2017
        Em@il : alban.lopez@gmail.com

        require https://github.com/pester/Pester

        https://github.com/pester/Pester/wiki/Should
        Get-ChildItem C:\Users\alopez\Documents\WindowsPowerShell\Modules\Pester\ -Recurse | Unblock-File
 #>


$psd1 = $MyInvocation.MyCommand.Source -replace ('\.Tests\.ps1', '.psd1')
$psd1 | Import-Module -Force
 #Get-ChildItem $("$($MyInvocation.MyCommand.Path)\RDS.Tests.ps1" -replace('\.Tests\.ps1', '*.psm1')) | %{Import-Module $_.FullName -Force}
 function global:Write-LogStep {}
 function global:Write-Color {}
 Describe "Module - Testing Manifest File (.psd1)" {
    Context "Manifest" {
        It "Test-ModuleManifest $psd1" {
            {Test-ModuleManifest $psd1 -ea Stop} | Should -not -Throw
        }
        $Manifest = Test-ModuleManifest $psd1 -ea 0
        It "Manifest Version" {
            $Manifest.Version -ge [version]'0.0.0.1' | Should -BeTrue
        }
        It "Manifest commands" {
            $Manifest.ExportedCommands.count | Should -not -BeNullOrEmpty
        }
    }
}
Describe "Write-* real test" {
    #
    $global:JENKINS = $false
    Context "Console Mode" {
        $psd1 | Import-Module -Force
        function Global:Write-Host($Object) { $Object }

        #Mock Write-Host {$true}
        It "Write-Host" {
            write-host 'test' | Should -Be 'test'
        }
        It "Write-color" {
           ( write-color 0,1,2,3,4,5,6 -fore red,cyan) -join('') | Should -Be '0123456'
        }
        It "Write-logstep ok" {
            (write-logstep '0,1,2,3','4,5' ok ) -join('') | Should -Match "\[ OK \] .*"
        }
        It "Write-logstep error" {
            (write-logstep '0,1,2,3','4,5',6 error ) -join('') | Should -Match "\[ Error! \] .*"
        }
        It "Write-logstep Other" {
            (write-logstep '0,1,2,3','4,5',6 Other -LogTrace .\fake.txt ) -join('') | Should -Match "\[ Other\? \] .*"
        }
        It "Write-logstep info" {
            (write-logstep '0,1,2,3','4,5',6 info -LogTrace vdiv03 ) -join('') | Should -Match "\[ Info \] .*"
        }
        It "Write-logstep long warn" {
            (write-logstep 'Try with long title for cut it ','Try with long message for cut it' -prefixe '%caller% L.%line%' warn ) -join('') | Should -Match "\[ Warn \] .*"
        }
        It "Write-Object" {
            (write-Object @{x='0,1,2,3'} -fore red ) -join('') | Should -Match "`"x`": `"0,1,2,3`""
        }
        It "Write-Center" {
            (write-Center 'center' -fore black ) -join('') | Should -Match " *center *"
        }
        It "Write-ProgressBarreColor" {
            (Write-ProgressBarreColor 50 -Width 20 -block 'X' -empty '-') -join('') | should -be '[XXXXXXXXX---------] 50,0%'
        }
    }

    $global:JENKINS = $true
    $psd1 | Import-Module -Force
    Context "Jenkins Mode" {
        function Global:Write-HostOriginal($Object) { $Object }
        It "Write-color" {
            (
               write-color @('Green ','DarkGreen ','Black ','Red ','DarkRed ','Yellow ','DarkYellow ','Blue ','DarkBlue ','Magenta ','DarkMagenta ','Cyan ','DarkCyan ','White ','Gray ','DarkGray') `
                -ForeGroundColor Red,DarkRed,Yellow,DarkYellow,Blue,DarkBlue,Magenta,DarkMagenta,Cyan,DarkCyan,White,Gray,DarkGray `
                -BackGroundColor Green,DarkGreen,Black,Red,DarkRed,Yellow,DarkYellow,Blue,DarkBlue,Magenta,DarkMagenta,Cyan,DarkCyan,White,Gray,DarkGray
            ) -join('') | Should -Be 'Green DarkGreen Black Red DarkRed Yellow DarkYellow Blue DarkBlue Magenta DarkMagenta Cyan DarkCyan White Gray DarkGray'
        }
    }
}# >

$global:JENKINS = $false
$psd1 | Import-Module -Force
function Global:Write-Host($Object) { $Object }

Describe "Man" {
    Context "CodeFuntion" {
        It "Build-Readme.md" {
            {Build-Readme.md '*.psm1' -MarkDownFileName 'README.md'} | Should -Not -Throw
        }
    }
}


$metaData = New-Object System.Management.Automation.CommandMetaData (Get-Command 'Microsoft.PowerShell.Utility\Write-Host')
Invoke-Expression "function Global:Write-Host { $([System.Management.Automation.ProxyCommand]::create($metaData)) }"

$psd1 | Import-Module -Force