Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Test/private/MockCall_Project700.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ function Get-Mock_Project_700 {
$fieldnumber = $pActual.fields.nodes | Where-Object { $_.name -eq "field-number" }
$fielddate = $pActual.fields.nodes | Where-Object { $_.name -eq "field-date" }
$fieldsingleselect = $pActual.fields.nodes | Where-Object { $_.name -eq "field-singleselect" }
$fieldStatus = $pActual.fields.nodes | Where-Object { $_.name -eq "Status" }

# Repository Info
$repoContent = Get-MockFileContentJson -fileName $project.repofile -AsHashtable
Expand Down Expand Up @@ -58,6 +59,7 @@ function Get-Mock_Project_700 {
$project.fieldnumber = @{ id = $fieldnumber.id ; name = $fieldnumber.name }
$project.fielddate = @{ id = $fielddate.id ; name = $fielddate.name }
$project.fieldsingleselect = @{ id = $fieldsingleselect.id ; name = $fieldsingleselect.name ; options = $fieldsingleselect.options }
$project.fieldStatus = @{ id = $fieldStatus.id ; name = $fieldStatus.name ; options = $fieldStatus.options }

# Items
$project.items = @{}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3904,7 +3904,7 @@
},
{
"__typename": "ProjectV2ItemFieldSingleSelectValue",
"name": "Todo",
"name": "In Progress",
"field": {
"__typename": "ProjectV2SingleSelectField",
"id": "PVTSSF_lADOAlIw4c4BCe3Vzg0rg-U",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@
},
{
"__typename": "ProjectV2ItemFieldSingleSelectValue",
"name": "Todo",
"name": "In Progress",
"field": {
"__typename": "ProjectV2SingleSelectField",
"id": "PVTSSF_lADOAlIw4c4BCe3Vzg0rg-U",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4106,7 +4106,7 @@
},
{
"__typename": "ProjectV2ItemFieldSingleSelectValue",
"name": "Todo",
"name": "In Progress",
"field": {
"__typename": "ProjectV2SingleSelectField",
"id": "PVTSSF_lADOAlIw4c4BCe3Vzg0rg-U",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
},
{
"__typename": "ProjectV2ItemFieldSingleSelectValue",
"name": "Todo",
"name": "In Progress",
"field": {
"__typename": "ProjectV2SingleSelectField",
"id": "PVTSSF_lADOAlIw4c4BCe3Vzg0rg-U",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
},
{
"__typename": "ProjectV2ItemFieldSingleSelectValue",
"name": "Todo",
"name": "In Progress",
"field": {
"__typename": "ProjectV2SingleSelectField",
"id": "PVTSSF_lADOAlIw4c4BCe3Vzg0rg-U",
Expand All @@ -62,7 +62,7 @@
"options": [
{
"id": "f75ad846",
"name": "Todo"
"name": "In Progress"
},
{
"id": "47fc9ee4",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
},
{
"__typename": "ProjectV2ItemFieldSingleSelectValue",
"name": "Todo",
"name": "In Progress",
"field": {
"__typename": "ProjectV2SingleSelectField",
"id": "PVTSSF_lADOAlIw4c4BCe3Vzg0rg-U",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@
},
{
"__typename": "ProjectV2ItemFieldSingleSelectValue",
"name": "Todo",
"name": "In Progress",
"field": {
"__typename": "ProjectV2SingleSelectField",
"id": "PVTSSF_lADOAlIw4c4BCe3Vzg0rg-U",
Expand Down
306 changes: 306 additions & 0 deletions Test/public/items/edit_project_item.test.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,306 @@
function Test_EditProjectItems_FieldName{

#Arrange
$p = Get-Mock_Project_700 ; $Owner = $p.owner ; $ProjectNumber = $p.number
MockCall_GetProject $p -skipItems
$i= $p.issue ; $itemId = $i.id

$fieldComment = $p.fieldtext.name ; $fieldCommentValue = "new value of the comment 10.1"
$fieldId = $p.fieldtext.id

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

# Act
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -FieldName $fieldComment -Value $fieldCommentValue

# Assert
$result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

Assert-Count -Expected 1 -Presented $result.Keys
Assert-AreEqual -Expected $itemId -Presented $result.Keys[0]
Assert-AreEqual -Expected $fieldComment -Presented $result.$itemId.$fieldId.Field.name
Assert-AreEqual -Expected $fieldCommentValue -Presented $result.$itemId.$fieldId.Value
}

function Test_EditProjectItems_Fields{

# Arrange
$p = Get-Mock_Project_700 ; $Owner = $p.owner ; $ProjectNumber = $p.number
MockCall_GetProject $p -skipItems
$i= $p.issue ; $itemId = $i.id

$fieldTextName = $p.fieldtext.name ; $fieldTextId = $p.fieldtext.id
$fieldNumberName = $p.fieldnumber.name ; $fieldNumberId = $p.fieldnumber.id
$fieldTextValue = "new value of the comment 10.1"
$fieldNumberValue = 42

$fields = @{
$fieldTextName = $fieldTextValue
$fieldNumberName = $fieldNumberValue
}

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

# Act
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -Fields $fields

# Assert
$result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

Assert-Count -Expected 1 -Presented $result.Keys
Assert-AreEqual -Expected $itemId -Presented $result.Keys[0]
Assert-AreEqual -Expected $fieldTextValue -Presented $result.$itemId.$fieldTextId.Value
Assert-AreEqual -Expected $fieldNumberValue -Presented $result.$itemId.$fieldNumberId.Value
}

function Test_EditProjectItems_Title_Body_AddComment{

# Arrange
$p = Get-Mock_Project_700 ; $Owner = $p.owner ; $ProjectNumber = $p.number
MockCall_GetProject $p -skipItems
$i= $p.issue ; $itemId = $i.id

$newtitle = "Item 1 - title"
$newBody = "Item 1 - body"
$addComment = "This is a new comment added to the item."

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

# Act
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -Title $newtitle -Body $newBody -AddComment $addComment

# Assert
$result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

Assert-AreEqual -Expected $newtitle -Presented $result.$itemId.title.Value
Assert-AreEqual -Expected $newBody -Presented $result.$itemId.body.Value
Assert-AreEqual -Expected $addComment -Presented $result.$itemId.addcomment.Value
}

function Test_EditProjectItems_Status{

# Arrange
$p = Get-Mock_Project_700 ; $Owner = $p.owner ; $ProjectNumber = $p.number
MockCall_GetProject $p -skipItems
$i= $p.issue ; $itemId = $i.id

MockCall_GetProject $p -SkipItems

Set-ProjectHelperEnvironment -Owner $Owner -ProjectNumber $ProjectNumber

$newStatus = "Todo"
$statusFieldId = $p.fieldStatus.id

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

# Act
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -Status $newStatus

# Assert
$result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

Assert-AreEqual -Expected $newStatus -Presented $result.$itemId.$statusFieldId.Value
}

function Test_EditProjectItems_Status_Close{

# Arrange
$p = Get-Mock_Project_700 ; $Owner = $p.owner ; $ProjectNumber = $p.number
MockCall_GetProject $p -skipItems
$i= $p.issue ; $itemId = $i.id

MockCall_GetProject $p -SkipItems

Set-ProjectHelperEnvironment -Owner $Owner -ProjectNumber $ProjectNumber

$newStatus = "Done"
$statusFieldId = $p.fieldStatus.id

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

# Act
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -Close

# Assert
$result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

Assert-Count -Expected 1 -Presented $result.$itemId.Keys
Assert-AreEqual -Expected $newStatus -Presented $result.$itemId.$statusFieldId.Value
}

function Test_EditProjectItems_Status_Backlog{

# Arrange
$p = Get-Mock_Project_700 ; $Owner = $p.owner ; $ProjectNumber = $p.number
MockCall_GetProject $p -skipItems
$i= $p.issue ; $itemId = $i.id

MockCall_GetProject $p -SkipItems

Set-ProjectHelperEnvironment -Owner $Owner -ProjectNumber $ProjectNumber

$newStatus = "Todo"
$statusFieldId = $p.fieldStatus.id

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

# Act
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -Backlog

# Assert
$result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

Assert-Count -Expected 1 -Presented $result.$itemId.Keys
Assert-AreEqual -Expected $newStatus -Presented $result.$itemId.$statusFieldId.Value
}

function Test_EditProjectItems_Status_Ready{

# Arrange
$p = Get-Mock_Project_700 ; $Owner = $p.owner ; $ProjectNumber = $p.number
MockCall_GetProject $p -skipItems
$i= $p.issue ; $itemId = $i.id

MockCall_GetProject $p -SkipItems

Set-ProjectHelperEnvironment -Owner $Owner -ProjectNumber $ProjectNumber

$newStatus = "Todo"
$statusFieldId = $p.fieldStatus.id

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

# Act
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -Backlog

# Assert
$result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

Assert-Count -Expected 1 -Presented $result.$itemId.Keys
Assert-AreEqual -Expected $newStatus -Presented $result.$itemId.$statusFieldId.Value
}

function Test_EditProjectItems_AddCommentLongText{

# Arrange
$p = Get-Mock_Project_700 ; $Owner = $p.owner ; $ProjectNumber = $p.number
MockCall_GetProject $p -skipItems
$i= $p.issue ; $itemId = $i.id

MockCall_GetProject $p -SkipItems

$commentValue = "This is a long comment added to the item. It should be added as a new comment and not override the previous one."

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

# Act
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -AddCommentLongText

# Assert
$result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

Assert-Count -Expected 1 -Presented $result.$itemId.Keys
Assert-AreEqual -Expected $commentValue -Presented $result.$itemId.addcomment.Value
}

function Test_EditProjectItems_BodyLongText{

# Arrange
$p = Get-Mock_Project_700 ; $Owner = $p.owner ; $ProjectNumber = $p.number
MockCall_GetProject $p -skipItems
$i= $p.issue ; $itemId = $i.id

MockCall_GetProject $p -SkipItems

$commentValue = "This is a long comment added to the item. It should be added as a new comment and not override the previous one."

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

# Act
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -BodyLongText

# Assert
$result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

Assert-Count -Expected 1 -Presented $result.$itemId.Keys
Assert-AreEqual -Expected $commentValue -Presented $result.$itemId.body.Value
}

function Test_EditProjectItems_NormalizeTitle{

# Arrange
$p = Get-Mock_Project_700 ; $Owner = $p.owner ; $ProjectNumber = $p.number
MockCall_GetProject $p -skipItems
$i= $p.issue ; $itemId = $i.id

MockCall_GetProject $p -SkipItems

$newTitle = "[{repo}] {title}"
$newTitle = $newTitle -replace "{repo}", $i.repositoryName
$newTitle = $newTitle -replace "{title}", $i.title

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

# Act
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -NormalizeTitle

# Assert
$result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

Assert-Count -Expected 1 -Presented $result.$itemId.Keys
Assert-AreEqual -Expected $newTitle -Presented $result.$itemId.title.Value
}

function Test_EditProjectItems_OpenInBrowser{

# Arrange
$p = Get-Mock_Project_700 ; $Owner = $p.owner ; $ProjectNumber = $p.number
MockCall_GetProject $p -skipItems
$i= $p.issue ; $itemId = $i.id

# Mock the direct call for item
MockCallJson -Command "Invoke-GetItem -itemid $itemId" -FileName "invoke-getitem-$itemId.json"
MockCallToNull -Command "Invoke-ProjectHelperOpenUrl -Url ""$($i.url)"""

# Act
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -OpenInBrowser

# Assert
$result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

Assert-Count -Expected 0 -Presented $result
}

function Test_EditProjectItems_Force{

# Arrange
$p = Get-Mock_Project_700 ; $Owner = $p.owner ; $ProjectNumber = $p.number
MockCall_GetProject $p -skipItems
$i= $p.issue ; $itemId = $i.id

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

# for the project sync
MockCall_GetProject $p

# Act
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -Force

# Assert
$result = Get-ProjectItemStaged -Owner $owner -ProjectNumber $projectNumber

Assert-Count -Expected 0 -Presented $result
}
Loading
Loading