tests/Set-WorkdayWorkerDocument.Tests.ps1

Get-Module WorkdayApi | Remove-Module -Force
Import-Module "$PsScriptRoot\..\WorkdayApi.psd1" -Force
Import-Module "$PsScriptRoot\Invoke-WorkdayRequestHelper.psm1" -Force -DisableNameChecking

Describe Set-WorkdayWorkerDocument {
    InModuleScope WorkdayApi {

        Mock Invoke-WorkdayRequest {
            Mock_Invoke-WorkdayRequest_Echo @args
        }

        $testFilePath = Join-Path $TestDrive 'TestFile.txt'
        Set-Content -Value 'Test File' -Path $testFilePath

        It 'Creates the expected request XML.' {
            $expectedResponse = @'
<bsvc:Put_Worker_Document_Request bsvc:version="v30.0" bsvc:Add_Only="false" xmlns:bsvc="urn:com.workday/bsvc"><bsvc:Worker_Document_Data><bsvc:Filename>DifferentFileName.txt</bsvc:Filename><!--Optional:--><bsvc:Comment>Test Comment</bsvc:Comment><bsvc:File>VGVzdCBGaWxlDQo=</bsvc:File><bsvc:Document_Category_Reference><bsvc:ID bsvc:type="WID">TestId</bsvc:ID></bsvc:Document_Category_Reference><bsvc:Worker_Reference><bsvc:ID bsvc:type="WID">1</bsvc:ID></bsvc:Worker_Reference><bsvc:Content_Type>text/plain</bsvc:Content_Type></bsvc:Worker_Document_Data></bsvc:Put_Worker_Document_Request>
'@

            $arguments = @{
                WorkerId = 1
                WorkerType = 'WID'
                Path = $testFilePath
                FileName = 'DifferentFileName.txt'
                CategoryType = 'WID'
                CategoryId = 'TestId'
                Comment = 'Test Comment'
            }
            $response = Set-WorkdayWorkerDocument @arguments

            $response.Xml.OuterXml | Should BeExactly $expectedResponse
            Assert-MockCalled Invoke-WorkdayRequest -Exactly 1

        }
    }
}