feat(native-alarms): optional MesReportable column in the native-source override CSV import (ScadaBridge#102 item 4)
CLI import no longer has to reset MES overrides to inherit; a legacy 4-column file still parses and the Central UI import keeps the stored flag for it. Claude-Session: https://claude.ai/code/session_01GT67AEHd2Acv1YPwGfXEoV
This commit is contained in:
@@ -154,4 +154,47 @@ public class NativeAlarmSourceOverrideCsvParserTests
|
||||
Assert.Empty(result.Errors);
|
||||
Assert.Single(result.Rows);
|
||||
}
|
||||
|
||||
/// <summary>Gitea #102: the optional MesReportable column parses blank/true/false.</summary>
|
||||
[Fact]
|
||||
public void Parse_MesReportableColumn_ParsesTriState()
|
||||
{
|
||||
const string csv =
|
||||
"SourceName,Connection,SourceReference,Filter,MesReportable\n" +
|
||||
"A,,,,true\n" +
|
||||
"B,,,,FALSE\n" +
|
||||
"C,,,,\n";
|
||||
|
||||
var result = NativeAlarmSourceOverrideCsvParser.Parse(csv);
|
||||
|
||||
Assert.Empty(result.Errors);
|
||||
Assert.All(result.Rows, r => Assert.True(r.HasMesColumn));
|
||||
Assert.True(result.Rows[0].MesReportable);
|
||||
Assert.False(result.Rows[1].MesReportable);
|
||||
Assert.Null(result.Rows[2].MesReportable);
|
||||
}
|
||||
|
||||
/// <summary>Gitea #102: a legacy 4-column file still parses and reports no MES column.</summary>
|
||||
[Fact]
|
||||
public void Parse_FourColumnFile_HasNoMesColumn()
|
||||
{
|
||||
var result = NativeAlarmSourceOverrideCsvParser.Parse(
|
||||
"SourceName,Connection,SourceReference,Filter\nA,,,\n");
|
||||
|
||||
Assert.Empty(result.Errors);
|
||||
var row = Assert.Single(result.Rows);
|
||||
Assert.False(row.HasMesColumn);
|
||||
Assert.Null(row.MesReportable);
|
||||
}
|
||||
|
||||
/// <summary>Gitea #102: an unparseable MesReportable value is a line error.</summary>
|
||||
[Fact]
|
||||
public void Parse_InvalidMesReportable_ReportsLineError()
|
||||
{
|
||||
var result = NativeAlarmSourceOverrideCsvParser.Parse(
|
||||
"SourceName,Connection,SourceReference,Filter,MesReportable\nA,,,,maybe\n");
|
||||
|
||||
Assert.Empty(result.Rows);
|
||||
Assert.Contains(result.Errors, e => e.Contains("Line 2") && e.Contains("MesReportable"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user