forked from microsoft/AL-Go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCreateReleaseNotes.Test.ps1
70 lines (57 loc) · 2.89 KB
/
CreateReleaseNotes.Test.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Get-Module Github-Helper | Remove-Module -Force
Import-Module (Join-Path $PSScriptRoot '..\Actions\Github-Helper.psm1' -Resolve)
Get-Module TestActionsHelper | Remove-Module -Force
Import-Module (Join-Path $PSScriptRoot 'TestActionsHelper.psm1')
$errorActionPreference = "Stop"; $ProgressPreference = "SilentlyContinue"; Set-StrictMode -Version 2.0
Describe 'CreateReleaseNotes Tests' {
BeforeAll {
. (Join-Path $PSScriptRoot "..\Actions\AL-Go-Helper.ps1")
function TrackTrace {}
function TrackException {}
$actionName = "CreateReleaseNotes"
$scriptRoot = Join-Path $PSScriptRoot "..\Actions\$actionName" -Resolve
$scriptName = "$actionName.ps1"
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', 'scriptPath', Justification = 'False positive.')]
$scriptPath = Join-Path $scriptRoot $scriptName
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', 'actionScript', Justification = 'False positive.')]
$actionScript = GetActionScript -scriptRoot $scriptRoot -scriptName $scriptName
}
It 'Compile Action' {
Invoke-Expression $actionScript
}
It 'Test action.yaml matches script' {
$permissions = [ordered]@{
"contents" = "write"
"pull-requests" = "write"
}
$outputs = [ordered]@{
"ReleaseVersion" = "The release version"
"ReleaseNotes" = "Release note generated based on the changes"
}
YamlTest -scriptRoot $scriptRoot -actionName $actionName -actionScript $actionScript -permissions $permissions -outputs $outputs
}
It 'Confirms that right functions are called' {
Mock GetLatestRelease { return "{""tag_name"" : ""1.0.0.0""}" | ConvertFrom-Json }
Mock GetReleaseNotes { return "{
""name"": ""tagname"",
""body"": ""Mocked notes""
}" }
Mock DownloadAndImportBcContainerHelper {}
. $scriptPath -token "" -tag_name "1.0.5"
Should -Invoke -CommandName GetLatestRelease -Exactly -Times 1
Should -Invoke -CommandName GetReleaseNotes -Exactly -Times 1 -ParameterFilter { $tag_name -eq "1.0.5" -and $previous_tag_name -eq "1.0.0.0" }
$releaseNotes | Should -Be "Mocked notes"
}
It 'Confirm right parameters are passed' {
Mock GetLatestRelease { return $null }
Mock GetReleaseNotes {return "{
""name"": ""tagname"",
""body"": ""Mocked notes""
}"}
Mock DownloadAndImportBcContainerHelper {}
. $scriptPath -token "" -tag_name "1.0.5"
Should -Invoke -CommandName GetLatestRelease -Exactly -Times 1
Should -Invoke -CommandName GetReleaseNotes -Exactly -Times 1 -ParameterFilter { $tag_name -eq "1.0.5" -and $previous_tag_name -eq "" }
$releaseNotes | Should -Be "Mocked notes"
}
}