Public/Test-TDDSupportsShouldProcess.ps1

function Test-TDDSupportsShouldProcess {
<#
.SYNOPSIS
Tests whether a command declares SupportsShouldProcess

.DESCRIPTION
Returns $true if the command's CmdletBinding attribute declares
SupportsShouldProcess (i.e. the command opts in to -WhatIf and -Confirm).
Returns $false for a simple function, an advanced function without
SupportsShouldProcess, or one that declares SupportsShouldProcess=$false.

.PARAMETER Command
The command on which the test should be performed

.EXAMPLE
    $command = Get-Command -Name My-Command
    $supportsShouldProcess = Test-TDDSupportsShouldProcess -Command $command

.EXAMPLE
An example from a Pester test perspective:

function Remove-Thing
{
    [CmdletBinding(SupportsShouldProcess)]
    param()
}

It "Should support ShouldProcess" {
    $c = Get-Command -Name Remove-Thing
    Test-TDDSupportsShouldProcess $c | Should -BeTrue
}

.LINK
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_functions_cmdletbindingattribute

.LINK
https://pester.dev/
#>


[OutputType([Bool])]
[CmdletBinding()]
    param (
        # Parameter help description
        [Parameter(Mandatory)]
        [System.Management.Automation.CommandInfo]
        $Command
    )

    Test-TDDCmdletBindingArgument -Command $Command -ArgumentName 'SupportsShouldProcess'
}