test/Publish-AdfV2FromJson-DryRun.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
    $m = Get-Module -Name 'azure.datafactory.tools'
    $script:verStr = $m.Version.ToString(2) + "." + $m.Version.Build.ToString("000")
}

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

    $m = Get-Module -Name 'azure.datafactory.tools'
    $script:verStr = $m.Version.ToString(2) + "." + $m.Version.Build.ToString("000")

    $script:RootFolder = Join-Path $PSScriptRoot 'adf2'
    $script:ResourceGroupName = 'rg-test'
    $script:DataFactoryName = 'adf-test'
    $script:Location = 'West Europe'

    Describe 'Publish-AdfV2FromJson DryRun incremental deployment' -Tag 'Unit' {
        BeforeEach {
            Mock Get-StateFromStorage {
                [AdfDeploymentState]::new($script:verStr)
            }

            Mock Set-StateToStorage {
            }
        }

        It 'should still load deployment state from storage when DryRun is enabled' {
            $opt = New-AdfPublishOption
            $opt.IncrementalDeployment = $true
            $opt.IncrementalDeploymentStorageUri = 'https://example.blob.core.windows.net/adftools/folder'
            $opt.StopStartTriggers = $false
            $opt.DeleteNotInSource = $false

            {
                Publish-AdfV2FromJson `
                    -RootFolder $script:RootFolder `
                    -ResourceGroupName $script:ResourceGroupName `
                    -DataFactoryName $script:DataFactoryName `
                    -Location $script:Location `
                    -Option $opt `
                    -DryRun
            } | Should -Not -Throw

            Should -Invoke -CommandName Get-StateFromStorage -Times 1 -Exactly
            Should -Invoke -CommandName Set-StateToStorage -Times 0 -Exactly
        }
    }
}