public/maester/azuredevops/Test-AzdoResourceUsageWorkItemTag.ps1

<#
.SYNOPSIS
    Returns a boolean depending on the configuration.

.DESCRIPTION
    Checks the status of the usage of tag definitions in Azure DevOps, as Azure DevOps supports up to 150,000 tag definitions per organization or collection.

    https://learn.microsoft.com/en-us/azure/devops/organizations/settings/work/object-limits?view=azure-devops

.EXAMPLE
    ```
    Test-AzdoResourceUsageWorkItemTag
    ```

    Returns a boolean depending on the configuration.

.LINK
    https://maester.dev/docs/commands/Test-AzdoResourceUsageWorkItemTag
#>

function Test-AzdoResourceUsageWorkItemTag {
    [CmdletBinding()]
    [OutputType([bool])]
    param()

    if ($null -eq (Get-ADOPSConnection)['Organization']) {
        Write-Verbose 'Not connected to Azure DevOps'
        Add-MtTestResultDetail -SkippedBecause Custom -SkippedCustomReason 'Not connected to Azure DevOps'
        return $null
    }

    $WorkItemTags = (Get-ADOPSResourceUsage -Force).'Work Item Tags'

    $CurrentUsage = $($WorkItemTags.count / $WorkItemTags.limit).ToString("P")

    if ($($WorkItemTags.count / $WorkItemTags.limit) -gt 0.9) {
        $resultMarkdown = "Work Item Tags Resource Usage limit is greater than 90% - Current usage: $CurrentUsage"
        $result = $false
    } else {
        $resultMarkdown = "Work Item Tags Resource Usage limit is at $CurrentUsage"
        $result = $true
    }

    Add-MtTestResultDetail -Result $resultMarkdown

    return $result
}