Test/public/CsvFile.test.ps1


function Test_GetCsvFile{

    Mock_Database -resetDatabase
    $databaseRoot = Get-Mock_DatabaseStore
    $csvPath = New-TestCsvFile

    # Act
    $key = Import-CsvFile -Path $csvPath -KeyColumn "Column1"

    # Assert
    Assert-IsNotNull -Object $key
    Assert-Count -Expected 1 -Presented (Get-ChildItem -Path $databaseRoot)
    Assert-ItemExist -Path "$databaseRoot/$key.json"

    # read database file from json
    $data = Get-Content -Path "$databaseRoot/$key.json" | ConvertFrom-Json -Depth 10 -AsHashtable

    # Random record
    $i = 5
    $record2 = $data["Value1_$i"]

    Assert-AreEqual -Expected "Value1_$i" -Presented $record2.Column1
    Assert-AreEqual -Expected "Value2_$i" -Presented $record2.Column2
    Assert-AreEqual -Expected "Value3_$i" -Presented $record2.Column3
}

function Test_GetCsvFile_Default_Id{

    Mock_Database -resetDatabase
    $databaseRoot = Get-Mock_DatabaseStore
    $csvPath = New-TestCsvFile

    # Act
    $key = Import-CsvFile -Path $csvPath

    # Assert
    # read database file from json
    $data = Get-Content -Path "$databaseRoot/$key.json" | ConvertFrom-Json -Depth 10 -AsHashtable

    # Random record
    $i = 5
    $record2 = $data["ValueId_$i"]

    Assert-AreEqual -Expected "Value1_$i" -Presented $record2.Column1
    Assert-AreEqual -Expected "Value2_$i" -Presented $record2.Column2
    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/data.csv"

    Assert-IsTrue -Condition (Test-Path -Path $csvPath)

    $result = Import-CsvFile -Path $csvPath -KeyColumn "Account Id"

    Assert-AreEqual -Expected "2F84A5E1110A1AC840178DF2FDFEF080" -Presented $result

    $dbPath = Invoke-CsvHelperGetDbRootPath

    Assert-ItemExist -Path $($dbPath | Join-Path -ChildPath $result.json)

}