Tests/Add-ARMresource.Tests.ps1

#$here = Split-Path -Parent $MyInvocation.MyCommand.Path
#$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'
#. "$here\$sut"

$modulePath = Split-Path $PSScriptRoot -Parent
$modulepath = Join-Path -Path $modulePath -ChildPath posharm.psd1
Import-Module $modulePath

Describe "Add-ARMresource" {
    New-ArmTemplate

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

    $actual = New-ARMresource @expected    

    Context "Without pipeline" {

        Add-ARMresource -InputObject $actual
        $template = Get-ARMTemplate

        It "Should add a resource to a template" {        
            $template.resources.count | should be 1
        }

        $actualResource = $template.resources[0]

        It "Should have name property with value [$($expected.Name)]" {            
            $actualResource.name | should be $expected.Name
        }

        It "Should be of type Array" {
            $template.resources -is [array] | Should be $true
        }
    }
    
    Context "With pipeline" {
        New-ArmTemplate

        $actual | Add-ARMresource
        $template = Get-ARMTemplate

        It "Should add a resource to a template" {        
            $template.resources.count | should be 1
        }

        $actualResource = $null
        $actualResource = $template.resources[0]

        It "Should have name property with value [$($expected.Name)]" {
            $actualResource.name | should be $expected.Name
        }

        It "Should be of type Array" {
            $template.resources -is [array] | Should be $true
        }
    }
}

Remove-Module -name posharm -ErrorAction SilentlyContinue