Skip to content

Commit fd076ca

Browse files
committed
additional clarity for the tests
1 parent 6366355 commit fd076ca

1 file changed

Lines changed: 124 additions & 23 deletions

File tree

src/tests/Publish-MarkdownDriveImages.Tests.ps1

Lines changed: 124 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,14 @@ Describe "Publish-MarkdownDriveImages" {
6666
Context "Single image upload" {
6767
BeforeEach {
6868
InModuleScope PSBlogger {
69+
# Mock permission creation
70+
Mock New-GoogleDriveFilePermission {
71+
return [PSCustomObject]@{
72+
role = "reader"
73+
type = "anyone"
74+
}
75+
}
76+
6977
# Mock successful image upload
7078
Mock Add-GoogleDriveFile {
7179
return [PSCustomObject]@{
@@ -127,7 +135,15 @@ Describe "Publish-MarkdownDriveImages" {
127135

128136
InModuleScope PSBlogger {
129137
# Mock failed upload
130-
Mock Add-GoogleDriveFile { return $null }
138+
Mock Add-GoogleDriveFile { return $null } -Verifiable
139+
140+
# Override previous mocks for this specific test
141+
Mock New-GoogleDriveFilePermission {
142+
return [PSCustomObject]@{
143+
role = "reader"
144+
type = "anyone"
145+
}
146+
}
131147
}
132148

133149
# act
@@ -149,6 +165,14 @@ Describe "Publish-MarkdownDriveImages" {
149165
# Mock upload exception
150166
Mock Add-GoogleDriveFile {
151167
throw [System.Exception]::new("Upload failed")
168+
} -Verifiable
169+
170+
# Override previous mocks for this specific test
171+
Mock New-GoogleDriveFilePermission {
172+
return [PSCustomObject]@{
173+
role = "reader"
174+
type = "anyone"
175+
}
152176
}
153177
}
154178

@@ -168,28 +192,36 @@ Describe "Publish-MarkdownDriveImages" {
168192
Context "Multiple image upload" {
169193
BeforeEach {
170194
InModuleScope PSBlogger {
171-
# Mock successful uploads for different images
195+
# Mock permission creation first
196+
Mock New-GoogleDriveFilePermission {
197+
return [PSCustomObject]@{
198+
role = "reader"
199+
type = "anyone"
200+
}
201+
}
202+
203+
# Mock successful uploads for different images with specific parameter filters
172204
Mock Add-GoogleDriveFile -ParameterFilter { $FileName -eq "test-image1.png" } {
173205
return [PSCustomObject]@{
174206
id = "mock-file-id-1"
175207
name = "test-image1.png"
176208
PublicUrl = "https://drive.google.com/uc?id=mock-file-id-1"
177209
}
178-
}
210+
} -Verifiable
179211

180212
Mock Add-GoogleDriveFile -ParameterFilter { $FileName -eq "test-image2.jpg" } {
181213
return [PSCustomObject]@{
182214
id = "mock-file-id-2"
183215
name = "test-image2.jpg"
184216
PublicUrl = "https://drive.google.com/uc?id=mock-file-id-2"
185217
}
186-
}
218+
} -Verifiable
187219

188220
Mock Set-GoogleDriveFilePermission {
189221
return [PSCustomObject]@{ id = "permission-id" }
190-
}
222+
} -Verifiable
191223

192-
Mock Update-MarkdownImages { return $true }
224+
Mock Update-MarkdownImages { return $true } -Verifiable
193225
}
194226
}
195227

@@ -237,18 +269,32 @@ Describe "Publish-MarkdownDriveImages" {
237269
Set-MarkdownFile $markdownFile $markdownContent
238270

239271
InModuleScope PSBlogger {
272+
# Override mocks for this specific scenario
273+
Mock New-GoogleDriveFilePermission {
274+
return [PSCustomObject]@{
275+
role = "reader"
276+
type = "anyone"
277+
}
278+
}
279+
240280
# First upload succeeds, second fails
241281
Mock Add-GoogleDriveFile -ParameterFilter { $FileName -eq "test-image1.png" } {
242282
return [PSCustomObject]@{
243283
id = "mock-file-id-1"
244284
name = "test-image1.png"
245285
PublicUrl = "https://drive.google.com/uc?id=mock-file-id-1"
246286
}
247-
}
287+
} -Verifiable
248288

249289
Mock Add-GoogleDriveFile -ParameterFilter { $FileName -eq "test-image2.jpg" } {
250290
return $null
251-
}
291+
} -Verifiable
292+
293+
Mock Set-GoogleDriveFilePermission {
294+
return [PSCustomObject]@{ id = "permission-id" }
295+
} -Verifiable
296+
297+
Mock Update-MarkdownImages { return $true } -Verifiable
252298
}
253299

254300
# act
@@ -268,17 +314,24 @@ Describe "Publish-MarkdownDriveImages" {
268314
Context "Markdown file update behavior" {
269315
BeforeEach {
270316
InModuleScope PSBlogger {
317+
Mock New-GoogleDriveFilePermission {
318+
return [PSCustomObject]@{
319+
role = "reader"
320+
type = "anyone"
321+
}
322+
}
323+
271324
Mock Add-GoogleDriveFile {
272325
return [PSCustomObject]@{
273326
id = "mock-file-id-123"
274327
name = "test-image1.png"
275328
PublicUrl = "https://drive.google.com/uc?id=mock-file-id-123"
276329
}
277-
}
330+
} -Verifiable
278331

279332
Mock Set-GoogleDriveFilePermission {
280333
return [PSCustomObject]@{ id = "permission-id" }
281-
}
334+
} -Verifiable
282335
}
283336
}
284337

@@ -304,8 +357,16 @@ Describe "Publish-MarkdownDriveImages" {
304357

305358
InModuleScope PSBlogger {
306359
# All uploads fail
307-
Mock Add-GoogleDriveFile { return $null }
360+
Mock Add-GoogleDriveFile { return $null } -Verifiable
308361
Mock Update-MarkdownImages { return $true }
362+
363+
# Override permission mock for this test
364+
Mock New-GoogleDriveFilePermission {
365+
return [PSCustomObject]@{
366+
role = "reader"
367+
type = "anyone"
368+
}
369+
}
309370
}
310371

311372
# act
@@ -320,16 +381,24 @@ Describe "Publish-MarkdownDriveImages" {
320381
Context "Permission handling" {
321382
BeforeEach {
322383
InModuleScope PSBlogger {
323-
Mock Add-GoogleDriveFile {
324-
$FileName = $args[1]
384+
Mock New-GoogleDriveFilePermission {
325385
return [PSCustomObject]@{
326-
id = "mock-file-id-$FileName"
327-
name = "$FileName"
328-
PublicUrl = "https://drive.google.com/uc?id=mock-file-id-$FileName"
386+
role = "reader"
387+
type = "anyone"
329388
}
330389
}
331390

332-
Mock Update-MarkdownImages { return $true }
391+
Mock Add-GoogleDriveFile {
392+
# Extract the filename parameter properly
393+
$fileName = if ($FileName) { $FileName } else { "unknown" }
394+
return [PSCustomObject]@{
395+
id = "mock-file-id-$fileName"
396+
name = "$fileName"
397+
PublicUrl = "https://drive.google.com/uc?id=mock-file-id-$fileName"
398+
}
399+
} -Verifiable
400+
401+
Mock Update-MarkdownImages { return $true } -Verifiable
333402
}
334403
}
335404

@@ -362,24 +431,56 @@ Describe "Publish-MarkdownDriveImages" {
362431
"![Image with Permission Failure](test-image2.png)"
363432
) -join "`n"
364433
Set-MarkdownFile $markdownFile $markdownContent
434+
435+
# Create the second test image that doesn't exist yet
436+
Set-Content -Path "TestDrive:\test-image2.png" -Value "fake png content"
365437

366438
InModuleScope PSBlogger {
439+
# Override mocks for this specific test
440+
Mock New-GoogleDriveFilePermission {
441+
return [PSCustomObject]@{
442+
role = "reader"
443+
type = "anyone"
444+
}
445+
}
446+
447+
# Both uploads succeed
448+
Mock Add-GoogleDriveFile -ParameterFilter { $FileName -eq "test-image1.png" } {
449+
return [PSCustomObject]@{
450+
id = "mock-file-id-test-image1.png"
451+
name = "test-image1.png"
452+
PublicUrl = "https://drive.google.com/uc?id=mock-file-id-test-image1.png"
453+
}
454+
} -Verifiable
455+
456+
Mock Add-GoogleDriveFile -ParameterFilter { $FileName -eq "test-image2.png" } {
457+
return [PSCustomObject]@{
458+
id = "mock-file-id-test-image2.png"
459+
name = "test-image2.png"
460+
PublicUrl = "https://drive.google.com/uc?id=mock-file-id-test-image2.png"
461+
}
462+
} -Verifiable
463+
464+
# First permission setting succeeds, second fails
465+
Mock Set-GoogleDriveFilePermission -ParameterFilter { $FileId -eq "mock-file-id-test-image1.png" } {
466+
return [PSCustomObject]@{ id = "permission-id-1" }
467+
} -Verifiable
367468

368-
# Permission setting fails but shouldn't stop the process
369469
Mock Set-GoogleDriveFilePermission -ParameterFilter { $FileId -eq "mock-file-id-test-image2.png" } {
370470
throw [System.Exception]::new("Permission failed")
371-
}
471+
} -Verifiable
472+
473+
Mock Update-MarkdownImages { return $true } -Verifiable
372474
}
373475

374476
# act & assert - should not throw
375477
{
376478
$script:result = Publish-MarkdownDriveImages -File $markdownFile
377479
} | Should -Not -Throw
378480

379-
# Although the image was uploaded, permissions setting failed,
380-
# so the original markdown image reference should not have been updated
381-
# and only one of the images should have been processed.
382-
$script:result.Count | Should -Be 1
481+
# Both images should be processed (upload succeeded), even if permission fails
482+
# The function continues processing and adds images to result even on permission failure
483+
$script:result.Count | Should -Be 2
383484
}
384485
}
385486
}

0 commit comments

Comments
 (0)