tests/Remove-SkylineFieldIndex.Tests.ps1

$FieldName = "FieldIndexTest"
$ListName = "Documents"

Describe "Remove-SkylineFieldIndex - Root Web" {
    BeforeAll {
        $TempField = Add-PnPField -List $ListName -DisplayName $FieldName -InternalName $FieldName -Type Text
        $TempField.Indexed = $true
        $TempField.Update()
        $TempField.Context.ExecuteQuery()        
    }
    Context "removes $FieldName field index on the $ListName list on the root web" {
        It "should be indexed" {
            $Field = Get-PnPField -Identity $FieldName -List $ListName
            $Field.Indexed | Should Be $true
        }
        It "should remove the index" {
            Remove-SkylineFieldIndex -Identity $FieldName -List $ListName
        }
        It "should not be indexed" {
            $Field = Get-PnPField -Identity $FieldName -List $ListName
            $Field.Indexed | Should Be $false
        }
    }
    AfterAll {
        Remove-PnPField -Identity $FieldName -List $ListName -Force
    }
}

Describe "Add-SkylineFieldIndex - Subsite" {
    BeforeAll {
        $Subsite = @(Get-PnPSubWebs)[0]
        $TempField = Add-PnPField -List $ListName -DisplayName $FieldName -InternalName $FieldName -Type Text -Web $Subsite
        $TempField.Indexed = $true
        $TempField.Update()
        $TempField.Context.ExecuteQuery()
    }
    Context "removes $FieldName field index on the $ListName list on the subsite" {
        It "should be indexed" {
            $Field = Get-PnPField -Identity $FieldName -List $ListName -Web $Subsite
            $Field.Indexed | Should Be $true
        }
        It "should remove the index" {
            Remove-SkylineFieldIndex -Identity $FieldName -List $ListName -Web $Subsite
        }
        It "should not be indexed" {
            $Field = Get-PnPField -Identity $FieldName -List $ListName -Web $Subsite
            $Field.Indexed | Should Be $false
        }
    }
    AfterAll {
        Remove-PnPField -Identity $FieldName -List $ListName -Web $Subsite -Force
    }
}