Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 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
79 changes: 79 additions & 0 deletions Test/public/project_item.test.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,85 @@
Assert-Count -Expected 0 -Presented $result.Keys
}

function Test_ResetProjectItem_Value_SUCCESS{

Reset-InvokeCommandMock
Mock_DatabaseRoot

$p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number
$item = $p.issue ; $itemId = $item.id
$f1 = $p.fieldtext.name ; $f1Value = "Any value" ;
$f2 = $p.fieldnumber.name ; $f2Value = 99 ;
MockCall_GetProject $p -SkipItems
MockCall_GetItem $itemId

Set-ProjectHelperEnvironment -Owner $owner -ProjectNumber $projectNumber

# Confirm actual values
$actualItem = Get-ProjectItem $itemId
$f1Actual = $actualItem.$f1
$f2Actual = $actualItem.$f2

# Edit values
Edit-ProjectItem -ItemId $itemId -fieldname $f1 -Value $f1Value
Edit-ProjectItem -ItemId $itemId -fieldname $f2 -Value $f2Value

# confirm that the vaules have changed as changes are staged
$changed = Get-ProjectItem $itemId
Assert-AreEqual -Expected $f1Value -Presented $changed.$f1
Assert-AreEqual -Expected $f2Value -Presented $changed.$f2

# Act - reset F1
Reset-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -FieldName $f1

Check notice

Code scanning / PSScriptAnalyzer

Line has trailing whitespace Note

Line has trailing whitespace
$reset1 = Get-ProjectItem $itemId
Assert-AreEqual -Expected $f1Actual -Presented $reset1.$f1
Assert-AreEqual -Expected $f2Value -Presented $reset1.$f2

Check notice

Code scanning / PSScriptAnalyzer

Line has trailing whitespace Note

Line has trailing whitespace
# Act Reset F2

Check notice

Code scanning / PSScriptAnalyzer

Line has trailing whitespace Note

Line has trailing whitespace
Reset-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId -FieldName $f2
$reset2 = Get-ProjectItem $itemId
Assert-AreEqual -Expected $f1Actual -Presented $reset2.$f1
Assert-AreEqual -Expected $f2Actual -Presented $reset2.$f2
}

function Test_ResetProjectItem_SUCCESS{

Reset-InvokeCommandMock
Mock_DatabaseRoot

$p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number
$item = $p.issue ; $itemId = $item.id
$f1 = $p.fieldtext.name ; $f1Value = "Any value" ;
$f2 = $p.fieldnumber.name ; $f2Value = 99 ;
MockCall_GetProject $p -SkipItems
MockCall_GetItem $itemId

Set-ProjectHelperEnvironment -Owner $owner -ProjectNumber $projectNumber

# Confirm actual values
$actualItem = Get-ProjectItem $itemId
$f1Actual = $actualItem.$f1
$f2Actual = $actualItem.$f2

# Edit values
Edit-ProjectItem -ItemId $itemId -fieldname $f1 -Value $f1Value
Edit-ProjectItem -ItemId $itemId -fieldname $f2 -Value $f2Value

# confirm that the vaules have changed as changes are staged
$changed = Get-ProjectItem $itemId
Assert-AreEqual -Expected $f1Value -Presented $changed.$f1
Assert-AreEqual -Expected $f2Value -Presented $changed.$f2

# Act - reset F1
Reset-ProjectItem -Owner $owner -ProjectNumber $projectNumber -ItemId $itemId

Check notice

Code scanning / PSScriptAnalyzer

Line has trailing whitespace Note

Line has trailing whitespace
$reset = Get-ProjectItem $itemId
Assert-AreEqual -Expected $f1Actual -Presented $reset.$f1
Assert-AreEqual -Expected $f2Actual -Presented $reset.$f2
}

function Test_EditProjectItems_Direct{
Reset-InvokeCommandMock
Mock_DatabaseRoot
Expand Down
9 changes: 6 additions & 3 deletions private/projectDatabase/project_database_Item.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -198,11 +198,14 @@
$db = $Database

if ($db.Staged.$ItemId.$FieldId) {
# Remove value
$db.Staged.$ItemId.Remove($FieldId)
}

Check notice

Code scanning / PSScriptAnalyzer

Line has trailing whitespace Note

Line has trailing whitespace
# If no more fields in item remove item
if ($db.Staged.$ItemId.Count -eq 0) { $db.Staged.Remove($ItemId)}

# If no more fields in item remove item
if ($db.Staged.$ItemId.Count -eq 0) {
} else {
# remove item
$db.Staged.Remove($ItemId)
}
}
Expand Down
40 changes: 40 additions & 0 deletions public/items/project_item.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,46 @@

} Export-ModuleMember -Function Edit-ProjectItem

function Reset-ProjectItem {

Check notice

Code scanning / PSScriptAnalyzer

The cmdlet 'Reset-ProjectItem' does not have a help comment. Note

The cmdlet 'Reset-ProjectItem' does not have a help comment.

Check warning

Code scanning / PSScriptAnalyzer

Function 'Reset-ProjectItem' has verb that could change system state. Therefore, the function has to support 'ShouldProcess'. Warning

Function 'Reset-ProjectItem' has verb that could change system state. Therefore, the function has to support 'ShouldProcess'.
[CmdletBinding()]
param(
[Parameter()][string]$Owner,
[Parameter()][string]$ProjectNumber,
[Parameter(Mandatory, ValueFromPipeline, Position = 1)][string]$ItemId,
[Parameter(Position = 2)][string]$FieldName
)

process{

($Owner, $ProjectNumber) = Get-OwnerAndProjectNumber -Owner $Owner -ProjectNumber $ProjectNumber
if ([string]::IsNullOrWhiteSpace($owner) -or [string]::IsNullOrWhiteSpace($ProjectNumber)) { "Owner and ProjectNumber are required" | Write-MyError; return $null }

Check notice

Code scanning / PSScriptAnalyzer

Line has trailing whitespace Note

Line has trailing whitespace
# Force cache update
# Full sync if force. Skip items if not force
$db = Get-Project -Owner $Owner -ProjectNumber $ProjectNumber -Force:$Force -SkipItems:$(-not $Force)

# Remove staged
if([string]::IsNullOrWhiteSpace($FieldName)){
# Remove all staged changes for the item
Remove-ItemStaged $db $ItemId
} else {
#Remove just the field staged change
$field = Get-Field $db $FieldName
if([string]::IsNullOrWhiteSpace($field)){
# Field not found
throw "Field [$FieldName] not found in project"
} else {

Remove-ItemStaged $db $ItemId $FieldName
}
}

# Commit changes to the database
Save-ProjectDatabaseSafe -Database $db
}

} Export-ModuleMember -Function Reset-ProjectItem

function Add-ProjectItemDirect {
[CmdletBinding()]
[alias("Add-ProjectItem", "api")]
Expand Down
2 changes: 1 addition & 1 deletion public/items/project_item_show.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ function Show-ProjectItem{
[CmdletBinding()]
[Alias("shpi")]
param(
[Parameter(ValueFromPipeline)][string]$ItemId,
[Parameter(Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline, Position = 0)][Alias("id")][string]$ItemId,
[Parameter()][array[]]$FieldsToShow
)

Expand Down
Loading