Test/public/integrations/Edit-ProjectItemWithValues.test.ps1

function Test_EditProjectItemWithValues_Integration {

    # Assert-SkipTest
    Reset-InvokeCommandMock
    Mock_DatabaseRoot

    $owner = "octodemo"
    $projectNumber = "625"
    $itemId = "PVTI_lADOAlIw4c4A0Lf4zgYNTc0"
    $fieldSlug = "sf_"

    MockCall_GitHubOrgProjectWithFields -Owner $owner -ProjectNumber $projectNumber -FileName "invoke-GitHubOrgProjectWithFields-$Owner-$ProjectNumber.2-skipitems.json" -SkipItems

    # Mock the direct call for item
    MockCallJson -Command "Invoke-GetItem -itemid $itemId" -FileName "invoke-getitem-$itemId.json"

    $data = @{
        "Text1"   = "value1"
        "Text2"   = "value2"
        "Text3"   = "value3" # not presented on project. This field will not be added
        "Number1" = "66"
    }

    # Act
    $result = Edit-ProjectItemWithValues -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -Values $data -FieldSlug $FieldSlug

    # Assert
    $result = get-projectitemstaged -Owner $owner -ProjectNumber $projectNumber

    $itemStaged = $result.$itemId
    Assert-Count -Expected 3 -Presented $itemStaged.Values

    foreach ($fieldName in  @("Text1", "Text2", "Number1")) {
        $value = ($itemStaged.Values | Where-Object { $_.Field.name -eq $($fieldSlug + $fieldName) }).Value
        Assert-AreEqual -Expected $data.$fieldName -Presented $value
    }

}