Functions/Internal/ConvertTo-JiraCreateMetaField.Tests.ps1

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

Describe "ConvertTo-JiraCreateMetaField" {
    function defProp($obj, $propName, $propValue)
    {
        It "Defines the '$propName' property" {
            $obj.$propName | Should Be $propValue
        }
    }

    $sampleJson = @'
{
    "required": true,
    "schema": {
        "type": "string",
        "system": "summary"
    },
    "name": "Summary",
    "hasDefaultValue": false,
    "operations": [
        "set"
    ],
    "fakeProperty": "Cool stuff"
}
'@

    $sampleObject = ConvertFrom-Json -InputObject $sampleJson

    $r = ConvertTo-JiraCreateMetaField $sampleObject
    It "Creates a PSObject out of JSON input" {
        $r | Should Not BeNullOrEmpty
    }

    It "Sets the type name to PSJira.CreateMetaField" {
        (Get-Member -InputObject $r).TypeName | Should Be 'PSJira.CreateMetaField'
    }

    defProp $r 'Name' 'Summary'
    defProp $r 'HasDefaultValue' $false

    # This one tests the "return everything available" functionality
    defProp $r 'fakeProperty' 'Cool stuff'
}