Files
BeWoPlaner/DakotaUnitTest/DakotaReaderUnitTest.cs

178 lines
6.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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()
{
var test = Reader.Resolve("105328415", "69", "00000");
Assert.IsNotNull(test);
Assert.IsTrue(test.IKKrankenkasse == "661430035");
Assert.IsTrue(test.IKKostentrager == "106492406");
Assert.IsTrue(test.IKDatenannahmestelle == "105328415");
}
[TestMethod]
public void ValidateAOKRheinlandHamburgSoz()
{
var test = Reader.Resolve("104212505", "69", "00000");
Assert.IsNotNull(test);
Assert.IsTrue(test.IKKrankenkasse == "104212516");
Assert.IsTrue(test.IKKostentrager == "104212505");
Assert.IsTrue(test.IKDatenannahmestelle == "104212505");
}
[TestMethod]
public void ValidateBarmar()
{
var test = Reader.Resolve("104080005", "69", "08101");
Assert.IsNull(test);
}
[TestMethod]
public void ValidateKnappschaft()
{
var test = Reader.Resolve("109905003", "69", "08000");
Assert.IsNotNull(test);
Assert.IsTrue(test.IKKrankenkasse == "109905003");
Assert.IsTrue(test.IKKostentrager == "109905003");
Assert.IsTrue(test.IKDatenannahmestelle == "109905003");
}
// -----------------------------------------------------------------------
// 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);
}
}
}