Skip to content

Commit 30dbfc3

Browse files
committed
fix(GetItem): Make the force update item not full project ; update project item test to improve field value assertions
1 parent 3ff289e commit 30dbfc3

2 files changed

Lines changed: 32 additions & 42 deletions

File tree

Test/public/project_item.test.ps1

Lines changed: 25 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -9,60 +9,46 @@ function Test_GetProjectItem_SUCCESS{
99

1010

1111
$itemId = "PVTI_lADOBCrGTM4ActQazgMuXXc"
12-
$fieldTitleValue = "A draft in the project"
13-
$fieldCommentValue = "This"
12+
$projectFieldTitleValue = "A draft in the project"
13+
$projectFieldCommentValue = "This"
14+
$itemFieldTitleValue = "kk text"
15+
$itemFieldCommentValue = "comment for draft 1"
1416

15-
# allow get project with skipitems
16-
MockCall_GitHubOrgProjectWithFields -Owner $owner -ProjectNumber $projectNumber -FileName 'projectV2-skipitems.json' -skipitems
17-
18-
# Allow to get project with items for the FORCE
17+
# allow get project
1918
MockCall_GitHubOrgProjectWithFields -Owner $owner -ProjectNumber $projectNumber -FileName 'projectV2.json'
20-
$result = Get-ProjectItem -Owner $Owner -ProjectNumber $ProjectNumber -ItemId $itemId -Force
21-
22-
Assert-AreEqual -Expected $itemId -Presented $result.id
23-
Assert-AreEqual -Expected $fieldCommentValue -Presented $result.$fieldComment
24-
Assert-AreEqual -Expected $fieldTitleValue -Presented $result.$fieldTitle
25-
26-
# Edit to see the staged references
27-
$fieldCommentValue = "new value of the comment 10.1"
28-
$fieldTitleValue = "new value of the title 10.1"
29-
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber $itemId $fieldComment $fieldCommentValue
30-
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber $itemId $fieldTitle $fieldTitleValue
3119

20+
# Even if id is in project we make a direct call when with Force
21+
MockCallJson -Command "Invoke-GetItem -itemid $itemId" -FileName "invoke-getitem-$itemId.json"
22+
23+
# Act get value from project
3224
$result = Get-ProjectItem -Owner $Owner -ProjectNumber $ProjectNumber -ItemId $itemId
3325

3426
Assert-AreEqual -Expected $itemId -Presented $result.id
35-
Assert-AreEqual -Expected $fieldCommentValue -Presented $result.$fieldComment
36-
Assert-AreEqual -Expected $fieldTitleValue -Presented $result.$fieldTitle
37-
}
27+
Assert-AreEqual -Expected $projectFieldCommentValue -Presented $result.$fieldComment
28+
Assert-AreEqual -Expected $projectFieldTitleValue -Presented $result.$fieldTitle
3829

39-
function Test_GetProjectItem_SUCCESS_CacheItem{
40-
Reset-InvokeCommandMock
41-
Mock_DatabaseRoot
42-
43-
$Owner = "octodemo" ; $ProjectNumber = 700 ;
44-
$itemId ="PVTI_lADOAlIw4c4BCe3Vzgeio4o"
30+
# Act with force - get value from direct call
31+
$result = Get-ProjectItem -Owner $Owner -ProjectNumber $ProjectNumber -ItemId $itemId -Force
4532

46-
# Cache project with no items
47-
MockCall_GitHubOrgProjectWithFields -Owner $owner -ProjectNumber $ProjectNumber -skipitems -FileName "invoke-GitHubOrgProjectWithFields-octodemo-700-skipitems.json"
48-
$null = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -SkipItems
33+
Assert-AreEqual -Expected $itemId -Presented $result.id
34+
Assert-AreEqual -Expected $itemFieldCommentValue -Presented $result.$fieldComment
35+
Assert-AreEqual -Expected $itemFieldTitleValue -Presented $result.$fieldTitle
4936

50-
# Get item direct call
51-
Set-InvokeCommandMock -Command "Get-MockFileContentJson -filename invoke-getitem-$itemId.json" -Alias "Invoke-GetItem -ItemId $itemId"
37+
# Edit to see the staged references
38+
$newFieldCommentValue = "new value of the comment 10.1"
39+
$newFieldTitleValue = "new value of the title 10.1"
40+
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber $itemId $fieldComment $newFieldCommentValue
41+
Edit-ProjectItem -Owner $owner -ProjectNumber $projectNumber $itemId $fieldTitle $newFieldTitleValue
5242

53-
# Act
43+
# Act getting from cached project with staged values
5444
$result = Get-ProjectItem -Owner $Owner -ProjectNumber $ProjectNumber -ItemId $itemId
5545

56-
# Check return value is item
5746
Assert-AreEqual -Expected $itemId -Presented $result.id
58-
59-
# Check that the item is cached
60-
# As the project db did not have any item, now it should have one
61-
$db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber
62-
Assert-Count -Expected 1 -Presented $db.items.Keys
63-
Assert-IsNotNull -Object $db.items.$itemId
47+
Assert-AreEqual -Expected $newFieldCommentValue -Presented $result.$fieldComment
48+
Assert-AreEqual -Expected $newFieldTitleValue -Presented $result.$fieldTitle
6449
}
6550

51+
6652
function Test_EditProjetItems_SUCCESS{
6753
Reset-InvokeCommandMock
6854
Mock_DatabaseRoot

public/project_item.ps1

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ function Get-ProjectItem {
2525

2626

2727
# Get Item from Project database
28-
$db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -Force:$Force
28+
$db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber
2929

3030
# Durty flag
3131
$durty = $false
@@ -35,15 +35,19 @@ function Get-ProjectItem {
3535
if ($db) {
3636
$item = Get-Item $db $itemId
3737
}
38-
if ($null -eq $item) {
39-
"Item [$ItemId] not found in cache, fetching from API" | Write-Verbose
38+
39+
if (( ! $item ) -or $Force) {
40+
"Fetching item [$ItemId] from API" | Write-Verbose
4041

4142
# Get direct. No cache as we are in a database modification context
4243
$item = Get-ProjectItemDirect -ItemId $ItemId
4344

4445
# Add to database
4546
Set-Item $db $item
4647
$durty = $true
48+
49+
# Get item again to allow the merge between staged and project fields
50+
$item = Get-Item $db $itemId
4751
}
4852

4953
return $item

0 commit comments

Comments
 (0)