tests/Copy-DbaDatabase.Tests.ps1
$commandname = $MyInvocation.MyCommand.Name.Replace(".ps1", "") Write-Host -Object "Running $PSCommandpath" -ForegroundColor Cyan . "$PSScriptRoot\constants.ps1" Describe "$commandname Integration Tests" -Tags "IntegrationTests" { BeforeAll { $BackupLocation = "$script:appeyorlabrepo\singlerestore\singlerestore.bak" $NetworkPath = "C:\temp" $DBNameBackupRestore = "dbatoolsci_singlerestore" $DBNameAttachDetach = "dbatoolsci_detachattach" # cleanup foreach ($instance in $Instances) { Remove-DbaDatabase -Confirm:$false -SqlInstance $instance -Database $DBNameBackupRestore,$DBNameAttachDetach } } AfterAll { foreach ($instance in $Instances) { Remove-DbaDatabase -Confirm:$false -SqlInstance $instance -Database $DBNameBackupRestore,$DBNameAttachDetach } } # Restore and set owner for Single Restore $null = Restore-DbaDatabase -SqlInstance $script:instance1 -Path $script:appeyorlabrepo\singlerestore\singlerestore.bak -WithReplace -DatabaseName $DBNameBackupRestore Set-DbaDatabaseOwner -SqlInstance $script:instance1 -Database $DBNameBackupRestore -TargetLogin sa Context "Restores database with the same properties." { It "Should copy a database and retain its name, recovery model, and status." { Copy-DbaDatabase -Source $script:instance1 -Destination $script:instance2 -Database $DBNameBackupRestore -BackupRestore -NetworkShare $NetworkPath $db1 = Get-DbaDatabase -SqlInstance $script:instance1 -Database $DBNameBackupRestore $db1 | Should Not BeNullOrEmpty $db2 = Get-DbaDatabase -SqlInstance $script:instance2 -Database $DBNameBackupRestore $db2 | Should Not BeNullOrEmpty # Compare its valuable. $db1.Name | Should Be $db2.Name $db1.RecoveryModel | Should Be $db2.RecoveryModel $db1.Status | Should be $db2.Status } } Context "Doesn't write over existing databases" { It "Should just warn" { $result = Copy-DbaDatabase -Source $script:instance1 -Destination $script:instance2 -Database $DBNameBackupRestore -BackupRestore -NetworkShare $NetworkPath -WarningVariable warning 3>&1 $warning | Should Match "exists at destination" } } foreach ($instance in $Instances) { Remove-DbaDatabase -Confirm:$false -SqlInstance $instance -Database $DBNameBackupRestore } Context "Detach, copies and attaches database successfully." { It "Should be success" { $null = Restore-DbaDatabase -SqlInstance $script:instance1 -Path $script:appeyorlabrepo\detachattach\detachattach.bak -WithReplace -DatabaseName $DBNameAttachDetach $results = Copy-DbaDatabase -Source $script:instance1 -Destination $script:instance2 -Database $DBNameAttachDetach -DetachAttach -Reattach -Force -WarningAction SilentlyContinue $results.Status | Should Be "Successful" } } Context "Database with the same properties." { It "should not be null" { $db1 = (Get-DbaInstance -SqlInstance localhost).Databases[$DBNameAttachDetach] $db2 = (Get-DbaInstance -SqlInstance localhost\sql2016).Databases[$DBNameAttachDetach] $db1 | Should Not Be $null $db2 | Should Not Be $null $db1.Name | Should Be $DBNameAttachDetach $db2.Name | Should Be $DBNameAttachDetach } <# It "Name, recovery model, and status should match" { # This is crazy (Get-DbaInstance -SqlInstance localhost).Databases['detachattach'].Name | Should Be (Get-DbaInstance -SqlInstance localhost\sql2016).Databases['detachattach'].Name (Get-DbaInstance -SqlInstance localhost).Databases['detachattach'].Tables.Count | Should Be (Get-DbaInstance -SqlInstance localhost\sql2016).Databases['detachattach'].Tables.Count (Get-DbaInstance -SqlInstance localhost).Databases['detachattach'].Status | Should Be (Get-DbaInstance -SqlInstance localhost\sql2016).Databases['detachattach'].Status } } Context "Clean up" { foreach ($instance in $instances) { Get-DbaDatabase -SqlInstance $instance -NoSystemDb | Remove-DbaDatabase -Confirm:$false } #> } } |