Tests/New-ARMresource.Tests.ps1

#$here = Split-Path -Parent $MyInvocation.MyCommand.Path
#$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'
#. "$here\$sut"
#Import-Module C:\Users\tore\Dropbox\SourceTreeRepros\PoshARM
$modulePath = Split-Path $PSScriptRoot -Parent
$modulepath = Join-Path -Path $modulePath -ChildPath poshARM.psd1
Import-Module $modulePath

Describe "New-ARMresource" {
   
    $expected = @{
        APIversion = '2016-03-30'
        Name = 'MyVM'
        Location = 'EAST-US'
        Tags = @{tag=1}
        Comments = 'hey'
        DependsOn = @("item1","item2")
        SKU = @{value = "skuvalue"}
        Kind = 'storage'
        Properties = @{prop1=1}
        Type = 'Microsoft.Compute/virtualMachines'
    }

    $Actual = New-ARMresource @expected

    Context "Create object" {

        It "Should create a new resource object" {
            $Actual | Should not Be $null
        }

        It "Should be of type [PSCustomObject]" {
            $Actual.GetType().Name | Should be "PSCustomObject"
        }

         It "Should create a PSCustomObject with PStypeName 'ARMresource'" {
            $Actual.pstypenames[0] | should be "ARMresource"
        }

        It "Should have an APIversion [$($expected.APIversion)]" {
            $Actual.APIversion | Should be $expected.APIversion
        }

        It "Should have an Name [$($expected.Name)]" {
            $Actual.Name | Should be $expected.Name
        }

        It "Should have an Location [$($expected.Location)]" {
            $Actual.Location | Should be $expected.Location
        }
        
        It "Should have a Tag [$($expected.Tags.tag)]" {
            $Actual.tags.tag | Should be $expected.Tags.tag
        }

        It "Should have a Comment [$($expected.Comments)]" {
            $Actual.Comments | Should be $expected.Comments
        }
        
        It "Should have a DependsOn [$($expected.DependsOn)]" {
            $Actual.DependsOn | Should be $expected.DependsOn
        }
        
        It "Should have a SKU [$($expected.SKU)]" {
            $Actual.SKU | Should be $expected.SKU
        }

        It "Should have a Kind [$($expected.Kind)]" {
            $Actual.Kind | Should be $expected.Kind
        }
        
        It "Should have a Properties [$($expected.Properties.Prop)]" {
            $Actual.Properties.Prop | Should be $expected.Properties.Prop
        }

        It "Should have a Type [$($expected.Type)]" {
            $Actual.Type | Should be $expected.Type
        }        
    }    
}

Remove-Module -name posharm -ErrorAction SilentlyContinue