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: 1 addition & 1 deletion HubbersHelper.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Copyright = '(c) rulasg. All rights reserved.'
# RequiredModules = @()

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()
RequiredModules = @(@{ModuleName="InvokeHelper"; ModuleVersion="1.2.4"})

# Script files (.ps1) that are run in the caller's environment prior to importing this module.
# ScriptsToProcess = @()
Expand Down
171 changes: 171 additions & 0 deletions Test/helper/module.helper.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
# Helper for module variables

function Find-ModuleRootPath{
[CmdletBinding()]
param(
[Parameter(Mandatory,ValueFromPipeline,Position = 0)]
[string]$Path

Check warning

Code scanning / PSScriptAnalyzer

Command accepts pipeline input but has not defined a process block. Warning

Command accepts pipeline input but has not defined a process block.
)

$path = Convert-Path -Path $Path

while (-not [string]::IsNullOrWhiteSpace($Path)){
$psd1 = Get-ChildItem -Path $Path -Filter *.psd1 | Select-Object -First 1

if ($psd1 | Test-Path) {

if($psd1.BaseName -eq "Test"){
#foudn testing module. Continue
$path = $path | Split-Path -Parent
continue
}

Check notice

Code scanning / PSScriptAnalyzer

Line has trailing whitespace Note

Line has trailing whitespace
# foudn module
return $path
}
# folder without psd1 file
$path = $path | Split-Path -Parent
}

# Path is null. Reached driver root. Module not found
return $null
}

$MODULE_ROOT_PATH = $PSScriptRoot | Find-ModuleRootPath
$MODULE_NAME = (Get-ChildItem -Path $MODULE_ROOT_PATH -Filter *.psd1 | Select-Object -First 1).BaseName

# Helper for module variables


$VALID_FOLDER_NAMES = @('Include', 'Private', 'Public', 'Root', 'TestInclude', 'TestPrivate', 'TestPublic', 'TestRoot', 'Tools', 'DevContainer', 'WorkFlows', 'GitHub', 'Helper', 'Config', 'TestHelper', 'TestConfig')

class ValidFolderNames : System.Management.Automation.IValidateSetValuesGenerator {
[String[]] GetValidValues() {
return $script:VALID_FOLDER_NAMES
}
}

function Get-Ps1FullPath{
[CmdletBinding()]
param(
[Parameter(Mandatory,Position = 0)][string]$Name,
[Parameter(Position = 1)][ValidateSet([ValidFolderNames])][string]$FolderName,
[Parameter(Position = 0)][string]$ModuleRootPath
)

# If folderName is not empty
if($FolderName -ne $null){

Check warning

Code scanning / PSScriptAnalyzer

$null should be on the left side of equality comparisons. Warning

$null should be on the left side of equality comparisons.
$folder = Get-ModuleFolder -FolderName $FolderName -ModuleRootPath $ModuleRootPath
$path = $folder | Join-Path -ChildPath $Name
} else {
$path = $Name
}

# Check if file exists
if(-Not (Test-Path $path)){
throw "File $path not found"
}

# Get Path item
$item = Get-item -Path $path

return $item
}
function Get-ModuleRootPath{
[CmdletBinding()]
param(
[Parameter(Position = 0)][string]$ModuleRootPath
)

# if ModuleRootPath is not provided, default to local module path
if([string]::IsNullOrWhiteSpace($ModuleRootPath)){
$ModuleRootPath = $MODULE_ROOT_PATH
}

# Convert to full path
$ModuleRootPath = Convert-Path -Path $ModuleRootPath

return $ModuleRootPath
}

function Get-ModuleName{
[CmdletBinding()]
param(
[Parameter(Position = 0)] [string]$ModuleRootPath
)

$ModuleRootPath = Get-ModuleRootPath -ModuleRootPath $ModuleRootPath

$MODULE_NAME = (Get-ChildItem -Path $MODULE_ROOT_PATH -Filter *.psd1 | Select-Object -First 1).BaseName


return $MODULE_NAME
}

function Get-ModuleFolder{

Check notice

Code scanning / PSScriptAnalyzer

The cmdlet 'Get-ModuleFolder' does not have a help comment. Note

The cmdlet 'Get-ModuleFolder' does not have a help comment.
[CmdletBinding()]
param(
[Parameter(Mandatory,Position = 0)][ValidateSet([ValidFolderNames])][string]$FolderName,
[Parameter(Position = 1)][string]$ModuleRootPath
)

$ModuleRootPath = Get-ModuleRootPath -ModuleRootPath $ModuleRootPath

# TestRootPath
$testRootPath = $ModuleRootPath | Join-Path -ChildPath "Test"

switch ($FolderName){
'Public'{
$moduleFolder = $ModuleRootPath | Join-Path -ChildPath "public"
}
'Private'{
$moduleFolder = $ModuleRootPath | Join-Path -ChildPath "private"
}
'Include'{
$moduleFolder = $ModuleRootPath | Join-Path -ChildPath "include"
}
'TestInclude'{
$moduleFolder = $testRootPath | Join-Path -ChildPath "include"
}
'TestPrivate'{
$moduleFolder = $testRootPath | Join-Path -ChildPath "private"
}
'TestPublic'{
$moduleFolder = $testRootPath | Join-Path -ChildPath "public"
}
'Root'{
$moduleFolder = $ModuleRootPath
}
'TestRoot'{
$moduleFolder = $testRootPath
}
'Tools'{
$moduleFolder = $ModuleRootPath | Join-Path -ChildPath "tools"
}
'DevContainer'{
$moduleFolder = $ModuleRootPath | Join-Path -ChildPath ".devcontainer"
}
'WorkFlows'{
$moduleFolder = $ModuleRootPath | Join-Path -ChildPath ".github/workflows"
}
'GitHub'{
$moduleFolder = $ModuleRootPath | Join-Path -ChildPath ".github"
}
'Helper'{
$moduleFolder = $ModuleRootPath | Join-Path -ChildPath "helper"
}
'Config'{
$moduleFolder = $ModuleRootPath | Join-Path -ChildPath "config"
}
'TestHelper'{
$moduleFolder = $testRootPath | Join-Path -ChildPath "helper"
}
'TestConfig'{
$moduleFolder = $testRootPath | Join-Path -ChildPath "config"
}
default{
throw "Folder [$FolderName] is unknown"
}
}
return $moduleFolder
} Export-ModuleMember -Function Get-ModuleFolder
41 changes: 41 additions & 0 deletions Test/include/database.mock.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# DATABASE MOCK

Check notice

Code scanning / PSScriptAnalyzer

Line has trailing whitespace Note

Line has trailing whitespace
#
# This file is used to mock the database path and the database file
# for the tests. It creates a mock database path and a mock database file
# and sets the database path to the mock database path.
#
# THIS INCLUDE REQURED module.helper.ps1
if(-not $MODULE_NAME){ throw "Missing MODULE_NAME varaible initialization. Check for module.helerp.ps1 file." }

$DB_INVOKE_GET_ROOT_PATH_CMD = "Invoke-$($MODULE_NAME)GetDbRootPath"
$MOCK_DATABASE_PATH = "test_database_path"

function Mock_Database([switch]$ResetDatabase){

MockCallToString $DB_INVOKE_GET_ROOT_PATH_CMD -OutString $MOCK_DATABASE_PATH

$dbstore = Invoke-MyCommand -Command $DB_INVOKE_GET_ROOT_PATH_CMD
Assert-AreEqual -Expected $MOCK_DATABASE_PATH -Presented $dbstore

if($ResetDatabase){
Reset-DatabaseStore
}

}

function Get-Mock_DatabaseStore{
$dbstore = Invoke-MyCommand -Command $DB_INVOKE_GET_ROOT_PATH_CMD
return $dbstore
}

function Reset-DatabaseStore{

Check warning

Code scanning / PSScriptAnalyzer

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

Function 'Reset-DatabaseStore' has verb that could change system state. Therefore, the function has to support 'ShouldProcess'.
[CmdletBinding()]
param()

$databaseRoot = Invoke-MyCommand -Command $DB_INVOKE_GET_ROOT_PATH_CMD

Check notice

Code scanning / PSScriptAnalyzer

Line has trailing whitespace Note

Line has trailing whitespace
Remove-Item -Path $databaseRoot -Recurse -Force -ErrorAction SilentlyContinue

New-Item -Path $databaseRoot -ItemType Directory

}
Loading