test/Remove-AdfObject.Tests.ps1

BeforeDiscovery {
    $ModuleRootPath = $PSScriptRoot | Split-Path -Parent
    $moduleManifestName = 'azure.datafactory.tools.psd1'
    $moduleManifestPath = Join-Path -Path $ModuleRootPath -ChildPath $moduleManifestName

    Import-Module -Name $moduleManifestPath -Force -Verbose:$false
}

InModuleScope azure.datafactory.tools {
    $testHelperPath = $PSScriptRoot | Join-Path -ChildPath 'TestHelper'
    Import-Module -Name $testHelperPath -Force

    # Variables for use in tests
    $t = Get-TargetEnv 'adf1'
    $script:DataFactoryOrigName = $t.DataFactoryOrigName
    $script:DataFactoryName = $t.DataFactoryName
    $script:Location = $t.Location
    $script:ResourceGroupName = $t.ResourceGroupName
    $script:Stage = 'UAT'
    $script:RootFolder = Join-Path $PSScriptRoot $t.DataFactoryOrigName
    $script:adf = Import-AdfFromFolder -FactoryName $script:DataFactoryName -RootFolder $script:RootFolder
    $adf.ResourceGroupName = $t.ResourceGroupName
    $adf.Region = $t.Location
    $o = New-AdfPublishOption
    $o.StopStartTriggers = $false
    $adf.PublishOptions = $o
    Publish-AdfV2FromJson -RootFolder $RootFolder -DataFactoryName $DataFactoryName -ResourceGroupName $ResourceGroupName -Option $o -Location $Location
    $script:adfIns = Get-AdfFromService -FactoryName $DataFactoryName -ResourceGroupName $ResourceGroupName


    Describe 'Remove-AdfObject' {
        It 'Should exist' {
            { Get-Command -Name 'Remove-AdfObject' -ErrorAction Stop } | Should -Not -Throw
        }


        Context 'When called for dep object but it is excluded' {
            It 'Should not delete any object' {
                $objCountBefore = $adfIns.AllObjects().Count
                $objToDelete = $script:adfIns.LinkedServices[0]
                $script:adf.PublishOptions.Includes.Add('*.*2','')
                Remove-AdfObject -adfSource $script:adf -obj $objToDelete -adfInstance $script:adfIns
                $adfIns = Get-AdfFromService -FactoryName $DataFactoryName -ResourceGroupName $ResourceGroupName
                $objCountAfter = $adfIns.AllObjects().Count
                $objCountAfter | Should -Be $objCountBefore
            }
        }

        Context 'When called for dep object' {
            It 'Should delete all dependant objects when option DoNotDeleteExcludedObj = false' {
                $objCountBefore = $adfIns.AllObjects().Count
                $objToDelete = $script:adfIns.LinkedServices[0]
                $opt = New-AdfPublishOption
                $opt.StopStartTriggers = $false
                $opt.DoNotDeleteExcludedObjects = $false
                $opt.Includes.Add('*.*2','')
                $script:adf.PublishOptions = $opt
                { Remove-AdfObject -adfSource $script:adf -obj $objToDelete -adfInstance $script:adfIns -ErrorAction Stop } | Should -Not -Throw
                #Remove-AdfObject -adfSource $script:adf -obj $objToDelete -adfInstance $script:adfIns
                $adfIns = Get-AdfFromService -FactoryName $DataFactoryName -ResourceGroupName $ResourceGroupName
                $objCountAfter = $adfIns.AllObjects().Count
                $objCountAfter | Should -Be 0
            }
        }



    } 
}