tests/Get-WorkdayWorker.Tests.ps1

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

Describe Get-WorkdayWorker {
    InModuleScope WorkdayApi {

        Mock Invoke-WorkdayRequest {
            Mock_Invoke-WorkdayRequest_Echo @args
        }

        It 'Creates the correct XML for the Workday request.' {

        $expectedResponse = @'
<bsvc:Get_Workers_Request bsvc:version="v30.0" xmlns:bsvc="urn:com.workday/bsvc"><bsvc:Request_References bsvc:Skip_Non_Existing_Instances="false"><bsvc:Worker_Reference><bsvc:ID bsvc:type="Employee_ID">1</bsvc:ID></bsvc:Worker_Reference></bsvc:Request_References><bsvc:Response_Filter><bsvc:Page>1</bsvc:Page><bsvc:As_Of_Entry_DateTime></bsvc:As_Of_Entry_DateTime></bsvc:Response_Filter><bsvc:Request_Criteria><bsvc:Exclude_Inactive_Workers>true</bsvc:Exclude_Inactive_Workers></bsvc:Request_Criteria><bsvc:Response_Group><bsvc:Include_Reference>true</bsvc:Include_Reference><bsvc:Include_Personal_Information>false</bsvc:Include_Personal_Information><bsvc:Include_Employment_Information>false</bsvc:Include_Employment_Information><bsvc:Include_Compensation>false</bsvc:Include_Compensation><bsvc:Include_Organizations>false</bsvc:Include_Organizations><bsvc:Include_Roles>false</bsvc:Include_Roles><bsvc:Include_Worker_Documents>false</bsvc:Include_Worker_Documents></bsvc:Response_Group></bsvc:Get_Workers_Request>
'@

            $response = Get-WorkdayWorker -WorkerId 1 -WorkerType Employee_ID -Passthru
            $response.Xml.Get_Workers_Request.Response_Filter.As_Of_Entry_DateTime = ''
            $response.Xml.OuterXml | Should BeExactly $expectedResponse
            Assert-MockCalled Invoke-WorkdayRequest -Exactly 1
        }

        It 'Returns expected worker information.' {

            Mock Invoke-WorkdayRequest {
                Mock_Invoke-WorkdayRequest_ExampleWorker
            }

            $response = @(Get-WorkdayWorker -WorkerId 1 -WorkerType Employee_ID -IncludePersonal)
            $response.Count | Should Be 1
            $response[0].XML -is [XML] | Should Be $true
            $response[0].WorkerWid | Should Be '00000000000000000000000000000000'
            $response[0].PreferredName | Should Be 'Example Worker'
            $response[0].Phone.Count | Should Be 1
            $response[0].Email.Count | Should Be 1
            @($response[0].NationalId).Count | Should Be 1
            @($response[0].OtherId).Count | Should Be 1
            $response[0].BusinessUnit | Should Be 'Business Unit Organization Name'
            Assert-MockCalled Invoke-WorkdayRequest -Exactly 2

        }

        It 'Excepts the IncludeInactive parameter.' {
            $null = Get-WorkdayWorker -WorkerId 1 -WorkerType Employee_ID -IncludeInactive
            Assert-MockCalled Invoke-WorkdayRequest -Exactly 3
        }

    }
}