From 770fc5470b724f9606be87adc1adad67ebf7c4ab Mon Sep 17 00:00:00 2001 From: rulasg Date: Sat, 22 Mar 2025 23:34:49 +0100 Subject: [PATCH 1/3] feat: migrate NewCsvTestFile function to public directory and enhance parameter attributes --- {Test/private => public}/NewCsvTestFile.ps1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename {Test/private => public}/NewCsvTestFile.ps1 (72%) diff --git a/Test/private/NewCsvTestFile.ps1 b/public/NewCsvTestFile.ps1 similarity index 72% rename from Test/private/NewCsvTestFile.ps1 rename to public/NewCsvTestFile.ps1 index 9baad43..b3b1adf 100644 --- a/Test/private/NewCsvTestFile.ps1 +++ b/public/NewCsvTestFile.ps1 @@ -1,7 +1,7 @@ function New-TestCsvFile { param ( - [int]$NumRows = 10, - [string]$Path = "test.csv" + [Parameter()][int]$NumRows = 10, + [Parameter()][string]$Path = "test.csv" ) $data = @() @@ -18,4 +18,4 @@ function New-TestCsvFile { $data | Export-Csv -Path $Path -NoTypeInformation return $Path -} \ No newline at end of file +} Export-ModuleMember -Function New-TestCsvFile \ No newline at end of file From ea1d484844395394f6cc2eda9b1fa78e45e23cfe Mon Sep 17 00:00:00 2001 From: rulasg Date: Sun, 23 Mar 2025 04:00:12 +0100 Subject: [PATCH 2/3] feat: add integration test for CSV file import and enhance error handling in database functions --- Test/public/CsvFile.test.ps1 | 16 ++++++++++++++++ public/CsvDatabase.ps1 | 4 ++++ public/CsvRecord.ps1 | 11 ++--------- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/Test/public/CsvFile.test.ps1 b/Test/public/CsvFile.test.ps1 index 8e55fbc..ed9f0ba 100644 --- a/Test/public/CsvFile.test.ps1 +++ b/Test/public/CsvFile.test.ps1 @@ -47,3 +47,19 @@ function Test_GetCsvFile_Default_Id{ Assert-AreEqual -Expected "Value3_$i" -Presented $record2.Column3 } +function Test_GetCsvFile_Integration{ + + # Assert-SkipTest -Message "Integration test not implemented" + + Mock_Database -resetDatabase + $databaseRoot = Get-Mock_DatabaseStore + $csvPath = "~/Downloads/kk2.csv" + + Assert-IsTrue -Condition (Test-Path -Path $csvPath) + + $result = Import-CsvFile -Path $csvPath -KeyColumn "AccountId" + + Assert-NotImplemented + +} + diff --git a/public/CsvDatabase.ps1 b/public/CsvDatabase.ps1 index 508881b..cb7416c 100644 --- a/public/CsvDatabase.ps1 +++ b/public/CsvDatabase.ps1 @@ -70,6 +70,10 @@ function Save-CsvDatabase{ foreach ($row in $Data) { $keyValue = $row.$KeyColumn + if (-not $keyValue) { + throw "Key column '$KeyColumn' not found in row: $row" + } + if (-not $CsvDatabase.ContainsKey($keyValue)) { $CsvDatabase[$keyValue] = @{} } diff --git a/public/CsvRecord.ps1 b/public/CsvRecord.ps1 index 35892b8..bef0d57 100644 --- a/public/CsvRecord.ps1 +++ b/public/CsvRecord.ps1 @@ -51,15 +51,8 @@ function Get-CsvRecord{ $record = $db.$Id if (-Not $record) { - Write-Error "Record not found for ID: $Id in Csv $Path" - return - } - - $record = $db.$Id - - if (-Not $record) { - Write-Error "Record not found for ID: $Id in Csv $Path" - return + # Write-Error "Record not found for ID: $Id in Csv $Path" + return $null } return $record From 6d0154d14777efb0aecdb470260b5254f25a7d03 Mon Sep 17 00:00:00 2001 From: rulasg Date: Sun, 23 Mar 2025 04:06:10 +0100 Subject: [PATCH 3/3] feat: update CSV file path and enhance integration test assertions for account ID --- Test/public/CsvFile.test.ps1 | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Test/public/CsvFile.test.ps1 b/Test/public/CsvFile.test.ps1 index ed9f0ba..dc7a421 100644 --- a/Test/public/CsvFile.test.ps1 +++ b/Test/public/CsvFile.test.ps1 @@ -49,17 +49,21 @@ function Test_GetCsvFile_Default_Id{ function Test_GetCsvFile_Integration{ - # Assert-SkipTest -Message "Integration test not implemented" + Assert-SkipTest -Message "Integration test not implemented" Mock_Database -resetDatabase $databaseRoot = Get-Mock_DatabaseStore - $csvPath = "~/Downloads/kk2.csv" + $csvPath = "~/Downloads/data.csv" Assert-IsTrue -Condition (Test-Path -Path $csvPath) - $result = Import-CsvFile -Path $csvPath -KeyColumn "AccountId" + $result = Import-CsvFile -Path $csvPath -KeyColumn "Account Id" - Assert-NotImplemented + Assert-AreEqual -Expected "2F84A5E1110A1AC840178DF2FDFEF080" -Presented $result + + $dbPath = Invoke-CsvHelperGetDbRootPath + + Assert-ItemExist -Path $($dbPath | Join-Path -ChildPath $result.json) }