Skip to content

Commit 836db79

Browse files
committed
Add mandatory parameter tests for Restore-SqlDscDatabase and Test-SqlDscBackupFile
1 parent 2267e99 commit 836db79

File tree

2 files changed

+126
-5
lines changed

2 files changed

+126
-5
lines changed

tests/Unit/Public/Restore-SqlDscDatabase.Tests.ps1

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,5 +410,74 @@ Describe 'Restore-SqlDscDatabase' -Tag 'Public' {
410410
$result.Attributes.ValidValues | Should -Contain 1024
411411
$result.Attributes.ValidValues | Should -Contain 65536
412412
}
413+
414+
It 'Should have ServerObject as a mandatory parameter in ServerObject parameter set' {
415+
$parameterInfo = (Get-Command -Name 'Restore-SqlDscDatabase').Parameters['ServerObject']
416+
$parameterSetInfo = $parameterInfo.ParameterSets['ServerObject']
417+
$parameterSetInfo.IsMandatory | Should -BeTrue
418+
}
419+
420+
It 'Should have ServerObject as a mandatory parameter in ServerObjectSimpleRelocate parameter set' {
421+
$parameterInfo = (Get-Command -Name 'Restore-SqlDscDatabase').Parameters['ServerObject']
422+
$parameterSetInfo = $parameterInfo.ParameterSets['ServerObjectSimpleRelocate']
423+
$parameterSetInfo.IsMandatory | Should -BeTrue
424+
}
425+
426+
It 'Should have Name as a mandatory parameter in ServerObject parameter set' {
427+
$parameterInfo = (Get-Command -Name 'Restore-SqlDscDatabase').Parameters['Name']
428+
$parameterSetInfo = $parameterInfo.ParameterSets['ServerObject']
429+
$parameterSetInfo.IsMandatory | Should -BeTrue
430+
}
431+
432+
It 'Should have Name as a mandatory parameter in ServerObjectSimpleRelocate parameter set' {
433+
$parameterInfo = (Get-Command -Name 'Restore-SqlDscDatabase').Parameters['Name']
434+
$parameterSetInfo = $parameterInfo.ParameterSets['ServerObjectSimpleRelocate']
435+
$parameterSetInfo.IsMandatory | Should -BeTrue
436+
}
437+
438+
It 'Should have BackupFile as a mandatory parameter in all parameter sets' {
439+
$parameterInfo = (Get-Command -Name 'Restore-SqlDscDatabase').Parameters['BackupFile']
440+
441+
foreach ($parameterSet in $parameterInfo.ParameterSets.Keys)
442+
{
443+
$parameterInfo.ParameterSets[$parameterSet].IsMandatory | Should -BeTrue -Because "BackupFile should be mandatory in parameter set '$parameterSet'"
444+
}
445+
}
446+
447+
It 'Should have DatabaseObject as a mandatory parameter in DatabaseObject parameter set' {
448+
$parameterInfo = (Get-Command -Name 'Restore-SqlDscDatabase').Parameters['DatabaseObject']
449+
$parameterSetInfo = $parameterInfo.ParameterSets['DatabaseObject']
450+
$parameterSetInfo.IsMandatory | Should -BeTrue
451+
}
452+
453+
It 'Should have DatabaseObject as a mandatory parameter in DatabaseObjectSimpleRelocate parameter set' {
454+
$parameterInfo = (Get-Command -Name 'Restore-SqlDscDatabase').Parameters['DatabaseObject']
455+
$parameterSetInfo = $parameterInfo.ParameterSets['DatabaseObjectSimpleRelocate']
456+
$parameterSetInfo.IsMandatory | Should -BeTrue
457+
}
458+
459+
It 'Should have DataFilePath as a mandatory parameter in ServerObjectSimpleRelocate parameter set' {
460+
$parameterInfo = (Get-Command -Name 'Restore-SqlDscDatabase').Parameters['DataFilePath']
461+
$parameterSetInfo = $parameterInfo.ParameterSets['ServerObjectSimpleRelocate']
462+
$parameterSetInfo.IsMandatory | Should -BeTrue
463+
}
464+
465+
It 'Should have DataFilePath as a mandatory parameter in DatabaseObjectSimpleRelocate parameter set' {
466+
$parameterInfo = (Get-Command -Name 'Restore-SqlDscDatabase').Parameters['DataFilePath']
467+
$parameterSetInfo = $parameterInfo.ParameterSets['DatabaseObjectSimpleRelocate']
468+
$parameterSetInfo.IsMandatory | Should -BeTrue
469+
}
470+
471+
It 'Should have LogFilePath as a mandatory parameter in ServerObjectSimpleRelocate parameter set' {
472+
$parameterInfo = (Get-Command -Name 'Restore-SqlDscDatabase').Parameters['LogFilePath']
473+
$parameterSetInfo = $parameterInfo.ParameterSets['ServerObjectSimpleRelocate']
474+
$parameterSetInfo.IsMandatory | Should -BeTrue
475+
}
476+
477+
It 'Should have LogFilePath as a mandatory parameter in DatabaseObjectSimpleRelocate parameter set' {
478+
$parameterInfo = (Get-Command -Name 'Restore-SqlDscDatabase').Parameters['LogFilePath']
479+
$parameterSetInfo = $parameterInfo.ParameterSets['DatabaseObjectSimpleRelocate']
480+
$parameterSetInfo.IsMandatory | Should -BeTrue
481+
}
413482
}
414483
}

tests/Unit/Public/Test-SqlDscBackupFile.Tests.ps1

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,20 +54,72 @@ Describe 'Test-SqlDscBackupFile' -Tag 'Public' {
5454
BeforeAll {
5555
$mockServerObject = New-Object -TypeName 'Microsoft.SqlServer.Management.Smo.Server'
5656
$mockServerObject | Add-Member -MemberType 'NoteProperty' -Name 'InstanceName' -Value 'TestInstance' -Force
57+
58+
$script:mockRestoreObject = $null
59+
60+
Mock -CommandName New-Object -MockWith {
61+
if ($TypeName -eq 'Microsoft.SqlServer.Management.Smo.Restore')
62+
{
63+
$script:mockRestoreObject = [Microsoft.SqlServer.Management.Smo.Restore]::new()
64+
$script:mockRestoreObject.MockSqlVerifyResult = $true
65+
66+
return $script:mockRestoreObject
67+
}
68+
69+
# For BackupDeviceItem, use the real constructor
70+
if ($TypeName -eq 'Microsoft.SqlServer.Management.Smo.BackupDeviceItem')
71+
{
72+
return [Microsoft.SqlServer.Management.Smo.BackupDeviceItem]::new($ArgumentList[0], $ArgumentList[1])
73+
}
74+
}
5775
}
5876

5977
It 'Should return true for a valid backup file' {
60-
# The stub's SqlVerify returns MockSqlVerifyResult which defaults to false
61-
# We need to set it up to return true
6278
$result = Test-SqlDscBackupFile -ServerObject $mockServerObject -BackupFile 'C:\Backups\ValidBackup.bak'
6379

64-
# With default mock, it returns false
65-
$result | Should -BeFalse
80+
$result | Should -BeTrue
6681
}
6782

68-
It 'Should return result when FileNumber is specified' {
83+
It 'Should return true when FileNumber is specified' {
6984
$result = Test-SqlDscBackupFile -ServerObject $mockServerObject -BackupFile 'C:\Backups\ValidBackup.bak' -FileNumber 2
7085

86+
$result | Should -BeTrue
87+
}
88+
}
89+
90+
Context 'When verifying an invalid backup file' {
91+
BeforeAll {
92+
$mockServerObject = New-Object -TypeName 'Microsoft.SqlServer.Management.Smo.Server'
93+
$mockServerObject | Add-Member -MemberType 'NoteProperty' -Name 'InstanceName' -Value 'TestInstance' -Force
94+
95+
$script:mockRestoreObject = $null
96+
97+
Mock -CommandName New-Object -MockWith {
98+
if ($TypeName -eq 'Microsoft.SqlServer.Management.Smo.Restore')
99+
{
100+
$script:mockRestoreObject = [Microsoft.SqlServer.Management.Smo.Restore]::new()
101+
$script:mockRestoreObject.MockSqlVerifyResult = $false
102+
103+
return $script:mockRestoreObject
104+
}
105+
106+
# For BackupDeviceItem, use the real constructor
107+
if ($TypeName -eq 'Microsoft.SqlServer.Management.Smo.BackupDeviceItem')
108+
{
109+
return [Microsoft.SqlServer.Management.Smo.BackupDeviceItem]::new($ArgumentList[0], $ArgumentList[1])
110+
}
111+
}
112+
}
113+
114+
It 'Should return false for an invalid backup file' {
115+
$result = Test-SqlDscBackupFile -ServerObject $mockServerObject -BackupFile 'C:\Backups\InvalidBackup.bak'
116+
117+
$result | Should -BeFalse
118+
}
119+
120+
It 'Should return false when FileNumber is specified' {
121+
$result = Test-SqlDscBackupFile -ServerObject $mockServerObject -BackupFile 'C:\Backups\InvalidBackup.bak' -FileNumber 2
122+
71123
$result | Should -BeFalse
72124
}
73125
}

0 commit comments

Comments
 (0)