. $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