From c21d461746e59bc1398534744db14dbba479aa07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20K=C5=82ys?= Date: Thu, 7 Aug 2025 16:07:20 +0200 Subject: [PATCH] Use AsyncPSCmdlet and add tests --- .../PSWritePDF/Cmdlets/CmdletConvertHTMLToPDF.cs | 12 ++++++++---- Tests/Convert-HTMLToPDF.Tests.ps1 | 13 ++++++++++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Sources/PSWritePDF/Cmdlets/CmdletConvertHTMLToPDF.cs b/Sources/PSWritePDF/Cmdlets/CmdletConvertHTMLToPDF.cs index 098e702..d75bbbe 100644 --- a/Sources/PSWritePDF/Cmdlets/CmdletConvertHTMLToPDF.cs +++ b/Sources/PSWritePDF/Cmdlets/CmdletConvertHTMLToPDF.cs @@ -2,11 +2,12 @@ using System.IO; using System.Management.Automation; using System.Net.Http; +using System.Threading.Tasks; namespace PSWritePDF.Cmdlets; [Cmdlet(VerbsData.Convert, "HTMLToPDF", DefaultParameterSetName = ParameterSetNames.Uri, SupportsShouldProcess = true)] -public class CmdletConvertHTMLToPDF : PSCmdlet +public class CmdletConvertHTMLToPDF : AsyncPSCmdlet { private static class ParameterSetNames { @@ -33,7 +34,7 @@ private static class ParameterSetNames [Parameter] public SwitchParameter Force { get; set; } - protected override void ProcessRecord() + protected override async Task ProcessRecordAsync() { string html = Content; @@ -51,7 +52,7 @@ protected override void ProcessRecord() try { using var client = new HttpClient(); - html = client.GetStringAsync(Uri).GetAwaiter().GetResult(); + html = await client.GetStringAsync(Uri).ConfigureAwait(false); } catch (Exception ex) { @@ -90,7 +91,10 @@ protected override void ProcessRecord() System.Diagnostics.Process.Start(psi); } - WriteObject(OutputFilePath); + if (ShouldProcess(OutputFilePath, "Write output")) + { + WriteObject(OutputFilePath); + } } catch (Exception ex) { diff --git a/Tests/Convert-HTMLToPDF.Tests.ps1 b/Tests/Convert-HTMLToPDF.Tests.ps1 index 09d5563..e5753f2 100644 --- a/Tests/Convert-HTMLToPDF.Tests.ps1 +++ b/Tests/Convert-HTMLToPDF.Tests.ps1 @@ -1,6 +1,10 @@ Describe 'Convert-HTMLToPDF' { BeforeAll { - New-Item -Path $PSScriptRoot -Force -ItemType Directory -Name 'Output' | Out-Null + $outputDir = Join-Path $PSScriptRoot 'Output' + if (Test-Path $outputDir) { + Remove-Item -LiteralPath $outputDir -Recurse -Force + } + New-Item -Path $outputDir -ItemType Directory | Out-Null } It 'converts HTML string to PDF and outputs file path' { @@ -21,6 +25,13 @@ Describe 'Convert-HTMLToPDF' { (Get-Item $file).LastWriteTime | Should -Not -Be $timestamp } + It 'converts HTML from a URI' { + $file = Join-Path $PSScriptRoot 'Output' 'uri.pdf' + $result = Convert-HTMLToPDF -Uri 'https://example.com/' -OutputFilePath $file -Confirm:$false + Test-Path $file | Should -BeTrue + $result | Should -Be $file + } + AfterAll { Remove-Item -LiteralPath (Join-Path $PSScriptRoot 'Output') -Recurse -Force }