Functions/Internal/ConvertTo-JiraStatus.Tests.ps1

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

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

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

    $statusName = 'In Progress'
    $statusId = 3
    $statusDesc = 'This issue is being actively worked on at the moment by the assignee.'

    $sampleJson = @"
{
  "self": "$jiraServer/rest/api/2/status/$statusId",
  "description": "$statusDesc",
  "iconUrl": "$jiraServer/images/icons/statuses/inprogress.png",
  "name": "$statusName",
  "id": "$statusId",
  "statusCategory": {
    "self": "$jiraServer/rest/api/2/statuscategory/4",
    "id": 4,
    "key": "indeterminate",
    "colorName": "yellow",
    "name": "In Progress"
  }
}
"@

    $sampleObject = ConvertFrom-Json2 -InputObject $sampleJson

    $r = ConvertTo-JiraStatus -InputObject $sampleObject

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

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

    defProp $r 'Id' $statusId
    defProp $r 'Name' $statusName
    defProp $r 'Description' $statusDesc
    defProp $r 'IconUrl' "$jiraServer/images/icons/statuses/inprogress.png"
    defProp $r 'RestUrl' "$jiraServer/rest/api/2/status/$statusId"
}