-
Notifications
You must be signed in to change notification settings - Fork 0
/
Test-Property.Tests.ps1
116 lines (115 loc) · 4.5 KB
/
Test-Property.Tests.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
. "${PSScriptRoot}\..\src\Test-Property.ps1"
Describe "Test-Property" -Tag "Test", "Property" {
Context "Basic Usage" {
BeforeAll {
# No good way to suppress PSUseDeclaredVarsMoreThanAssignments
$obj = @{ Foo = "Bar" }
}
It "Should accept named parameters" {
Test-Property -InputObject $obj -PropertyName "Foo" | Should -Be $true
}
It "Should accept ordered parameters" {
Test-Property $obj "Foo" | Should -Be $true
}
It "Should accept pipeline parameters" {
$obj | Test-Property -PropertyName "Foo" | Should -Be $true
}
}
Context "IDictionary" {
BeforeAll {
$obj = New-Object "System.Collections.Generic.Dictionary[string,object]"
$obj.Add("Make", "Ford")
$obj.Add("Model", "Mustang")
$obj.Add("Year", 2008)
}
It "Should have <PropertyName> [of type <OfType>]" -TestCases @(
@{ PropertyName = "Make"; OfType = [string] },
@{ PropertyName = "Model"; OfType = [string] },
@{ PropertyName = "Year"; OfType = [int] }
) {
Param([string]$PropertyName,[type]$OfType)
Test-Property $obj -PropertyName $PropertyName | Should -Be $true
Test-Property $obj -PropertyName $PropertyName -OfType $OfType | Should -Be $true
}
It "Shouldn't have <PropertyName>" -TestCases @(
@{ PropertyName = "VIN" },
@{ PropertyName = "Mileage" }
) {
Param([string]$PropertyName)
Test-Property $obj -PropertyName $PropertyName | Should -Be $false
}
It "Should acknowledge <PropertyName> was added" -TestCases @(
@{ PropertyName = "VIN"; PropertyValue = "1HGBH41JXMN109186" },
@{ PropertyName = "Mileage"; PropertyValue = 12345 }
) {
Param([string]$PropertyName,[psobject]$PropertyValue)
Test-Property $obj -PropertyName $PropertyName | Should -Be $false
$obj.Add($PropertyName, $PropertyValue)
Test-Property $obj -PropertyName $PropertyName | Should -Be $true
}
}
Context "HashTable" {
BeforeEach {
$obj = @{
Make = "Ford"
Model = "Mustang"
Year = 2008
}
}
It "Should have <PropertyName> [of type <OfType>]" -TestCases @(
@{ PropertyName = "Make"; OfType = [string] },
@{ PropertyName = "Model"; OfType = [string] },
@{ PropertyName = "Year"; OfType = [int] }
) {
Param([string]$PropertyName,[type]$OfType)
Test-Property $obj -PropertyName $PropertyName | Should -Be $true
Test-Property $obj -PropertyName $PropertyName -OfType $OfType | Should -Be $true
}
It "Shouldn't have <PropertyName>" -TestCases @(
@{ PropertyName = "VIN" },
@{ PropertyName = "Mileage" }
) {
Param([string]$PropertyName)
Test-Property $obj -PropertyName $PropertyName | Should -Be $false
}
It "Should acknowledge <PropertyName> was added" -TestCases @(
@{ PropertyName = "VIN"; PropertyValue = "1HGBH41JXMN109186" },
@{ PropertyName = "Mileage"; PropertyValue = 12345 }
) {
Param([string]$PropertyName,[psobject]$PropertyValue)
Test-Property $obj -PropertyName $PropertyName | Should -Be $false
$obj.Add($PropertyName, $PropertyValue)
Test-Property $obj -PropertyName $PropertyName | Should -Be $true
}
}
Context "PSCustomObject" {
BeforeEach {
$obj = "{`"Make`":`"Ford`",`"Model`":`"Mustang`",`"Year`":2008}" | ConvertFrom-Json
}
It "Should have <PropertyName> [of type <OfType>]" -TestCases @(
@{ PropertyName = "Make"; OfType = [string] },
@{ PropertyName = "Model"; OfType = [string] },
@{ PropertyName = "Year"; OfType = [int] }
) {
Param([string]$PropertyName,[type]$OfType)
Test-Property $obj -PropertyName $PropertyName | Should -Be $true
Test-Property $obj -PropertyName $PropertyName -OfType $OfType | Should -Be $true
}
It "Shouldn't have <PropertyName>" -TestCases @(
@{ PropertyName = "VIN" },
@{ PropertyName = "Mileage" }
) {
Param([string]$PropertyName)
Test-Property $obj -PropertyName $PropertyName | Should -Be $false
}
It "Should acknowledge <PropertyName> was added" -TestCases @(
@{ PropertyName = "VIN"; PropertyValue = "1HGBH41JXMN109186" },
@{ PropertyName = "Mileage"; PropertyValue = 12345 }
) {
Param([string]$PropertyName,[psobject]$PropertyValue)
Test-Property $obj -PropertyName $PropertyName | Should -Be $false
$obj | Add-Member -NotePropertyName $PropertyName -NotePropertyValue $PropertyValue
Test-Property $obj -PropertyName $PropertyName | Should -Be $true
}
}
}