Skip to content

Commit 8cdb4ee

Browse files
committed
Enhance integration tests for Add-SqlDscDataFile and Add-SqlDscFileGroup by using real SMO Database and FileGroup objects
1 parent ea2b8b8 commit 8cdb4ee

File tree

2 files changed

+52
-36
lines changed

2 files changed

+52
-36
lines changed

tests/Integration/Commands/Add-SqlDscDataFile.Integration.Tests.ps1

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,28 @@ BeforeAll {
3030

3131
# Import the SMO module to ensure real SMO types are available
3232
Import-SqlDscPreferredModule
33+
34+
$script:mockInstanceName = 'DSCSQLTEST'
35+
$script:mockComputerName = Get-ComputerName
36+
37+
$mockSqlAdministratorUserName = 'SqlAdmin' # Using computer name as NetBIOS name throw exception.
38+
$mockSqlAdministratorPassword = ConvertTo-SecureString -String 'P@ssw0rd1' -AsPlainText -Force
39+
40+
$script:mockSqlAdminCredential = [System.Management.Automation.PSCredential]::new($mockSqlAdministratorUserName, $mockSqlAdministratorPassword)
41+
42+
$script:serverObject = Connect-SqlDscDatabaseEngine -InstanceName $script:mockInstanceName -Credential $script:mockSqlAdminCredential -ErrorAction 'Stop'
3343
}
3444

3545
Describe 'Add-SqlDscDataFile' -Tag @('Integration_SQL2017', 'Integration_SQL2019', 'Integration_SQL2022') {
3646
Context 'When adding a DataFile to a FileGroup with real SMO types' {
3747
BeforeEach {
38-
# Create real SMO objects
39-
$script:testFileGroup = [Microsoft.SqlServer.Management.Smo.FileGroup]::new()
40-
$script:testFileGroup.Name = 'TestFileGroup'
41-
$script:testDataFile = [Microsoft.SqlServer.Management.Smo.DataFile]::new()
42-
$script:testDataFile.Name = 'TestDataFile'
48+
# Create real SMO Database and FileGroup objects
49+
$script:testDatabase = [Microsoft.SqlServer.Management.Smo.Database]::new()
50+
$script:testDatabase.Name = 'TestDatabase'
51+
$script:testDatabase.Parent = $script:serverObject
52+
53+
$script:testFileGroup = New-SqlDscFileGroup -Database $script:testDatabase -Name 'TestFileGroup' -Confirm:$false
54+
$script:testDataFile = New-SqlDscDataFile -FileGroup $script:testFileGroup -Name 'TestDataFile' -FileName 'C:\Data\TestDataFile.ndf' -Confirm:$false
4355
}
4456

4557
It 'Should add a DataFile to FileGroup successfully' {
@@ -68,10 +80,8 @@ Describe 'Add-SqlDscDataFile' -Tag @('Integration_SQL2017', 'Integration_SQL2019
6880
}
6981

7082
It 'Should add multiple DataFiles to FileGroup' {
71-
$dataFile1 = [Microsoft.SqlServer.Management.Smo.DataFile]::new()
72-
$dataFile1.Name = 'DataFile1'
73-
$dataFile2 = [Microsoft.SqlServer.Management.Smo.DataFile]::new()
74-
$dataFile2.Name = 'DataFile2'
83+
$dataFile1 = New-SqlDscDataFile -FileGroup $script:testFileGroup -Name 'DataFile1' -FileName 'C:\Data\DataFile1.ndf' -Confirm:$false
84+
$dataFile2 = New-SqlDscDataFile -FileGroup $script:testFileGroup -Name 'DataFile2' -FileName 'C:\Data\DataFile2.ndf' -Confirm:$false
7585

7686
$initialCount = $script:testFileGroup.Files.Count
7787

@@ -83,10 +93,8 @@ Describe 'Add-SqlDscDataFile' -Tag @('Integration_SQL2017', 'Integration_SQL2019
8393
}
8494

8595
It 'Should add multiple DataFiles via pipeline and return them with PassThru' {
86-
$dataFile1 = [Microsoft.SqlServer.Management.Smo.DataFile]::new()
87-
$dataFile1.Name = 'DataFile1'
88-
$dataFile2 = [Microsoft.SqlServer.Management.Smo.DataFile]::new()
89-
$dataFile2.Name = 'DataFile2'
96+
$dataFile1 = New-SqlDscDataFile -FileGroup $script:testFileGroup -Name 'DataFile1' -FileName 'C:\Data\DataFile1.ndf' -Confirm:$false
97+
$dataFile2 = New-SqlDscDataFile -FileGroup $script:testFileGroup -Name 'DataFile2' -FileName 'C:\Data\DataFile2.ndf' -Confirm:$false
9098

9199
$result = @($dataFile1, $dataFile2) | Add-SqlDscDataFile -FileGroup $script:testFileGroup -PassThru
92100

@@ -98,10 +106,12 @@ Describe 'Add-SqlDscDataFile' -Tag @('Integration_SQL2017', 'Integration_SQL2019
98106

99107
Context 'When verifying DataFile parent relationship' {
100108
BeforeEach {
101-
$script:testFileGroup = [Microsoft.SqlServer.Management.Smo.FileGroup]::new()
102-
$script:testFileGroup.Name = 'TestFileGroup'
103-
$script:testDataFile = [Microsoft.SqlServer.Management.Smo.DataFile]::new()
104-
$script:testDataFile.Name = 'TestDataFile'
109+
$script:testDatabase = [Microsoft.SqlServer.Management.Smo.Database]::new()
110+
$script:testDatabase.Name = 'TestDatabase'
111+
$script:testDatabase.Parent = $script:serverObject
112+
113+
$script:testFileGroup = New-SqlDscFileGroup -Database $script:testDatabase -Name 'TestFileGroup' -Confirm:$false
114+
$script:testDataFile = New-SqlDscDataFile -FileGroup $script:testFileGroup -Name 'TestDataFile' -FileName 'C:\Data\TestDataFile.ndf' -Confirm:$false
105115
}
106116

107117
It 'Should update DataFile parent reference when added to FileGroup' {

tests/Integration/Commands/Add-SqlDscFileGroup.Integration.Tests.ps1

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,27 @@ BeforeAll {
3030

3131
# Import the SMO module to ensure real SMO types are available
3232
Import-SqlDscPreferredModule
33+
34+
$script:mockInstanceName = 'DSCSQLTEST'
35+
$script:mockComputerName = Get-ComputerName
36+
37+
$mockSqlAdministratorUserName = 'SqlAdmin' # Using computer name as NetBIOS name throw exception.
38+
$mockSqlAdministratorPassword = ConvertTo-SecureString -String 'P@ssw0rd1' -AsPlainText -Force
39+
40+
$script:mockSqlAdminCredential = [System.Management.Automation.PSCredential]::new($mockSqlAdministratorUserName, $mockSqlAdministratorPassword)
41+
42+
$script:serverObject = Connect-SqlDscDatabaseEngine -InstanceName $script:mockInstanceName -Credential $script:mockSqlAdminCredential -ErrorAction 'Stop'
3343
}
3444

3545
Describe 'Add-SqlDscFileGroup' -Tag @('Integration_SQL2017', 'Integration_SQL2019', 'Integration_SQL2022') {
3646
Context 'When adding a FileGroup to a Database with real SMO types' {
3747
BeforeEach {
38-
# Create real SMO objects
48+
# Create real SMO Database object
3949
$script:testDatabase = [Microsoft.SqlServer.Management.Smo.Database]::new()
4050
$script:testDatabase.Name = 'TestDatabase'
41-
$script:testFileGroup = [Microsoft.SqlServer.Management.Smo.FileGroup]::new()
42-
$script:testFileGroup.Name = 'TestFileGroup'
51+
$script:testDatabase.Parent = $script:serverObject
52+
53+
$script:testFileGroup = New-SqlDscFileGroup -Database $script:testDatabase -Name 'TestFileGroup' -Confirm:$false
4354
}
4455

4556
It 'Should add a FileGroup to Database successfully' {
@@ -68,10 +79,8 @@ Describe 'Add-SqlDscFileGroup' -Tag @('Integration_SQL2017', 'Integration_SQL201
6879
}
6980

7081
It 'Should add multiple FileGroups to Database' {
71-
$fileGroup1 = [Microsoft.SqlServer.Management.Smo.FileGroup]::new()
72-
$fileGroup1.Name = 'FileGroup1'
73-
$fileGroup2 = [Microsoft.SqlServer.Management.Smo.FileGroup]::new()
74-
$fileGroup2.Name = 'FileGroup2'
82+
$fileGroup1 = New-SqlDscFileGroup -Database $script:testDatabase -Name 'FileGroup1' -Confirm:$false
83+
$fileGroup2 = New-SqlDscFileGroup -Database $script:testDatabase -Name 'FileGroup2' -Confirm:$false
7584

7685
$initialCount = $script:testDatabase.FileGroups.Count
7786

@@ -83,10 +92,8 @@ Describe 'Add-SqlDscFileGroup' -Tag @('Integration_SQL2017', 'Integration_SQL201
8392
}
8493

8594
It 'Should add multiple FileGroups via pipeline and return them with PassThru' {
86-
$fileGroup1 = [Microsoft.SqlServer.Management.Smo.FileGroup]::new()
87-
$fileGroup1.Name = 'FileGroup1'
88-
$fileGroup2 = [Microsoft.SqlServer.Management.Smo.FileGroup]::new()
89-
$fileGroup2.Name = 'FileGroup2'
95+
$fileGroup1 = New-SqlDscFileGroup -Database $script:testDatabase -Name 'FileGroup1' -Confirm:$false
96+
$fileGroup2 = New-SqlDscFileGroup -Database $script:testDatabase -Name 'FileGroup2' -Confirm:$false
9097

9198
$result = @($fileGroup1, $fileGroup2) | Add-SqlDscFileGroup -Database $script:testDatabase -PassThru
9299

@@ -100,8 +107,9 @@ Describe 'Add-SqlDscFileGroup' -Tag @('Integration_SQL2017', 'Integration_SQL201
100107
BeforeEach {
101108
$script:testDatabase = [Microsoft.SqlServer.Management.Smo.Database]::new()
102109
$script:testDatabase.Name = 'TestDatabase'
103-
$script:testFileGroup = [Microsoft.SqlServer.Management.Smo.FileGroup]::new()
104-
$script:testFileGroup.Name = 'TestFileGroup'
110+
$script:testDatabase.Parent = $script:serverObject
111+
112+
$script:testFileGroup = New-SqlDscFileGroup -Database $script:testDatabase -Name 'TestFileGroup' -Confirm:$false
105113
}
106114

107115
It 'Should update FileGroup parent reference when added to Database' {
@@ -119,20 +127,18 @@ Describe 'Add-SqlDscFileGroup' -Tag @('Integration_SQL2017', 'Integration_SQL201
119127
BeforeEach {
120128
$script:testDatabase = [Microsoft.SqlServer.Management.Smo.Database]::new()
121129
$script:testDatabase.Name = 'TestDatabase'
130+
$script:testDatabase.Parent = $script:serverObject
122131
}
123132

124133
It 'Should create a complete FileGroup with DataFile structure' {
125134
# Create FileGroup
126-
$fileGroup = [Microsoft.SqlServer.Management.Smo.FileGroup]::new()
127-
$fileGroup.Name = 'SecondaryFileGroup'
135+
$fileGroup = New-SqlDscFileGroup -Database $script:testDatabase -Name 'SecondaryFileGroup' -Confirm:$false
128136

129137
# Create DataFile
130-
$dataFile = [Microsoft.SqlServer.Management.Smo.DataFile]::new()
131-
$dataFile.Name = 'SecondaryDataFile'
132-
$dataFile.FileName = 'C:\Data\SecondaryDataFile.ndf'
138+
$dataFile = New-SqlDscDataFile -FileGroup $fileGroup -Name 'SecondaryDataFile' -FileName 'C:\Data\SecondaryDataFile.ndf' -Confirm:$false
133139

134140
# Add DataFile to FileGroup
135-
$fileGroup.Files.Add($dataFile)
141+
Add-SqlDscDataFile -FileGroup $fileGroup -DataFile $dataFile
136142

137143
# Add FileGroup to Database
138144
Add-SqlDscFileGroup -Database $script:testDatabase -FileGroup $fileGroup

0 commit comments

Comments
 (0)