Get-EuroExchange.Tests.ps1

$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
. "$here\$sut"


 
Describe "Get-EuroExchange" {
    
    $content = Invoke-WebRequest -Uri "http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml" | Select-Object -ExpandProperty Content 
    $cubes = ([xml]$content).Envelope.Cube.Cube.Cube

    It "Ist der Currency-Wert korrekt" {
        (Get-EuroExchange -Currency USD).Currency | Should Be 'USD'
    }
    
    It "Ist die Rate korrekt" {
        [decimal]$rate = $cubes | Where-Object -Property Currency -EQ -Value USD | Select-Object -ExpandProperty Rate
        (Get-EuroExchange -Currency USD).Rate | Should Be $rate
    }

    $today = New-Object datetime(2000,1,1)
    Mock Get-Date {$today}

}




<# ! UTest: Feature-Umfang
Get-EuroExchange -Currency USD
Get-EuroExchange -Währung USD
Get-EuroExchange -Currency USD -Euros 100
Get-EuroExchange -ListCurrency
Get-EuroExchange
"USD", "RUB", "AUD" | Get-EuroExchange
"USD", "RUB", "AUD" | Get-EuroExchange -Euros 100
"USD,10", "RUB,100", "AUD,1000" | ConvertFrom-Csv -Header Currency, Euros | Get-EuroExchange
"USD,10", "RUB,100", "AUD,1000" | ConvertFrom-Csv -Header Currency, Euros | Get-EuroExchange | Where-Object SumCurrency -GE 1000
"USD,10", "RUB,100", "AUD,1000" | ConvertFrom-Csv -Header Currency, Euros | Get-EuroExchange | Out-GridView
#"USD,10", "RUB,100", "AUD,1000" | ConvertFrom-Csv -Header Währung, Euronen | Get-EuroExchange
Get-EuroExchange -ListCurrency | Get-EuroExchange -Euros 1000
Get-Help -Name Get-EuroExchange -ShowWindow
Show-Command -Name Get-EuroExchange -NoCommonParameter -ErrorPopup | Out-GridView
#>

<# ! UTEST: Validierung
Get-EuroExchange # Currency mus abgefragt werden
Get-EuroExchange -Currency USD -ListCurrency # Diese Parameter-Kombination ist nicht erlaubt
Get-EuroExchange -Euros 100 -ListCurrency # Diese Parameter-Kombination ist nicht erlaubt
Get-EuroExchange -Currency 987 # Keine Zahlen
Get-EuroExchange -Currency DOLLAR # Zuviel Zeichen
Get-EuroExchange -Currency as # Zuwenig Zeichen
Get-EuroExchange -Currency XXX # Gibt es nicht
Get-EuroExchange -Currency USD -Euros -100 # Negative Euros sind nicht erlaubt
Get-EuroExchange -Currency USD -Euros 1000001 # Größer als der max. Bereich.
Get-EuroExchange -Currency USD -Euros 0 # 0 Euros sind nicht erlaubt
Get-EuroExchange -Currency USD -Euros hundert # Nur Zahlen sind erlaubt
Get-EuroExchange -Euros 100 # Ohne Währungssymbol nicht erlaubt
Get-EuroExchange -Currency USD, RUB # Zuviel Währungen
Get-EuroExchange -Currency USD -Euros 50, 100 # Zuviel Euros
#>