. $PSScriptRoot\..\..\Load-PesterModules.ps1
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.tests\.', '.'
$functionPath = Join-Path -Path $here -ChildPath $sut
Write-Host "Overriding SUT: $functionPath"
Import-Module $functionPath -Force
$moduleForMock = ""
#region Save-XMLFile
Describe Save-XMLFile {
$tempPath = [System.IO.Path]::GetTempFileName()
$sampleXml = ''
$prettyXml = ''
Context "When the File is Valid XML" {
function Remove-TestXMLFile {
if (Test-Path $tempPath) {
Remove-Item $tempPath -Force
}
}
It "Saves the XML" {
Remove-TestXMLFile
Save-XMLFile $tempPath $sampleXml
$resultingFile = Read-XmlFile $tempPath
$resultingFile.OuterXml.ToString() | Should Match ""
}
It "Saves the XML Declaration Header" {
Remove-TestXMLFile
Save-XMLFile $tempPath $sampleXml
$resultingFile = Get-Content $tempPath
$resultingFile[0] | Should Match ''
$resultingFile[2] | Should Match ''
$resultingFile.Count | Should Be 4
}
It "Saves the XML in UTF-8 with BOM by Default" {
Remove-TestXMLFile
Save-XMLFile $tempPath $prettyXml
$resultingFile = Get-Content $tempPath
$resultingFile[0] | Should Match 'utf-8'
}
It "Saves the XML in the Specified Encoding" {
Remove-TestXMLFile
$encoding = [System.Text.Encoding]::ASCII
Save-XMLFile $tempPath $prettyXml $encoding
$resultingFile = Get-Content $tempPath
$resultingFile[0] | Should Match 'ascii'
}
}
Context "When the String is Invalid XML" {
It "Throws an Error" {
$invalidXml = "Hello World!"
{ Save-XMLFile $tempPath $invalidXml -ErrorAction SilentlyContinue } | Should Throw
}
}
}
#endregion Save-XMLFile