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.json" 

    $data = @{
        "Text1" = "value1"
        "Text2" = "value2"
        "Text3" = "value3"
        "Number1" = "value3"
    }

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

    # Assert - Confirm update
    # Assert-IsNull -Object $result

    $result = Get-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId

    Assert-AreEqual -expected $data.Text1 -Presented $result.$($FieldSlug + "Text1")
    Assert-AreEqual -expected $data.Text2 -Presented $result.$($FieldSlug + "Text2")
    # Assert-AreEqual -expected $data.Text3 -Presented $result.$($FieldSlug + "Text3")
    Assert-AreEqual -expected $data.Number1 -Presented $result.$($FieldSlug + "Number1")

    # Confirm that the changes are staged
    $result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

    Assert-Count -Expected 3 -Presented $result.$itemId

}

function Test_UpdateProjectWithIntegration{

    Reset-InvokeCommandMock
    Mock_DatabaseRoot

    # https://github.com/orgs/octodemo/projects/625/views/1

    $owner = "octodemo"
    $projectNumber = "625"
    $itemId = "PVTI_lADOAlIw4c4A0Lf4zgYNTc0"
    $fieldSlug = "sf_"
    $IntegrationField = "sfUrl"
    $IntegrationCommand = "Get-SfAccount"

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

    $data1 = @{
        "Text1" = "value11"
        "Text2" = "value12"
        "Text3" = "value13"
        "Number1" = 11
    }

    $data2 = @{
        "Text1" = "value21"
        "Text2" = "value22"
        "Text3" = "value23"
        "Number1" = 22
    }

    MockCallToObject -Command "Get-SfAccount https://some.com/1234/viuew" -OutObject $data1
    MockCallToObject -Command "Get-SfAccount https://some.com/4321/viuew" -OutObject $data2

    $param = @{
        Owner = $owner
        ProjectNumber = $projectNumber
        IntegrationField = $IntegrationField
        IntegrationCommand = $IntegrationCommand
        Slug = $fieldSlug
    }

   $result = Update-ProjectItemsWithIntegration @param


    # Confirm that the changes are staged
    $result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

    Assert-Count -Expected 2 -Presented $result

    # PVTI_lADOAlIw4c4A0Lf4zgYNTc0
    Assert-AreEqual -Expected $($data1.Text1) -Presented $result.PVTI_lADOAlIw4c4A0Lf4zgYNTc0.PVTF_lADOAlIw4c4A0Lf4zgp2lxM.Value
    Assert-AreEqual -Expected $($data1.Text2) -Presented $result.PVTI_lADOAlIw4c4A0Lf4zgYNTc0.PVTF_lADOAlIw4c4A0Lf4zgp2l3o.Value
    Assert-AreEqual -Expected $($data1.Number1) -Presented $result.PVTI_lADOAlIw4c4A0Lf4zgYNTc0.PVTF_lADOAlIw4c4A0Lf4zgp2mBs.Value
    
    # PVTI_lADOAlIw4c4A0Lf4zgYNTxI
    Assert-AreEqual -Expected $($data2.Text1) -Presented $result.PVTI_lADOAlIw4c4A0Lf4zgYNTxI.PVTF_lADOAlIw4c4A0Lf4zgp2lxM.Value
    Assert-AreEqual -Expected $($data2.Text2) -Presented $result.PVTI_lADOAlIw4c4A0Lf4zgYNTxI.PVTF_lADOAlIw4c4A0Lf4zgp2l3o.Value
    Assert-AreEqual -Expected $($data2.Number1) -Presented $result.PVTI_lADOAlIw4c4A0Lf4zgYNTxI.PVTF_lADOAlIw4c4A0Lf4zgp2mBs.Value
}