Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
1e5b36e
Introduce new pester syntax: -Parameter in test module Microsoft.Powr…
kalgiz Mar 12, 2018
b5ce701
[Feature] Capital letter and -BeNullOrEmpty, -BeTrue, -BeFalse in pes…
kalgiz Mar 12, 2018
8258092
[Feature] -BeNullOrEmpty instead of -Be in Utility module tests.
kalgiz Mar 12, 2018
9fbf48b
[Feature] Tests in module Utility correction.
kalgiz Mar 12, 2018
0c672a1
[Feature] Test correction for module Microsoft.PowerShell.Utility.
kalgiz Mar 12, 2018
fae3746
[Feature] Tests correction
kalgiz Mar 12, 2018
994e89e
Merge branch 'master' of https://github.com/kalgiz/PowerShell into ne…
kalgiz Mar 12, 2018
aaf2133
[Feature] New pester syntax for tests in module Microsoft.WSMan.Manag…
kalgiz Mar 13, 2018
3e9de9e
xMerge branch 'master' of https://github.com/PowerShell/PowerShell
kalgiz Mar 13, 2018
0d3a25a
Merge branch 'master' of https://github.com/kalgiz/PowerShell into ne…
kalgiz Mar 13, 2018
ca3a716
[Feature] Tests correction
kalgiz Mar 13, 2018
7691f66
[Feature] Tests correction
kalgiz Mar 13, 2018
8ce3d4d
Tests correction
kalgiz Mar 13, 2018
3b49b8e
[Feature] Tests corrections.
kalgiz Mar 13, 2018
4a734aa
Merge branch 'master' of https://github.com/PowerShell/PowerShell
kalgiz Mar 13, 2018
d8608a3
Merge branch 'master' of https://github.com/kalgiz/PowerShell into ne…
kalgiz Mar 13, 2018
c7ffd59
[Feature]
kalgiz Mar 13, 2018
ad3f199
[Feature} Tests correction.
kalgiz Mar 13, 2018
12512c7
Merge branch 'master' of https://github.com/PowerShell/PowerShell
kalgiz Mar 13, 2018
2745116
[Feature]
kalgiz Mar 14, 2018
f5100df
Merge branch 'master' of https://github.com/PowerShell/PowerShell
kalgiz Mar 14, 2018
37e0e39
Merge branch 'master' of https://github.com/PowerShell/PowerShell
kalgiz Mar 14, 2018
75d310f
Merge branch 'master' of https://github.com/kalgiz/PowerShell into ne…
kalgiz Mar 14, 2018
082ae0e
Merge branch 'master' of https://github.com/PowerShell/PowerShell
kalgiz Mar 15, 2018
771440c
Merge branch 'master' of https://github.com/PowerShell/PowerShell
kalgiz Mar 16, 2018
99d69ea
Merge branch 'master' of https://github.com/kalgiz/PowerShell
kalgiz Mar 16, 2018
3470652
[Feature] Merge
kalgiz Mar 16, 2018
7664a69
[Feature] Tests in Utility module fixes.
kalgiz Mar 16, 2018
9310724
[Feature] Tests fixes
kalgiz Mar 16, 2018
29a8c88
[Feature] Merge branch 'master' of https://github.com/PowerShell/Powe…
kalgiz Mar 19, 2018
17c45e5
[Feature] Merge branch 'master' of https://github.com/kalgiz/PowerShe…
kalgiz Mar 19, 2018
9b41883
[Feature] Tests correction in Utility: -Be => -BeExactly for strings
kalgiz Mar 19, 2018
31b777c
[Feature] Utility tests correction - adding ErrorId to Throw statement
kalgiz Mar 19, 2018
1727112
Merge branch 'master' into new-pester-syntax-utility
TravisEz13 Mar 19, 2018
352f5ec
[Feature] Merge branch 'master' of https://github.com/PowerShell/Powe…
kalgiz Mar 20, 2018
4cc6225
[Feature] Tests in Utility module syntax correction.
kalgiz Mar 20, 2018
5067da2
[Feature] Merge branch 'new-pester-syntax-utility' of https://github.…
kalgiz Mar 20, 2018
89f2573
[Feature] Tests in Utility module correction.
kalgiz Mar 20, 2018
9890acd
[Feature] Tests correction.
kalgiz Mar 20, 2018
fb706cd
[Feature] Merge branch 'master' of https://github.com/PowerShell/Powe…
kalgiz Mar 20, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,287 +4,182 @@ Describe "Add-Member DRT Unit Tests" -Tags "CI" {

It "Mandatory parameters should not be null nor empty" {
# when Name is null
try
{
Add-Member -Name $null
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -Name $null } | Should -Throw -ErrorId "ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.AddMemberCommand"

# when Name is empty
try
{
Add-Member -Name ""
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -Name "" } | Should -Throw -ErrorId "ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.AddMemberCommand"

# when MemberType is null
try
{
Add-Member -MemberType $null
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -MemberType $null } | Should -Throw -ErrorId "ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.AddMemberCommand"

# when MemberType is empty
try
{
Add-Member -MemberType ""
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -MemberType "" } | Should -Throw -ErrorId "CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.AddMemberCommand"

# when InputObject is null
try
{
Add-Member -InputObject $null
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -InputObject $null } | Should -Throw -ErrorId "ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.AddMemberCommand"
}

# It only support on AliasProperty, ScriptProperty, CodeProperty and CodeMethod
It "Should Not Have Value2" {
$memberTypesWhereV1CannotBeNull = "CodeMethod", "MemberSet", "PropertySet", "ScriptMethod", "NoteProperty"
foreach ($memberType in $memberTypesWhereV1CannotBeNull)
{
try
{
Add-Member -InputObject a -memberType $memberType -Name Name -Value something -SecondValue somethingElse
Throw "Execution OK"
}
catch{
$_.FullyQualifiedErrorId | Should Be "Value2ShouldNotBeSpecified,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -InputObject a -memberType $memberType -Name Name -Value something -SecondValue somethingElse } |
Should -Throw -ErrorId "Value2ShouldNotBeSpecified,Microsoft.PowerShell.Commands.AddMemberCommand"
}
}

It "Cannot Add PS Property Or PS Method" {
$membersYouCannotAdd = "Method", "Property", "ParameterizedProperty"
foreach ($member in $membersYouCannotAdd)
{
try
{
Add-Member -InputObject a -memberType $member -Name Name
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "CannotAddMemberType,Microsoft.PowerShell.Commands.AddMemberCommand"

}
{ Add-Member -InputObject a -memberType $member -Name Name } | Should -Throw -ErrorId "CannotAddMemberType,Microsoft.PowerShell.Commands.AddMemberCommand"
}

try
{
Add-Member -InputObject a -memberType AnythingElse -Name Name
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -InputObject a -memberType AnythingElse -Name Name } | Should -Throw -ErrorId "CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.AddMemberCommand"

}

It "Value1 And Value2 Should Not Both Null" {
$memberTypes = "CodeProperty", "ScriptProperty"
foreach ($memberType in $memberTypes)
{
try
{
Add-Member -memberType $memberType -Name PropertyName -Value $null -SecondValue $null -InputObject a
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "Value1AndValue2AreNotBothNull,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -memberType $memberType -Name PropertyName -Value $null -SecondValue $null -InputObject a } |
Should -Throw -ErrorId "Value1AndValue2AreNotBothNull,Microsoft.PowerShell.Commands.AddMemberCommand"
}

}

It "Fail to add unexisting type" {
try
{
Add-Member -InputObject a -MemberType AliasProperty -Name Name -Value something -SecondValue unexistingType
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "InvalidCastFromStringToType,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -InputObject a -MemberType AliasProperty -Name Name -Value something -SecondValue unexistingType } |
Should -Throw -ErrorId "InvalidCastFromStringToType,Microsoft.PowerShell.Commands.AddMemberCommand"
}

It "Successful alias, no type" {
$results = Add-Member -InputObject a -MemberType AliasProperty -Name Cnt -Value Length -passthru
$results.Cnt | Should BeOfType Int32
$results.Cnt | Should Be 1
$results.Cnt | Should -BeOfType Int32
$results.Cnt | Should -Be 1
}

It "Successful alias, with type" {
$results = add-member -InputObject a -MemberType AliasProperty -Name Cnt -Value Length -SecondValue String -passthru
$results.Cnt | Should BeOfType String
$results.Cnt | Should Be '1'
$results.Cnt | Should -BeOfType String
$results.Cnt | Should -Be '1'
}

It "CodeProperty Reference Wrong Type" {
try
{
add-member -InputObject a -MemberType CodeProperty -Name Name -Value something
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "ConvertToFinalInvalidCastException,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -InputObject a -MemberType CodeProperty -Name Name -Value something } |
Should -Throw -ErrorId "ConvertToFinalInvalidCastException,Microsoft.PowerShell.Commands.AddMemberCommand"
}

It "Empty Member Set Null Value1" {
$results = add-member -InputObject a -MemberType MemberSet -Name Name -Value $null -passthru
$results.Length | Should Be 1
$results.Name.a | Should BeNullOrEmpty
$results.Length | Should -Be 1
$results.Name.a | Should -BeNullOrEmpty
}

It "Member Set With 1 Member" {
$members = new-object System.Collections.ObjectModel.Collection[System.Management.Automation.PSMemberInfo]
$n=new-object Management.Automation.PSNoteProperty a,1
$members.Add($n)
$r=add-member -InputObject a -MemberType MemberSet -Name Name -Value $members -passthru
$r.Name.a | Should Be '1'
$r=Add-Member -InputObject a -MemberType MemberSet -Name Name -Value $members -passthru
$r.Name.a | Should -Be '1'
}

It "MemberSet With Wrong Type For Value1" {
try
{
add-member -InputObject a -MemberType MemberSet -Name Name -Value ImNotACollection
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "ConvertToFinalInvalidCastException,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -InputObject a -MemberType MemberSet -Name Name -Value ImNotACollection } |
Should -Throw -ErrorId "ConvertToFinalInvalidCastException,Microsoft.PowerShell.Commands.AddMemberCommand"
}

It "ScriptMethod Reference Wrong Type" {
try
{
add-member -InputObject a -MemberType ScriptMethod -Name Name -Value something
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "ConvertToFinalInvalidCastException,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -InputObject a -MemberType ScriptMethod -Name Name -Value something } |
Should -Throw -ErrorId "ConvertToFinalInvalidCastException,Microsoft.PowerShell.Commands.AddMemberCommand"
}

It "Add ScriptMethod Success" {
$results = add-member -InputObject 'abc' -MemberType ScriptMethod -Name Name -Value {$this.length} -passthru
$results | Should Be abc
$results.Name() | Should Be 3
$results = Add-Member -InputObject 'abc' -MemberType ScriptMethod -Name Name -Value {$this.length} -PassThru
$results | Should -BeExactly 'abc'
$results.Name() | Should -Be 3
}

It "ScriptProperty Reference Wrong Type" {
try
{
add-member -InputObject a -MemberType ScriptProperty -Name Name -Value something
Throw "Execution OK"
}
catch
{
$_.FullyQualifiedErrorId | Should Be "ConvertToFinalInvalidCastException,Microsoft.PowerShell.Commands.AddMemberCommand"
}
{ Add-Member -InputObject a -MemberType ScriptProperty -Name Name -Value something } |
Should -Throw -ErrorId "ConvertToFinalInvalidCastException,Microsoft.PowerShell.Commands.AddMemberCommand"
}

It "Add ScriptProperty Success" {
set-alias ScriptPropertyTestAlias dir
$al=(get-alias ScriptPropertyTestAlias)
$al.Description="MyDescription"
$al | add-member -MemberType ScriptProperty -Name NewDescription -Value {$this.Description} -SecondValue {$this.Description=$args[0]}
$al.NewDescription | Should Be 'MyDescription'
$al | Add-Member -MemberType ScriptProperty -Name NewDescription -Value {$this.Description} -SecondValue {$this.Description=$args[0]}
$al.NewDescription | Should -BeExactly 'MyDescription'
$al.NewDescription = "some description"
$al.NewDescription | Should Be 'some description'
$al.NewDescription | Should -BeExactly 'some description'
}

It "Add TypeName MemberSet Success" {
$a = 'string' | add-member -MemberType NoteProperty -Name TestNote -Value Any -TypeName MyType -passthru
$a.PSTypeNames[0] | Should Be MyType
$a.PSTypeNames[0] | Should -Be MyType
}

It "Add TypeName Existing Name Success" {
$a = 'string' | add-member -TypeName System.Object -passthru
$a.PSTypeNames[0] | Should Be System.Object
$a.PSTypeNames[0] | Should -Be System.Object
}

It "Add Single Note To Array" {
$a=1,2,3
$a = Add-Member -InputObject $a -MemberType NoteProperty -Name Name -Value Value -PassThru
$a.Name | Should Be Value
$a.Name | Should -Be Value
}

It "Add Multiple Note Members" {
$obj=new-object psobject
$hash=@{Name='Name';TestInt=1;TestNull=$null}
add-member -InputObject $obj $hash
$obj.Name | Should Be 'Name'
$obj.TestInt | Should Be 1
$obj.TestNull | Should BeNullOrEmpty
$obj.Name | Should -Be 'Name'
$obj.TestInt | Should -Be 1
$obj.TestNull | Should -BeNullOrEmpty
}

It "Add Multiple Note With TypeName" {
$obj=new-object psobject
$hash=@{Name='Name';TestInt=1;TestNull=$null}
$obj = add-member -InputObject $obj $hash -TypeName MyType -Passthru
$obj.PSTypeNames[0] | Should Be MyType
$obj.PSTypeNames[0] | Should -Be MyType
}

It "Add Multiple Members With Force" {
$obj=new-object psobject
$hash=@{TestNote='hello'}
$obj | Add-Member -MemberType NoteProperty -Name TestNote -Value 1
$obj | add-member $hash -force
$obj.TestNote | Should Be 'hello'
$obj.TestNote | Should -Be 'hello'
}

It "Simplified Add-Member should support using 'Property' as the NoteProperty member name" {
$results = add-member -InputObject a property Any -passthru
$results.property | Should Be 'Any'
$results.property | Should -BeExactly 'Any'

$results = add-member -InputObject a Method Any -passthru
$results.Method | Should Be 'Any'
$results.Method | Should -BeExactly 'Any'

$results = add-member -InputObject a 23 Any -passthru
$results.23 | Should Be 'Any'
$results.23 | Should -BeExactly 'Any'

$results = add-member -InputObject a 8 np Any -passthru
$results.np | Should Be 'Any'
$results.np | Should -BeExactly 'Any'

$results = add-member -InputObject a 16 sp {1+1} -passthru
$results.sp | Should Be 2
$results.sp | Should -Be 2
}

It "Verify Add-Member error message is not empty" {
$object = @(1,2)
Add-Member -InputObject $object "ABC" "Value1"
Add-Member -InputObject $object "ABC" "Value2" -ErrorVariable errorVar -ErrorAction SilentlyContinue
$errorVar.Exception | Should BeOfType "System.InvalidOperationException"
$errorVar.Exception.Message | Should Not BeNullOrEmpty
$errorVar.Exception | Should -BeOfType "System.InvalidOperationException"
$errorVar.Exception.Message | Should -Not -BeNullOrEmpty
}
}

Expand All @@ -294,16 +189,16 @@ Describe "Add-Member" -Tags "CI" {
$o = New-Object psobject
Add-Member -InputObject $o -MemberType NoteProperty -Name proppy -Value "superVal"

$o.proppy | Should Not BeNullOrEmpty
$o.proppy | Should Be "superVal"
$o.proppy | Should -Not -BeNullOrEmpty
$o.proppy | Should -BeExactly "superVal"
}

It "Should be able to add a member to an object that already has a member in it" {
$o = New-Object psobject
Add-Member -InputObject $o -MemberType NoteProperty -Name proppy -Value "superVal"
Add-Member -InputObject $o -MemberType NoteProperty -Name AnotherMember -Value "AnotherValue"

$o.AnotherMember | Should Not BeNullOrEmpty
$o.AnotherMember | Should Be "AnotherValue"
$o.AnotherMember | Should -Not -BeNullOrEmpty
$o.AnotherMember | Should -BeExactly "AnotherValue"
}
}
Loading