mirror of
https://github.com/actions/runner-images.git
synced 2025-12-11 03:27:05 +00:00
* Minor improvements * fix typos * fix brew rendering * add temp test * Implement tests * Add arguments validation * ToMarkdown() * Use before-All and helpers * Get rid of arrays * Add validation, no new nodes after header * Fix naming * add workflow * Revisit comments + tiny improvements * Fix tables * Fix html table indent * remove comment * attemp to break test - testing CI * revert breaking test * fix nitpicks
603 lines
32 KiB
PowerShell
603 lines
32 KiB
PowerShell
using module ../SoftwareReport.Nodes.psm1
|
|
using module ../SoftwareReport.DifferenceCalculator.psm1
|
|
|
|
BeforeDiscovery {
|
|
Import-Module $(Join-Path $PSScriptRoot "TestHelpers.psm1") -DisableNameChecking
|
|
}
|
|
|
|
Describe "Comparer.UnitTests" {
|
|
Describe "Headers Tree" {
|
|
It "Add Node to existing header" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddToolVersion("MyTool1", "2.1.3")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 1
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
|
|
$comparer.AddedItems[0].PreviousReportNode | Should -BeNullOrEmpty
|
|
$comparer.AddedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.AddedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.AddedItems[0].CurrentReportNode.Version | Should -Be "2.1.3"
|
|
$comparer.AddedItems[0].Headers | Should -BeArray @("MyHeader")
|
|
}
|
|
|
|
It "Add new header with Node" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddHeader("MySubHeader").AddToolVersion("MyTool1", "2.1.3")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 1
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
|
|
$comparer.AddedItems[0].PreviousReportNode | Should -BeNullOrEmpty
|
|
$comparer.AddedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.AddedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.AddedItems[0].CurrentReportNode.Version | Should -Be "2.1.3"
|
|
$comparer.AddedItems[0].Headers | Should -BeArray @("MyHeader", "MySubHeader")
|
|
}
|
|
|
|
It "Remove Node from existing header" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddToolVersion("MyTool1", "2.1.3")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 1
|
|
|
|
$comparer.DeletedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.DeletedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.DeletedItems[0].PreviousReportNode.Version | Should -Be "2.1.3"
|
|
$comparer.DeletedItems[0].CurrentReportNode | Should -BeNullOrEmpty
|
|
$comparer.DeletedItems[0].Headers | Should -BeArray @("MyHeader")
|
|
}
|
|
|
|
It "Remove header with Node" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddHeader("MySubheader").AddToolVersion("MyTool1", "2.1.3")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 1
|
|
|
|
$comparer.DeletedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.DeletedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.DeletedItems[0].PreviousReportNode.Version | Should -Be "2.1.3"
|
|
$comparer.DeletedItems[0].CurrentReportNode | Should -BeNullOrEmpty
|
|
$comparer.DeletedItems[0].Headers | Should -BeArray @("MyHeader", "MySubheader")
|
|
}
|
|
|
|
It "Node with minor changes" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddHeader("MySubheader").AddToolVersion("MyTool1", "2.1.3")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddHeader("MySubheader").AddToolVersion("MyTool1", "2.1.4")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 1
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
|
|
$comparer.ChangedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.ChangedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].PreviousReportNode.Version | Should -Be "2.1.3"
|
|
$comparer.ChangedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.ChangedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].CurrentReportNode.Version | Should -Be "2.1.4"
|
|
$comparer.ChangedItems[0].Headers | Should -BeArray @("MyHeader", "MySubHeader")
|
|
}
|
|
|
|
It "Node without changes" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddHeader("MySubheader").AddToolVersion("MyTool1", "2.1.3")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddHeader("MySubheader").AddToolVersion("MyTool1", "2.1.3")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
}
|
|
|
|
It "Node is moved to different header" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddHeader("MySubheader").AddToolVersion("MyTool1", "2.1.3")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddHeader("MySubheader2").AddToolVersion("MyTool1", "2.1.3")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 1
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 1
|
|
|
|
$comparer.AddedItems[0].PreviousReportNode | Should -BeNullOrEmpty
|
|
$comparer.AddedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.AddedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.AddedItems[0].CurrentReportNode.Version | Should -Be "2.1.3"
|
|
$comparer.AddedItems[0].Headers | Should -BeArray @("MyHeader", "MySubheader2")
|
|
|
|
$comparer.DeletedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.DeletedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.DeletedItems[0].PreviousReportNode.Version | Should -Be "2.1.3"
|
|
$comparer.DeletedItems[0].CurrentReportNode | Should -BeNullOrEmpty
|
|
$comparer.DeletedItems[0].Headers | Should -BeArray @("MyHeader", "MySubheader")
|
|
}
|
|
|
|
It "Complex structure" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevSubHeader = $prevReport.AddHeader("MyHeader").AddHeader("MySubheader")
|
|
$prevSubHeader.AddToolVersion("MyTool1", "2.1.3")
|
|
$prevSubHeader.AddHeader("MySubSubheader").AddToolVersion("MyTool2", "2.9.1")
|
|
$prevReport.AddHeader("MyHeader2")
|
|
$prevReport.AddHeader("MyHeader3").AddHeader("MySubheader3").AddToolVersion("MyTool3", "14.2.1")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextSubHeader = $nextReport.AddHeader("MyHeader").AddHeader("MySubheader")
|
|
$nextSubHeader.AddToolVersion("MyTool1", "2.1.4")
|
|
$nextSubSubHeader = $nextSubHeader.AddHeader("MySubSubheader")
|
|
$nextSubSubHeader.AddToolVersion("MyTool2", "2.9.1")
|
|
$nextSubSubHeader.AddToolVersion("MyTool4", "2.7.6")
|
|
$nextReport.AddHeader("MyHeader2")
|
|
$nextReport.AddHeader("MyHeader3")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 1
|
|
$comparer.ChangedItems | Should -HaveCount 1
|
|
$comparer.DeletedItems | Should -HaveCount 1
|
|
|
|
$comparer.AddedItems[0].PreviousReportNode | Should -BeNullOrEmpty
|
|
$comparer.AddedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.AddedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool4"
|
|
$comparer.AddedItems[0].CurrentReportNode.Version | Should -Be "2.7.6"
|
|
$comparer.AddedItems[0].Headers | Should -BeArray @("MyHeader", "MySubheader", "MySubSubheader")
|
|
|
|
$comparer.ChangedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.ChangedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].PreviousReportNode.Version | Should -Be "2.1.3"
|
|
$comparer.ChangedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.ChangedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].CurrentReportNode.Version | Should -Be "2.1.4"
|
|
$comparer.ChangedItems[0].Headers | Should -BeArray @("MyHeader", "MySubheader")
|
|
|
|
$comparer.DeletedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.DeletedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool3"
|
|
$comparer.DeletedItems[0].PreviousReportNode.Version | Should -Be "14.2.1"
|
|
$comparer.DeletedItems[0].CurrentReportNode | Should -BeNullOrEmpty
|
|
$comparer.DeletedItems[0].Headers | Should -BeArray @("MyHeader3", "MySubheader3")
|
|
}
|
|
}
|
|
|
|
Describe "ToolVersionNode" {
|
|
It "ToolVersionNode is updated" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddToolVersion("MyTool1", "2.1.3")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddToolVersion("MyTool1", "2.1.4")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 1
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
|
|
$comparer.ChangedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.ChangedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].PreviousReportNode.Version | Should -Be "2.1.3"
|
|
$comparer.ChangedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionNode])
|
|
$comparer.ChangedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].CurrentReportNode.Version | Should -Be "2.1.4"
|
|
$comparer.ChangedItems[0].Headers | Should -BeArray @("MyHeader")
|
|
}
|
|
}
|
|
|
|
Describe "ToolVersionsListNode" {
|
|
It "Single version is not changed" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("2.1.3"), "^.+")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("2.1.3"), "^.+")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
}
|
|
|
|
It "Single version is changed" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("2.1.3"), "^\d+")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("2.1.4"), "^\d+")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 1
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
|
|
$comparer.ChangedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.ChangedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].PreviousReportNode.Versions | Should -BeArray @("2.1.3")
|
|
$comparer.ChangedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.ChangedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].CurrentReportNode.Versions | Should -BeArray @("2.1.4")
|
|
}
|
|
|
|
It "Major version is added" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("2.1.3"), "^\d+")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("2.1.3", "3.1.4"), "^\d+")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 1
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
|
|
$comparer.AddedItems[0].PreviousReportNode | Should -BeNullOrEmpty
|
|
$comparer.AddedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.AddedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.AddedItems[0].CurrentReportNode.Versions | Should -BeArray @("3.1.4")
|
|
}
|
|
|
|
It "Major version is removed" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("2.1.3", "3.1.4"), "^\d+")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("3.1.4"), "^\d+")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 1
|
|
|
|
$comparer.DeletedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.DeletedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.DeletedItems[0].PreviousReportNode.Versions | Should -BeArray @("2.1.3")
|
|
$comparer.DeletedItems[0].CurrentReportNode | Should -BeNullOrEmpty
|
|
}
|
|
|
|
It "Major version is changed" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("3.1.4"), "^\d+")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("3.2.0"), "^\d+")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 1
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
|
|
$comparer.ChangedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.ChangedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].PreviousReportNode.Versions | Should -BeArray @("3.1.4")
|
|
$comparer.ChangedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.ChangedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].CurrentReportNode.Versions | Should -BeArray @("3.2.0")
|
|
}
|
|
|
|
It "Major version is added, removed and updated at the same time" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("1.0.0", "2.1.3", "3.1.4", "4.0.2"), "^\d+")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("2.1.3", "3.2.0", "4.0.2", "5.1.0"), "^\d+")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 1
|
|
$comparer.ChangedItems | Should -HaveCount 1
|
|
$comparer.DeletedItems | Should -HaveCount 1
|
|
|
|
$comparer.AddedItems[0].PreviousReportNode | Should -BeNullOrEmpty
|
|
$comparer.AddedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.AddedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.AddedItems[0].CurrentReportNode.Versions | Should -BeArray @("5.1.0")
|
|
|
|
$comparer.ChangedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.ChangedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].PreviousReportNode.Versions | Should -BeArray @("3.1.4")
|
|
$comparer.ChangedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.ChangedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].CurrentReportNode.Versions | Should -BeArray @("3.2.0")
|
|
|
|
$comparer.DeletedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.DeletedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.DeletedItems[0].PreviousReportNode.Versions | Should -BeArray @("1.0.0")
|
|
$comparer.DeletedItems[0].CurrentReportNode | Should -BeNullOrEmpty
|
|
}
|
|
|
|
It "Minor version is added, removed and updated at the same time" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("2.3.8", "2.4.9", "2.5.3", "2.6.0", "2.7.4", "2.8.0"), "^\d+\.\d+")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("2.5.3", "2.6.2", "2.7.5", "2.8.0", "2.9.2", "2.10.3"), "^\d+\.\d+")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 1
|
|
$comparer.ChangedItems | Should -HaveCount 1
|
|
$comparer.DeletedItems | Should -HaveCount 1
|
|
|
|
$comparer.AddedItems[0].PreviousReportNode | Should -BeNullOrEmpty
|
|
$comparer.AddedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.AddedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.AddedItems[0].CurrentReportNode.Versions | Should -BeArray @("2.9.2", "2.10.3")
|
|
|
|
$comparer.ChangedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.ChangedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].PreviousReportNode.Versions | Should -BeArray @("2.6.0", "2.7.4")
|
|
$comparer.ChangedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.ChangedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.ChangedItems[0].CurrentReportNode.Versions | Should -BeArray @("2.6.2", "2.7.5")
|
|
|
|
$comparer.DeletedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.DeletedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.DeletedItems[0].PreviousReportNode.Versions | Should -BeArray @("2.3.8", "2.4.9")
|
|
$comparer.DeletedItems[0].CurrentReportNode | Should -BeNullOrEmpty
|
|
}
|
|
|
|
It "Patch version is added, removed and updated at the same time" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("2.3.8", "2.4.9", "2.5.3", "2.6.0", "2.7.4"), "^\d+\.\d+\.\d+")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddToolVersionsList("MyTool1", @("2.4.9", "2.5.4", "2.6.0", "2.7.5", "2.8.2"), "^\d+\.\d+\.\d+")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 1
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 1
|
|
|
|
$comparer.AddedItems[0].PreviousReportNode | Should -BeNullOrEmpty
|
|
$comparer.AddedItems[0].CurrentReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.AddedItems[0].CurrentReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.AddedItems[0].CurrentReportNode.Versions | Should -BeArray @("2.5.4", "2.7.5", "2.8.2")
|
|
|
|
$comparer.DeletedItems[0].PreviousReportNode | Should -BeOfType ([ToolVersionsListNode])
|
|
$comparer.DeletedItems[0].PreviousReportNode.ToolName | Should -Be "MyTool1"
|
|
$comparer.DeletedItems[0].PreviousReportNode.Versions | Should -BeArray @("2.3.8", "2.5.3", "2.7.4")
|
|
$comparer.DeletedItems[0].CurrentReportNode | Should -BeNullOrEmpty
|
|
}
|
|
}
|
|
|
|
Describe "TableNode" {
|
|
It "Rows are added" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B1|B2")))
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B1|B2", "C1|C2", "D1|D2")))
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 1
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
|
|
$comparer.AddedItems[0].PreviousReportNode | Should -BeOfType ([TableNode])
|
|
$comparer.AddedItems[0].PreviousReportNode.Headers | Should -Be "Name|Value"
|
|
$comparer.AddedItems[0].PreviousReportNode.Rows | Should -BeArray @("A1|A2", "B1|B2")
|
|
$comparer.AddedItems[0].CurrentReportNode | Should -BeOfType ([TableNode])
|
|
$comparer.AddedItems[0].CurrentReportNode.Headers | Should -Be "Name|Value"
|
|
$comparer.AddedItems[0].CurrentReportNode.Rows | Should -BeArray @("A1|A2", "B1|B2", "C1|C2", "D1|D2")
|
|
}
|
|
|
|
It "Rows are deleted" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B1|B2", "C1|C2", "D1|D2")))
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("C1|C2", "D1|D2")))
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 1
|
|
|
|
$comparer.DeletedItems[0].PreviousReportNode | Should -BeOfType ([TableNode])
|
|
$comparer.DeletedItems[0].PreviousReportNode.Headers | Should -Be "Name|Value"
|
|
$comparer.DeletedItems[0].PreviousReportNode.Rows | Should -BeArray @("A1|A2", "B1|B2", "C1|C2", "D1|D2")
|
|
$comparer.DeletedItems[0].CurrentReportNode | Should -BeOfType ([TableNode])
|
|
$comparer.DeletedItems[0].CurrentReportNode.Headers | Should -Be "Name|Value"
|
|
$comparer.DeletedItems[0].CurrentReportNode.Rows | Should -BeArray @("C1|C2", "D1|D2")
|
|
}
|
|
|
|
It "Rows are changed" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B1|B2")))
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B3|B4")))
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 1
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
|
|
$comparer.ChangedItems[0].PreviousReportNode | Should -BeOfType ([TableNode])
|
|
$comparer.ChangedItems[0].PreviousReportNode.Headers | Should -Be "Name|Value"
|
|
$comparer.ChangedItems[0].PreviousReportNode.Rows | Should -BeArray @("A1|A2", "B1|B2")
|
|
$comparer.ChangedItems[0].CurrentReportNode | Should -BeOfType ([TableNode])
|
|
$comparer.ChangedItems[0].CurrentReportNode.Headers | Should -Be "Name|Value"
|
|
$comparer.ChangedItems[0].CurrentReportNode.Rows | Should -BeArray @("A1|A2", "B3|B4")
|
|
}
|
|
|
|
It "Rows are changed and updated at the same time" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B1|B2")))
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B3|B4", "C1|C2")))
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 1
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
|
|
$comparer.ChangedItems[0].PreviousReportNode | Should -BeOfType ([TableNode])
|
|
$comparer.ChangedItems[0].PreviousReportNode.Headers | Should -Be "Name|Value"
|
|
$comparer.ChangedItems[0].PreviousReportNode.Rows | Should -BeArray @("A1|A2", "B1|B2")
|
|
$comparer.ChangedItems[0].CurrentReportNode | Should -BeOfType ([TableNode])
|
|
$comparer.ChangedItems[0].CurrentReportNode.Headers | Should -Be "Name|Value"
|
|
$comparer.ChangedItems[0].CurrentReportNode.Rows | Should -BeArray @("A1|A2", "B3|B4", "C1|C2")
|
|
}
|
|
|
|
It "Rows are changed and removed at the same time" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B1|B2", "C1|C2")))
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B3|B4")))
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 1
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
|
|
$comparer.ChangedItems[0].PreviousReportNode | Should -BeOfType ([TableNode])
|
|
$comparer.ChangedItems[0].PreviousReportNode.Headers | Should -Be "Name|Value"
|
|
$comparer.ChangedItems[0].PreviousReportNode.Rows | Should -BeArray @("A1|A2", "B1|B2", "C1|C2")
|
|
$comparer.ChangedItems[0].CurrentReportNode | Should -BeOfType ([TableNode])
|
|
$comparer.ChangedItems[0].CurrentReportNode.Headers | Should -Be "Name|Value"
|
|
$comparer.ChangedItems[0].CurrentReportNode.Rows | Should -BeArray @("A1|A2", "B3|B4")
|
|
}
|
|
|
|
It "Rows are not changed" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B1|B2")))
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B1|B2")))
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
}
|
|
|
|
It "Rows are not changed but header is changed" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B1|B2")))
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value2", @("A1|A2", "B1|B2")))
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
}
|
|
|
|
It "Rows are changed and header is changed at the same time" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value", @("A1|A2", "B1|B2")))
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddHeader("MyHeader").AddNode([TableNode]::new("Name|Value2", @("A1|A2", "B1|B2", "C1|C2")))
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 1
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 1
|
|
|
|
$comparer.AddedItems[0].PreviousReportNode | Should -BeNullOrEmpty
|
|
$comparer.AddedItems[0].CurrentReportNode | Should -BeOfType ([TableNode])
|
|
$comparer.AddedItems[0].CurrentReportNode.Headers | Should -Be "Name|Value2"
|
|
$comparer.AddedItems[0].CurrentReportNode.Rows | Should -BeArray @("A1|A2", "B1|B2", "C1|C2")
|
|
|
|
$comparer.DeletedItems[0].PreviousReportNode | Should -BeOfType ([TableNode])
|
|
$comparer.DeletedItems[0].PreviousReportNode.Headers | Should -Be "Name|Value"
|
|
$comparer.DeletedItems[0].PreviousReportNode.Rows | Should -BeArray @("A1|A2", "B1|B2")
|
|
$comparer.DeletedItems[0].CurrentReportNode | Should -BeNullOrEmpty
|
|
}
|
|
}
|
|
|
|
Describe "NoteNode" {
|
|
It "NoteNode is ignored from report" {
|
|
$prevReport = [HeaderNode]::new("Version 1")
|
|
$prevReport.AddNote("MyFirstNote")
|
|
$prevReport.AddHeader("MyFirstHeader").AddNote("MyFirstSubNote")
|
|
|
|
$nextReport = [HeaderNode]::new("Version 2")
|
|
$nextReport.AddNote("MySecondNote")
|
|
$nextReport.AddHeader("MySecondHeader").AddNote("MySecondSubNote")
|
|
|
|
$comparer = [SoftwareReportDifferenceCalculator]::new($prevReport, $nextReport)
|
|
$comparer.CompareReports()
|
|
|
|
$comparer.AddedItems | Should -HaveCount 0
|
|
$comparer.ChangedItems | Should -HaveCount 0
|
|
$comparer.DeletedItems | Should -HaveCount 0
|
|
}
|
|
}
|
|
} |