Files
BeWoPlaner/DakotaUnitTest/DakotaReaderUnitTest.cs

178 lines
6.2 KiB
C#
Raw Normal View History

using Dakota.Logic;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.IO;
namespace DakotaUnitTest
{
[TestClass]
public class DakotaReaderUnitTest
{
public DakotaKTDReader Reader { get; set; }
[TestInitialize]
public void Initialize()
{
var path = AppDomain.CurrentDomain.BaseDirectory;
var project_path = Directory.GetParent(path).Parent.Parent.FullName;
var kdt_path = Path.Combine(project_path, "Dakota", "KTDatei");
var reader = new DakotaKTDReader(kdt_path);
Reader = reader;
}
[TestMethod]
public void ValidateReaderLoaded()
{
Assert.IsTrue(Reader is object);
}
[TestMethod]
public void ValidateFileCount()
{
var count = Reader.GetFileCount();
Assert.IsTrue(count == 6);
}
[TestMethod]
public void ValidateFileEntryCount()
{
var count = Reader.GetAllFileEntryCount();
Assert.IsTrue(count == 1106);
}
[TestMethod]
public void ValidateBkkGilletteOst()
{
2024-07-19 12:20:53 +02:00
var test = Reader.Resolve("105328415", "69", "00000");
Assert.IsNotNull(test);
2025-11-19 09:36:58 +01:00
Assert.IsTrue(test.IKKrankenkasse == "661430035");
2025-11-19 09:36:58 +01:00
Assert.IsTrue(test.IKKostentrager == "106492406");
2025-11-19 09:36:58 +01:00
Assert.IsTrue(test.IKDatenannahmestelle == "105328415");
}
[TestMethod]
public void ValidateAOKRheinlandHamburgSoz()
{
var test = Reader.Resolve("104212505", "69", "00000");
Assert.IsNotNull(test);
2025-11-19 09:36:58 +01:00
Assert.IsTrue(test.IKKrankenkasse == "104212516");
2025-11-19 09:36:58 +01:00
Assert.IsTrue(test.IKKostentrager == "104212505");
2025-11-19 09:36:58 +01:00
Assert.IsTrue(test.IKDatenannahmestelle == "104212505");
}
2024-11-07 14:16:45 +01:00
[TestMethod]
public void ValidateBarmar()
{
var test = Reader.Resolve("104080005", "69", "08101");
Assert.IsNull(test);
2024-11-07 14:16:45 +01:00
}
2024-11-14 15:51:36 +01:00
[TestMethod]
public void ValidateKnappschaft()
{
var test = Reader.Resolve("109905003", "69", "08000");
Assert.IsNotNull(test);
2025-11-19 09:36:58 +01:00
Assert.IsTrue(test.IKKrankenkasse == "109905003");
2024-11-14 15:51:36 +01:00
2025-11-19 09:36:58 +01:00
Assert.IsTrue(test.IKKostentrager == "109905003");
2024-11-14 15:51:36 +01:00
2025-11-19 09:36:58 +01:00
Assert.IsTrue(test.IKDatenannahmestelle == "109905003");
2024-11-14 15:51:36 +01:00
}
// -----------------------------------------------------------------------
// Papierannahmestellen-Tests
// Struktur der KT-Datei für Papierannahmestellen:
// VKG+09+<PapierIK>+...+<Abrechnungscode>+<Tarifkennzeichen>'
// GetPapierIK() gibt das IK der Papierannahmestelle zurück.
// Resolve() befüllt dann GkvKostentragerdateiSummary.Papierannahmeanschrift
// aus den ANS-Segmenten des PapierIK-Eintrags (Prio: Haus > Postfach > GK).
// -----------------------------------------------------------------------
/// <summary>
/// AOK Nordost Region MVP (IK 100395611) hat genau einen VKG+09-Eintrag:
/// VKG+09+109519016+5++28+6+++00' → PapierIK = 109519016
/// Eintrag 109519016 (AOK Nordost - Rechnungsannahme) besitzt:
/// ANS+1+14513+Teltow+Am Teltowkanal 8' (Hausanschrift höchste Priorität)
/// ANS+2+14302+Berlin+140252' (Postfach wird nicht verwendet)
/// </summary>
[TestMethod]
public void ValidateAokNordostMvp_Papierannahmestelle_Hausanschrift()
{
var test = Reader.Resolve("100395611", "69", "00000");
Assert.IsNotNull(test, "Resolve() soll nicht null zurückgeben.");
var papier = test.Papierannahmeanschrift;
Assert.IsNotNull(papier, "Papierannahmeanschrift soll gesetzt sein (PapierIK = 109519016).");
Assert.AreEqual("AOK Nordost - Rechnungsannahme", papier.AddressLine1,
"AddressLine1 soll die Kurzbezeichnung des PapierIK-Eintrags enthalten.");
Assert.AreEqual("14513", papier.PostalCode);
Assert.AreEqual("Teltow", papier.Town);
Assert.AreEqual("Am Teltowkanal 8", papier.Street);
}
/// <summary>
/// AOK Rheinland-Pfalz (IK 106215364) hat genau einen VKG+09-Eintrag:
/// VKG+09+106315285+5++28+6+++00' → PapierIK = 106315285
/// Eintrag 106315285 (AOK Rheinland-Pfalz/Saarland) besitzt:
/// ANS+1+56070+Koblenz+Am Sender 1' (nur Hausanschrift)
/// </summary>
[TestMethod]
public void ValidateAokRheinlandPfalz_Papierannahmestelle_Hausanschrift()
{
var test = Reader.Resolve("106215364", "69", "00000");
Assert.IsNotNull(test, "Resolve() soll nicht null zurückgeben.");
var papier = test.Papierannahmeanschrift;
Assert.IsNotNull(papier, "Papierannahmeanschrift soll gesetzt sein (PapierIK = 106315285).");
Assert.AreEqual("AOK Rheinland-Pfalz/Saarland", papier.AddressLine1);
Assert.AreEqual("56070", papier.PostalCode);
Assert.AreEqual("Koblenz", papier.Town);
Assert.AreEqual("Am Sender 1", papier.Street);
}
/// <summary>
/// SECURVITA BKK (IK 101320032) hat zwei VKG+09-Einträge, die beide
/// auf dieselbe Papierannahmestelle zeigen:
/// VKG+09+107436557+5++28++++00' (ArtDerDatenlieferung 28)
/// VKG+09+107436557+5++29++++00' (ArtDerDatenlieferung 29)
/// </summary>
[TestMethod]
public void ValidateSecurvitaBkk_Papierannahmestelle_MehrereVkgGleichesPaperIK()
{
var test = Reader.Resolve("101320032", "69", "00000");
Assert.IsNotNull(test, "Resolve() soll nicht null zurückgeben.");
var papier = test.Papierannahmeanschrift;
Assert.IsNotNull(papier,
"Papierannahmeanschrift null, obwohl zwei VKG+09-Einträge " +
"auf IK 107436557 (AZE Emmendingen) zeigen.");
Assert.AreEqual("AZE Emmendingen", papier.AddressLine1);
Assert.AreEqual("79312", papier.PostalCode);
Assert.AreEqual("Emmendingen", papier.Town);
}
}
}