tests/Save-SkylineListSchema.Tests.ps1

Describe "Save-SkylineListSchema" {
    BeforeAll {
        $TempPath = (Get-Item "TestDrive:\").FullName

        New-PnPList -Title "ListSchemaTest1" -Url "ListSchemaTest1" -Template GenericList -EnableVersioning -EnableContentTypes
        $TempList1 = Get-PnPList "ListSchemaTest1"
        New-PnPList -Title "ListSchemaTest2" -Url "ListSchemaTest2" -Template Announcements
        $TempList2 = Get-PnPList "ListSchemaTest2"
    }
    Context "save temporary list 1 that was created" {
        It "should save the temporary list's provisioning schema" {
            Save-SkylineListSchema -List "ListSchemaTest1" -Path "$TempPath\ListSchemaTest1.xml"
        }
        It "should have exported an XML file" {
            Test-Path "$TempPath\ListSchemaTest1.xml" | Should Be $true
        }
        It "should only have one list instance in XML file" {
            [XML]$SchemaXML = Get-Content -Path "$TempPath\ListSchemaTest1.xml"
            @($SchemaXML.Provisioning.Templates.ProvisioningTemplate.Lists.ListInstance).Count | Should Be 1
        }
        It "should only have the target list instance by name in XML file" {
            [XML]$SchemaXML = Get-Content -Path "$TempPath\ListSchemaTest1.xml"
            $SchemaXML.Provisioning.Templates.ProvisioningTemplate.Lists.ListInstance.Title | Should Be "ListSchemaTest1"
        }
    }
    Context "save both temporary lists that were created" {
        It "should save the temporary list's provisioning schema" {
            Save-SkylineListSchema -List "ListSchemaTest1", "ListSchemaTest2" -Path "$TempPath\ListSchemaTest2.xml"
        }
        It "should have exported an XML file" {
            Test-Path "$TempPath\ListSchemaTest2.xml" | Should Be $true
        }
        It "should have two list instances in XML file" {
            [XML]$SchemaXML = Get-Content -Path "$TempPath\ListSchemaTest2.xml"
            @($SchemaXML.Provisioning.Templates.ProvisioningTemplate.Lists.ListInstance).Count | Should Be 2
        }
    }
    AfterAll {
        Remove-PnPList $TempList1 -Force
        Remove-PnPList $TempList2 -Force
    }
}