Functions/Internal/ConvertTo-JiraTransition.Tests.ps1

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

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

        $jiraServer = 'http://jiraserver.example.com'

        $tId = 11
        $tName = 'Start Progress'

        # Transition result status
        $tRId = 3
        $tRName = 'In Progress'
        $tRDesc = 'This issue is being actively worked on at the moment by the assignee.'

        $sampleJson = @"
{
    "id": "$tId",
    "name": "$tName",
    "to": {
    "self": "$jiraServer/rest/api/2/status/$tRId",
    "description": "$tRDesc",
    "iconUrl": "$jiraServer/images/icons/statuses/inprogress.png",
    "name": "$tRName",
    "id": "$tRId",
    "statusCategory": {
        "self": "$jiraServer/rest/api/2/statuscategory/4",
        "id": 4,
        "key": "indeterminate",
        "colorName": "yellow",
        "name": "In Progress"
    }
    }
}
"@

        $sampleObject = ConvertFrom-Json -InputObject $sampleJson

        $r = ConvertTo-JiraTransition -InputObject $sampleObject

        It "Creates a PSObject out of JSON input" {
            $r | Should Not BeNullOrEmpty
        }

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

        defProp $r 'Id' $tId
        defProp $r 'Name' $tName

        It "Defines the 'ResultStatus' property as a PSJira.Status object" {
            $r.ResultStatus.Id | Should Be $tRId
            $r.ResultStatus.Name | Should Be $tRName
        }
    }
}