Pentia.Get-MSBuild.Tests.ps1

# Requires https://github.com/pester/Pester: Install-Module Pester -Force -SkipPublisherCheck
#Requires -Modules Pester
Import-Module "$PSScriptRoot\Pentia.Get-MSBuild.psm1" -Force

InModuleScope "Pentia.Get-MSBuild" {
    
    Describe "Get-MSBuild" {
        It "should throw an exception when MSBuild does not exist" {
            # Arrange
            Mock Invoke-hMSBuildBat { return "C:\notvalid"} -ModuleName "Pentia.Get-MSBuild"
            Mock Invoke-VSWhereExe { return "C:\notvalid"} -ModuleName "Pentia.Get-MSBuild"
    
            # Act
            $invocation = { Get-MSBuild }
    
            # Assert
            $invocation | Should throw "Didn't find MSBuild.exe."
        }
    }
    
    Describe "Get-MSBuild" {
        It "should return the path to MSBuild.exe" {
            # Act
            $msbuildPath = Get-MSBuild
    
            # Assert
            $msbuildPath | Should Not Be $null
            $msbuildPath | Should BeOfType System.String
            $msbuildPath | Should BeLike "*\MSbuild.exe"
            $msbuildPath | Should Exist
        }
    }
}