Skip to content
Open
1 change: 1 addition & 0 deletions Test/private/MockCall_Project700.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ function Get-Mock_Project_700 {
$issue = $pActual.items.nodes | Where-Object { $_.content.title -eq "Issue for development" }
$fss = $issue.fieldValues.nodes | Where-Object { $_.field.id -eq $($fieldsingleselect.id) }
$project.issue = @{
order = 20 # order of this item when calling spi
id = $issue.id
number = $issue.content.number
contentId = $issue.content.id
Expand Down
2 changes: 1 addition & 1 deletion Test/public/items/project_item_show.test.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ function Test_OpenInEditor{

$text = "Sample Text for Editor"

$command = '"{content}" | code -w - '
$command = '"{content}" | code -w -'
$command = $command -replace '\{content\}', $text

MockCallToNull -Command $command
Expand Down
58 changes: 58 additions & 0 deletions Test/public/items/use_order.test.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
function Test_UserOrder_Success{
MockCall_GetProject_700

$p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number

$list = Search-ProjectItem -Owner $owner -ProjectNumber $projectNumber -IncludeDone

# Act
$result = $list | Use-Order

Assert-Count -Expected $($p.items.totalCount +4) -Presented $result

}

function Test_UserOrder_Success_GetItem{
MockCall_GetProject_700

$p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number

$list = Search-ProjectItem -Owner $owner -ProjectNumber $projectNumber -IncludeDone

# Act
$result = $list | Use-Order 1 -PassThru

Assert-AreEqual -Expected $($list[1].id) -Presented $result.id
}

function Test_UserOrder_Success_OpenBrowser{
MockCall_GetProject_700

$p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number
$order = $p.issue.order ; $url = $p.issue.url

MockCallToNull -command "Invoke-ProjectHelperOpenUrl -Url $url"

$list = Search-ProjectItem -Owner $owner -ProjectNumber $projectNumber -IncludeDone

# Act
$result = $list | Use-Order $order -OpenInBrowser

# Assert
Assert-IsNull -Object $result
}

function Test_UserOrder_Success_Passthru{
MockCall_GetProject_700

$p = Get-Mock_Project_700 ; $owner = $p.owner ; $projectNumber = $p.number
$order = $p.issue.order ; $id = $p.issue.id

$list = Search-ProjectItem -Owner $owner -ProjectNumber $projectNumber -IncludeDone

# Act
$result = $list | Use-Order $order -PassThru

# Assert
Assert-AreEqual -Expected $id -Presented $result.id
}
3 changes: 2 additions & 1 deletion Test/traceInvoke.log
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Invoke-CreateDraftItem -ProjectId PVT_kwDOAlIw4c4BCe3V -Title "DraftIssue create
Invoke-CreateIssue -RepositoryId R_kgDOPrRnkQ -Title "Random value title" -Body "Random value body"
Invoke-GetIssueOrPullRequest -Url https://github.com/octodemo/rulasg-dev-1/issues/46
Invoke-AddItemToProject -ProjectId PVT_kwDOAlIw4c4BCe3V -ContentId I_kwDOPrRnkc7T2Al2
"Sample Text for Editor" | code -w -
"Sample Text for Editor" | code -w -
Invoke-RemoveItemFromProject -ProjectId PVT_kwDOAlIw4c4BCe3V -ItemId PVTI_lADOAlIw4c4BCe3VzggVZH8
Invoke-RemoveIssue -IssueId I_kwDOPrRnkc7T2Al2
Import-Module /Users/rulasg/code/ProjectHelper ; Invoke-GitHubUpdateItemValues -ProjectId PVT_kwDOAlIw4c4BCe3V -ItemId PVTI_lADOAlIw4c4BCe3Vzgeiodc -FieldId PVTF_lADOAlIw4c4BCe3Vzg0rhko -Value "new value of the comment 10" -Type text
Expand Down Expand Up @@ -80,3 +80,4 @@ Invoke-GetUser -Handle rauldibildos
Invoke-UpdateProjectV2Collaborators -ProjectId PVT_kwDOAlIw4c4BCe3V -collaborators "MDQ6VXNlcjY4ODQ0MDg= U_kgDOC_E3gw" -Role "WRITER"
Invoke-GitHubOrgProjectWithFields -Owner octodemo -ProjectNumber 700 -afterFields "" -afterItems "" -query "updated:>=2024-02-18"
Invoke-GitHubOrgProjectWithFields -Owner octodemo -ProjectNumber 700 -afterFields "" -afterItems "" -query "updated:>=2025-03-15"
Invoke-ProjectHelperOpenUrl -Url https://github.com/octodemo/rulasg-dev-1/issues/26
33 changes: 26 additions & 7 deletions include/openFilesUrls.ps1
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
function Open-Url {

# Include openFilesUrls.ps1
# Provides controls to open files and URLs in the default system applications.
# Use $MODULE_NAME variable to set up functions names

Set-MyInvokeCommandAlias -Alias OpenUrl -Command "Invoke-$($MODULE_NAME)OpenUrl -Url {url}"

function Invoke-ModuleNameOpenUrl{
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
[ValidateNotNullOrEmpty()]
[string]$Url
param(
[Parameter(Mandatory = $true)][string]$Url
)

process {
try {
try {
# Determine the operating system
if ($IsWindows -or $env:OS -match "Windows") {
# Windows - use Start-Process
Expand Down Expand Up @@ -47,6 +51,21 @@ function Open-Url {
catch {
Write-Error "Failed to open URL: $_"
}
}
Copy-Item -path Function:Invoke-ModuleNameOpenUrl -Destination Function:"Invoke-$($MODULE_NAME)OpenUrl"
Export-ModuleMember -Function "Invoke-$($MODULE_NAME)OpenUrl"


function Open-Url {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
[ValidateNotNullOrEmpty()]
[string]$Url
)

process {
Invoke-MyCommand -Command OpenUrl -Parameters @{url = $Url}
}
}

Expand Down
10 changes: 7 additions & 3 deletions public/items/project_item.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -216,11 +216,15 @@ function Format-ProjectItem{
$ret = [pscustomobject]::new()

foreach($a in $Attributes){
if( ! $Item.$a){
# just in case attribute has an empty name
if( [string]::IsNullOrWhiteSpace($a) ){
continue
}

$ret | Add-Member -MemberType NoteProperty -Name $a -Value $Item.$a -force
# Add value even if it't empty value
$value = $Item.$a ?? ""

$ret | Add-Member -MemberType NoteProperty -Name $a -Value $value -force
}

return $ret
Expand Down Expand Up @@ -750,4 +754,4 @@ function AreEqual {
$ret = $Object1 -eq $Object2

return $ret
}
}
6 changes: 3 additions & 3 deletions public/items/project_item_show.ps1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Set-MyinvokeCommandAlias -Alias ShowInEditor -Command '"{content}" | code -w - '
Set-MyinvokeCommandAlias -Alias ShowInEditor -Command '"{content}" | code -w -'

function Show-ProjectItem{
[CmdletBinding()]
Expand All @@ -10,7 +10,7 @@ function Show-ProjectItem{
[Parameter()][array[]]$FieldsToShow,
[Parameter()][switch]$AllComments,
[Parameter()][switch]$OpenInEditor,
[Parameter()][Alias("W")][switch]$OpenInWebBrowser
[Parameter()][Alias("W")][switch]$OpenInBrowser
)

begin{
Expand All @@ -26,7 +26,7 @@ function Show-ProjectItem{

$item = Get-ProjectItem -ItemId $ItemId

if($OpenInWebBrowser){
if($OpenInBrowser){
Open-Url -Url $item.url
}

Expand Down
32 changes: 18 additions & 14 deletions public/items/use_order.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ function Use-Order {
[Parameter(Position = 0)][int]$Ordinal = -1,
[Parameter(ValueFromPipeline)][array]$List,
[Parameter()][switch]$OpenInEditor,
[Parameter()][Alias("w")][switch]$OpenInBrowser
[Parameter()][Alias("w")][switch]$OpenInBrowser,
[Parameter()][switch]$PassThru
)

begin {
Expand All @@ -28,21 +29,24 @@ function Use-Order {
}

end {
if ($Ordinal -gt -1) {
$itemId = $finallist[$Ordinal].id


if($OpenInBrowser){
# Open
$item = Get-ProjectItem -ItemId $itemId
Open-Url $($item.url)
} else {
# Show
Show-ProjectItem -Item $itemId -OpenInEditor:$OpenInEditor
}
# Show list of items
if ($Ordinal -lt 0) {
return $finalList | Format-Table -AutoSize
}
else {
$finalList | Format-Table -AutoSize

# Show a particular item
$itemId = $finalList[$Ordinal].id

#return item
if($PassThru) {
$i = Get-ProjectItem -ItemId $itemId
return [PsCustomObject]$i
}

# Show item in console or editor
Show-ProjectItem -Item $itemId -OpenInEditor:$OpenInEditor -OpenInBrowser:$OpenInBrowser
return

}
} Export-ModuleMember -Function Use-Order -Alias "uo"
Loading