diff --git a/src/functions/assert/Time/Should-BeAfter.ps1 b/src/functions/assert/Time/Should-BeAfter.ps1 index 9c0b2ab3f..19891f3a5 100644 --- a/src/functions/assert/Time/Should-BeAfter.ps1 +++ b/src/functions/assert/Time/Should-BeAfter.ps1 @@ -67,16 +67,17 @@ [Parameter(Position = 2, ValueFromPipeline = $true)] $Actual, - [Parameter(Position = 0, ParameterSetName = "Now")] + [Parameter(ParameterSetName = "Now")] [switch] $Now, - [Parameter(Position = 0, ParameterSetName = "Fluent")] - $Time, + [Parameter(Position = 0, ParameterSetName = "FluentAgo")] + [Parameter(Position = 0, ParameterSetName = "FluentFromNow")] + [String] $Time, - [Parameter(Position = 1, ParameterSetName = "Fluent")] + [Parameter(Mandatory, ParameterSetName = "FluentAgo")] [switch] $Ago, - [Parameter(Position = 1, ParameterSetName = "Fluent")] + [Parameter(Mandatory, ParameterSetName = "FluentFromNow")] [switch] $FromNow, [Parameter(Position = 0, ParameterSetName = "Expected")] @@ -92,21 +93,17 @@ $Now = $Now $currentTime = [datetime]::UtcNow.ToLocalTime() - if ($PSCmdlet.ParameterSetName -eq "Expected") { - # do nothing we already have expected value - } - elseif ($PSCmdlet.ParameterSetName -eq "Now") { - $Expected = $currentTime - } - else { - if ($Ago -and $FromNow -or (-not $Ago -and -not $FromNow)) { - throw "You must provide either -Ago or -FromNow switch, but not both or none." + switch ($PSCmdlet.ParameterSetName) { + "Expected" { + # do nothing we already have expected value } - - if ($Ago) { + "Now" { + $Expected = $currentTime + } + "FluentAgo" { $Expected = $currentTime - (Get-TimeSpanFromStringWithUnit -Value $Time) } - else { + "FluentFromNow" { $Expected = $currentTime + (Get-TimeSpanFromStringWithUnit -Value $Time) } } diff --git a/src/functions/assert/Time/Should-BeBefore.ps1 b/src/functions/assert/Time/Should-BeBefore.ps1 index d96be8eb2..ce7b128cc 100644 --- a/src/functions/assert/Time/Should-BeBefore.ps1 +++ b/src/functions/assert/Time/Should-BeBefore.ps1 @@ -67,16 +67,17 @@ [Parameter(Position = 2, ValueFromPipeline = $true)] $Actual, - [Parameter(Position = 0, ParameterSetName = "Now")] + [Parameter(ParameterSetName = "Now")] [switch] $Now, - [Parameter(Position = 0, ParameterSetName = "Fluent")] - $Time, + [Parameter(Position = 0, ParameterSetName = "FluentAgo")] + [Parameter(Position = 0, ParameterSetName = "FluentFromNow")] + [String] $Time, - [Parameter(Position = 1, ParameterSetName = "Fluent")] + [Parameter(Mandatory, ParameterSetName = "FluentAgo")] [switch] $Ago, - [Parameter(Position = 1, ParameterSetName = "Fluent")] + [Parameter(Mandatory, ParameterSetName = "FluentFromNow")] [switch] $FromNow, [Parameter(Position = 0, ParameterSetName = "Expected")] @@ -92,21 +93,17 @@ $Now = $Now $currentTime = [datetime]::UtcNow.ToLocalTime() - if ($PSCmdlet.ParameterSetName -eq "Expected") { - # do nothing we already have expected value - } - elseif ($PSCmdlet.ParameterSetName -eq "Now") { - $Expected = $currentTime - } - else { - if ($Ago -and $FromNow -or (-not $Ago -and -not $FromNow)) { - throw "You must provide either -Ago or -FromNow switch, but not both or none." + switch ($PSCmdlet.ParameterSetName) { + "Expected" { + # do nothing we already have expected value } - - if ($Ago) { + "Now" { + $Expected = $currentTime + } + "FluentAgo" { $Expected = $currentTime - (Get-TimeSpanFromStringWithUnit -Value $Time) } - else { + "FluentFromNow" { $Expected = $currentTime + (Get-TimeSpanFromStringWithUnit -Value $Time) } } diff --git a/tst/functions/assert/Time/Should-BeAfter.Tests.ps1 b/tst/functions/assert/Time/Should-BeAfter.Tests.ps1 index 9266eaa76..e4d9c719b 100644 --- a/tst/functions/assert/Time/Should-BeAfter.Tests.ps1 +++ b/tst/functions/assert/Time/Should-BeAfter.Tests.ps1 @@ -23,6 +23,10 @@ Describe "Should-BeAfter" { [DateTime]::Now.Add([timespan]::FromMinutes(20)) | Should-BeAfter } + It "Does not throw when actual date is before expected date using positional DateTime" { + [DateTime]::Now.AddDays(1) | Should-BeAfter ([DateTime]::Now) + } + It "Throws when actual date is before expected date" -ForEach @( @{ Actual = [DateTime]::Now.AddDays(-1); Expected = [DateTime]::Now } ) { diff --git a/tst/functions/assert/Time/Should-BeBefore.Tests.ps1 b/tst/functions/assert/Time/Should-BeBefore.Tests.ps1 index 7b714b4d8..2ed904e7d 100644 --- a/tst/functions/assert/Time/Should-BeBefore.Tests.ps1 +++ b/tst/functions/assert/Time/Should-BeBefore.Tests.ps1 @@ -23,6 +23,10 @@ Describe "Should-BeBefore" { [DateTime]::Now.Add([timespan]::FromMinutes(-20)) | Should-BeBefore } + It "Does not throw when actual date is before expected date using positional DateTime" { + [DateTime]::Now.AddDays(-1) | Should-BeBefore ([DateTime]::Now) + } + It "Throws when actual date is after expected date" -ForEach @( @{ Actual = [DateTime]::Now.AddDays(1); Expected = [DateTime]::Now } ) {