Skip to content

Commit c3d7dfd

Browse files
committed
Refactor mocks in New-SqlDscDatabaseSnapshot.Tests to use New-Object for correct type instantiation and improve clarity
1 parent 49d63b5 commit c3d7dfd

File tree

1 file changed

+17
-27
lines changed

1 file changed

+17
-27
lines changed

tests/Unit/Public/New-SqlDscDatabaseSnapshot.Tests.ps1

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,10 @@ Describe 'New-SqlDscDatabaseSnapshot' -Tag 'Public' {
100100

101101
# Mock New-SqlDscDataFile and New-SqlDscFileGroup to avoid type conflicts
102102
# between test scope and module scope for PowerShell class types.
103+
# Use InModuleScope to access the module's class types directly.
103104
Mock -CommandName 'New-SqlDscDataFile' -MockWith {
104105
InModuleScope -ScriptBlock {
105-
param ($Name, $FileName)
106-
107-
[DatabaseFileSpec]@{
106+
New-Object -TypeName 'DatabaseFileSpec' -Property @{
108107
Name = $Name
109108
FileName = $FileName
110109
}
@@ -116,9 +115,7 @@ Describe 'New-SqlDscDatabaseSnapshot' -Tag 'Public' {
116115

117116
Mock -CommandName 'New-SqlDscFileGroup' -MockWith {
118117
InModuleScope -ScriptBlock {
119-
param ($Name, $Files)
120-
121-
[DatabaseFileGroupSpec]@{
118+
New-Object -TypeName 'DatabaseFileGroupSpec' -Property @{
122119
Name = $Name
123120
Files = $Files
124121
}
@@ -190,14 +187,16 @@ Describe 'New-SqlDscDatabaseSnapshot' -Tag 'Public' {
190187
}
191188

192189
It 'Should pass FileGroup parameter when specified' {
193-
# Create a mock DatabaseFileGroupSpec using InModuleScope to access internal classes
190+
# Create a mock DatabaseFileGroupSpec using InModuleScope to access internal classes.
191+
# Use New-Object to create the objects so they have the correct type
192+
# from the module's scope.
194193
$mockFileGroupSpec = InModuleScope -ScriptBlock {
195-
$mockDataFileSpec = [DatabaseFileSpec]@{
194+
$mockDataFileSpec = New-Object -TypeName 'DatabaseFileSpec' -Property @{
196195
Name = 'TestData'
197196
FileName = 'C:\Snapshots\TestData.ss'
198197
}
199198

200-
[DatabaseFileGroupSpec]@{
199+
New-Object -TypeName 'DatabaseFileGroupSpec' -Property @{
201200
Name = 'PRIMARY'
202201
Files = @($mockDataFileSpec)
203202
}
@@ -274,11 +273,10 @@ Describe 'New-SqlDscDatabaseSnapshot' -Tag 'Public' {
274273

275274
# Mock New-SqlDscDataFile and New-SqlDscFileGroup to avoid type conflicts
276275
# between test scope and module scope for PowerShell class types.
276+
# Use InModuleScope to access the module's class types directly.
277277
Mock -CommandName 'New-SqlDscDataFile' -MockWith {
278278
InModuleScope -ScriptBlock {
279-
param ($Name, $FileName)
280-
281-
[DatabaseFileSpec]@{
279+
New-Object -TypeName 'DatabaseFileSpec' -Property @{
282280
Name = $Name
283281
FileName = $FileName
284282
}
@@ -290,9 +288,7 @@ Describe 'New-SqlDscDatabaseSnapshot' -Tag 'Public' {
290288

291289
Mock -CommandName 'New-SqlDscFileGroup' -MockWith {
292290
InModuleScope -ScriptBlock {
293-
param ($Name, $Files)
294-
295-
[DatabaseFileGroupSpec]@{
291+
New-Object -TypeName 'DatabaseFileGroupSpec' -Property @{
296292
Name = $Name
297293
Files = $Files
298294
}
@@ -404,11 +400,10 @@ Describe 'New-SqlDscDatabaseSnapshot' -Tag 'Public' {
404400

405401
# Mock New-SqlDscDataFile and New-SqlDscFileGroup to avoid type conflicts
406402
# between test scope and module scope for PowerShell class types.
403+
# Use InModuleScope to access the module's class types directly.
407404
Mock -CommandName 'New-SqlDscDataFile' -MockWith {
408405
InModuleScope -ScriptBlock {
409-
param ($Name, $FileName)
410-
411-
[DatabaseFileSpec]@{
406+
New-Object -TypeName 'DatabaseFileSpec' -Property @{
412407
Name = $Name
413408
FileName = $FileName
414409
}
@@ -420,9 +415,7 @@ Describe 'New-SqlDscDatabaseSnapshot' -Tag 'Public' {
420415

421416
Mock -CommandName 'New-SqlDscFileGroup' -MockWith {
422417
InModuleScope -ScriptBlock {
423-
param ($Name, $Files)
424-
425-
[DatabaseFileGroupSpec]@{
418+
New-Object -TypeName 'DatabaseFileGroupSpec' -Property @{
426419
Name = $Name
427420
Files = $Files
428421
}
@@ -485,11 +478,10 @@ Describe 'New-SqlDscDatabaseSnapshot' -Tag 'Public' {
485478

486479
# Mock New-SqlDscDataFile and New-SqlDscFileGroup to avoid type conflicts
487480
# between test scope and module scope for PowerShell class types.
481+
# Use InModuleScope to access the module's class types directly.
488482
Mock -CommandName 'New-SqlDscDataFile' -MockWith {
489483
InModuleScope -ScriptBlock {
490-
param ($Name, $FileName)
491-
492-
[DatabaseFileSpec]@{
484+
New-Object -TypeName 'DatabaseFileSpec' -Property @{
493485
Name = $Name
494486
FileName = $FileName
495487
}
@@ -501,9 +493,7 @@ Describe 'New-SqlDscDatabaseSnapshot' -Tag 'Public' {
501493

502494
Mock -CommandName 'New-SqlDscFileGroup' -MockWith {
503495
InModuleScope -ScriptBlock {
504-
param ($Name, $Files)
505-
506-
[DatabaseFileGroupSpec]@{
496+
New-Object -TypeName 'DatabaseFileGroupSpec' -Property @{
507497
Name = $Name
508498
Files = $Files
509499
}

0 commit comments

Comments
 (0)