Sonar-Token in Jenkinsfile angepasst ExcludeFromCodeCoverage für Methode "GenerateVorgang"
This commit is contained in:
23
Hochbaustatistik.Testing/DatabaseOperationsTests.cs
Normal file
23
Hochbaustatistik.Testing/DatabaseOperationsTests.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
using Hochbaustatistik.Business;
|
||||
using System.Collections.Generic;
|
||||
using Hochbaustatistik.Database;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Hochbaustatistik.Testing
|
||||
{
|
||||
public class DatabaseOperationsTests
|
||||
{
|
||||
|
||||
[Fact (Skip ="Keine Datenbank-Verbindung m<>glich")]
|
||||
public void ConnectAndExecuteHochbauTest()
|
||||
{
|
||||
DatabaseOperations.conString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dborap04.stadtdo.de)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=bgvp.stadtdo.de)));user id=leser;password=leser;";
|
||||
var result = DatabaseOperations.ConnectAndExecuteHochbau(new Vorgang() { Aktenzeichen = "63/2-1-020989" });
|
||||
Assert.NotNull(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
57
Hochbaustatistik.Testing/EmailTests.cs
Normal file
57
Hochbaustatistik.Testing/EmailTests.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Net.Mail;
|
||||
using Domino;
|
||||
using Xunit;
|
||||
|
||||
namespace Hochbaustatistik.Testing
|
||||
{
|
||||
public class EmailTests
|
||||
{
|
||||
[Theory(Skip = "Kein Lotus Notes installiert")]
|
||||
[InlineData(@"C:\TEMP\test.txt")]
|
||||
public void SenMailTest(string attachment)
|
||||
{
|
||||
Assert.True(SendEmail(attachment));
|
||||
}
|
||||
|
||||
private static bool SendEmail(string attachment)
|
||||
{
|
||||
try
|
||||
{
|
||||
NotesSession nSession = new NotesSession();
|
||||
nSession.Initialize("Mk130881");
|
||||
|
||||
NotesDatabase nDatabase = nSession.GetDatabase("DOMMAIL4/SRV/Stadt Dortmund/DE", "MAIL\\mkoebis-riedel");
|
||||
|
||||
NotesDocument nDocument = nDatabase.CreateDocument();
|
||||
|
||||
//Attachment
|
||||
var richTextItem = nDocument.CreateRichTextItem("files");
|
||||
richTextItem.EmbedObject(EMBED_TYPE.EMBED_ATTACHMENT, "", attachment, "attachment");
|
||||
|
||||
|
||||
string[] recipients = { "mkoebis-riedel@stadtdo.de, katyes@gmx.li" };
|
||||
|
||||
string txtMessage = "Sehr geehrte Damen und Herren,\r\n\r\nanbei erhalten Sie die Auswertung zur Hochbaustatistik für das Jahr " + DateTime.Today.Year + ".\r\n\r\nBitte senden Sie jene ausgefüllt zurück an: mkoebis-riedel@stadtdo.de\r\n\r\nDanke und freundliche Grüße";
|
||||
nDocument.ReplaceItemValue("Form", "Memo");
|
||||
nDocument.ReplaceItemValue("SentTo", recipients);
|
||||
nDocument.ReplaceItemValue("Subject", "Hochbaustatistik Auswertung IT.NRW");
|
||||
nDocument.ReplaceItemValue("Body", txtMessage); //set body text
|
||||
|
||||
nDocument.SaveMessageOnSend = true;
|
||||
nDocument.Send(false, recipients);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine(ex.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -4,19 +4,45 @@
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
|
||||
<Platforms>AnyCPU;x86</Platforms>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
|
||||
<PackageReference Include="xunit" Version="2.4.1" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PackageReference Include="coverlet.collector" Version="3.2.0">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.msbuild" Version="6.0.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
||||
<PackageReference Include="Selenium.WebDriver" Version="4.8.2" />
|
||||
<PackageReference Include="xunit" Version="2.4.2" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.collector" Version="3.1.2">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Hochbaustatistik\Hochbaustatistik.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="TestData\Testdata.csv">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Interop.Domino">
|
||||
<HintPath>Utilities\Interop.Domino.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Interop.Microsoft.Office.Interop.Excel">
|
||||
<HintPath>Utilities\Interop.Microsoft.Office.Interop.Excel.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
33
Hochbaustatistik.Testing/SQL_Tiefensuche.txt
Normal file
33
Hochbaustatistik.Testing/SQL_Tiefensuche.txt
Normal file
@@ -0,0 +1,33 @@
|
||||
SELECT
|
||||
INPROP.PMGTVVORGANG.VORGANGID,
|
||||
INPROP.PMGTVVORGANG.VORGANGDEFID,
|
||||
INPROP.PMGTVVORGANG.STRASSE1ID,
|
||||
INPROP.PMGTVVORGANG.STRASSE1,
|
||||
INPROP.PMGTVVORGANG.HAUSNUMMER1,
|
||||
INPROP.PMGTVSACHBEARB.NAME,
|
||||
INPROP.PMGTVVORGANG.VORGANGABGESCHL,
|
||||
INPROP.PMGTVVORGANG.DATUMEINGANG,
|
||||
INPROP.PMGTVVORGANGVAR.FLD_D_3 as Genehmigung,
|
||||
INPROP.PMGTVVORGANGVAR.FLD_D_5 as Freigabe,
|
||||
INPROP.PMGTVVORGANG.FLD_B_2 as Statistik_Relevant,
|
||||
INPROP.PMGTVVORGANG.FLD_A_2 as Statistik1,
|
||||
INPROP.PMGTVVORGANG.FLD_A_3 as Statistik2,
|
||||
INPROP.PMGTVVORGANGVAR.FLD_D_10 as Genehmigung_gemeldet,
|
||||
INPROP.PMGTVVORGANGVAR.FLD_D_11 as Fertigstellung_gemeldet,
|
||||
INPROP.PMGTVVORGANGVAR.FLD_D_15 as Baubeginn,
|
||||
INPROP.PMGTVVORGANGVAR.FLD_D_16 as Teilrohbauabnahme,
|
||||
INPROP.PMGTVVORGANGVAR.FLD_D_17 as Rohbauabnahme,
|
||||
INPROP.PMGTVVORGANGVAR.FLD_D_20 as Schlussabnahme,
|
||||
INPROP.PMGTVVORGANG.FLD_A_20 as Vorjahr,
|
||||
INPROP.PMGTVVORGANGVAR.FLD_C_2 as Bauüberhang_Vorjahr,
|
||||
INPROP.PMGTVVORGANG.AKTENSTANDORT
|
||||
FROM INPROP.PMGTVVORGANG
|
||||
INNER JOIN INPROP.PMGTVVORGANGVAR ON INPROP.PMGTVVORGANG.VORGANGID = INPROP.PMGTVVORGANGVAR.VORGANGID
|
||||
AND INPROP.PMGTVVORGANG.VORGANGID = INPROP.PMGTVVORGANGVAR.VORGANGID
|
||||
INNER JOIN INPROP.PMVBCHECKLIST ON INPROP.PMGTVVORGANG.CHECKID = INPROP.PMVBCHECKLIST.CHECKLISTID
|
||||
INNER JOIN INPROP.PMGTVSACHBEARB ON INPROP.PMGTVVORGANG.ANWENDER = INPROP.PMGTVSACHBEARB.USERID
|
||||
WHERE INPROP.PMGTVVORGANG.STRASSE1='Dachsweg' AND INPROP.PMGTVVORGANG.HAUSNUMMER1='4'
|
||||
AND INPROP.PMGTVVORGANG.VORGANGID
|
||||
IN (SELECT INPROP.PMGTVVORGANG.VORGANGID FROM INPROP.PMGTVVORGANG
|
||||
WHERE INPROP.PMGTVVORGANG.FLD_A_2 LIKE '576637%'
|
||||
OR INPROP.PMGTVVORGANG.FLD_A_3 LIKE '576637%')
|
||||
1854
Hochbaustatistik.Testing/TestData/Testdata.csv
Normal file
1854
Hochbaustatistik.Testing/TestData/Testdata.csv
Normal file
File diff suppressed because it is too large
Load Diff
198
Hochbaustatistik.Testing/Utilities/DataOpsTest.cs
Normal file
198
Hochbaustatistik.Testing/Utilities/DataOpsTest.cs
Normal file
@@ -0,0 +1,198 @@
|
||||
using Hochbaustatistik.Business;
|
||||
using Hochbaustatistik.Database;
|
||||
using Hochbaustatistik.Utilities;
|
||||
using OpenQA.Selenium.DevTools.V109.Target;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
|
||||
namespace Hochbaustatistik.Testing.Utilities
|
||||
{
|
||||
public class DataOpsTest
|
||||
{
|
||||
public readonly VorgangInpro vorgang = new VorgangInpro() { Schlussabnahme = "2022" };
|
||||
|
||||
[Theory]
|
||||
[InlineData("61/5-2-052875", "615-2-052875")]
|
||||
public void IsValidTest(string trueAz, string falseAZ)
|
||||
{
|
||||
var instance = DataOpsSingleton.Instance;
|
||||
|
||||
Assert.True(instance.IsValid(trueAz));
|
||||
Assert.False(instance.IsValid(falseAZ));
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("615-2-052875", "61/5-2-052870255", "61/5-4-050497/1", "6175-4-052875", "61/5-3-49044", "61/52052702", "Tiefe-Mark 20")]
|
||||
public void CorrectAZTest(string az1, string az2, string az3, string az4, string az5, string az6, string az7)
|
||||
{
|
||||
var instance = DataOpsSingleton.Instance;
|
||||
|
||||
var expected1 = "61/5-2-052875";
|
||||
var expected2 = "NOT_CORRECTED";
|
||||
var expected3 = "61/5-4-050497";
|
||||
var expected4 = "61/5-4-052875";
|
||||
var expected5 = "61/5-3-049044";
|
||||
var expected6 = "61/5-2-052702";
|
||||
var expected7 = "NOT_CORRECTED";
|
||||
|
||||
Assert.Equal(expected1, instance.CorrectAZ(az1));
|
||||
Assert.Equal(expected2, instance.CorrectAZ(az2));
|
||||
Assert.Equal(expected3, instance.CorrectAZ(az3));
|
||||
Assert.Equal(expected4, instance.CorrectAZ(az4));
|
||||
Assert.Equal(expected5, instance.CorrectAZ(az5));
|
||||
Assert.Equal(expected6, instance.CorrectAZ(az6));
|
||||
Assert.Equal(expected7, instance.CorrectAZ(az7));
|
||||
}
|
||||
|
||||
|
||||
[Theory]
|
||||
[InlineData("50001234567")]
|
||||
public void ReshapeIdentifikatorTest(string ident)
|
||||
{
|
||||
var instance = DataOpsSingleton.Instance;
|
||||
var expected = "1234567";
|
||||
var actual = instance.ReshapeIdentifikator(ident);
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CreateItnrwRecordTest()
|
||||
{
|
||||
var instance = DataOpsSingleton.Instance;
|
||||
List<VorgangItnrw> hochbauliste = new List<VorgangItnrw>();
|
||||
hochbauliste.Add(new VorgangItnrw()
|
||||
{
|
||||
AGS = "913000",
|
||||
Identifikator = "50005733064",
|
||||
BauscheinNr = "61/5-2-43665",
|
||||
MonatGenehmigung = "5",
|
||||
JahrGenehmigung = "2017",
|
||||
NameBauherr = " ",
|
||||
Strasse = "Rüschenstr. 29",
|
||||
PLZ = "44328",
|
||||
Gemeinde = "Dortmund",
|
||||
Gemeindeteil = " ",
|
||||
Bauzustand = " ",
|
||||
Bemerkungen = " "
|
||||
});
|
||||
|
||||
var correctedAZ = "61/5-2-043665";
|
||||
var origAZ = "61/5-2-43665";
|
||||
var row = 57;
|
||||
|
||||
var hochbauListe = FileOperations.GenerateHochbauVorgangFromCSV(@"..\..\..\TestData\Testdata.csv");
|
||||
|
||||
var actual = instance.CreateItnrwRecord(row, correctedAZ, origAZ,hochbauListe);
|
||||
var expected = String.Concat("913000;", "50005733064;", "61/5-2-043665;", "5;", "2017;", " ;", "Rüschenstr. 29;", "44328;", "Dortmund;", " ;");
|
||||
|
||||
Assert.Equal(expected, actual);
|
||||
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CreateStatusBauzustandTest()
|
||||
{
|
||||
var instance = DataOpsSingleton.Instance;
|
||||
List<string> actuals = new List<string>();
|
||||
|
||||
List<VorgangInpro> inproVorgänge = new List<VorgangInpro>()
|
||||
{
|
||||
new VorgangInpro{ Schlussabnahme = "2022" },
|
||||
new VorgangInpro { BaugenehmigungAusgeführt ="2022"}
|
||||
};
|
||||
|
||||
foreach (var item in inproVorgänge)
|
||||
{
|
||||
actuals.Add(instance.CreateStatusBauzustand(item));
|
||||
}
|
||||
|
||||
var expected1 = "F Fertigstellung erfolgte bis 31.12. des Vorjahres";
|
||||
var expected2 = "4 Baugenehmigung erloschen";
|
||||
|
||||
Assert.Equal(expected1, actuals.ElementAt(0));
|
||||
Assert.Equal(expected2, actuals.ElementAt(1));
|
||||
}
|
||||
|
||||
[Fact(Skip = "Keine Datenbank-Verbindung möglich")]
|
||||
public void MergeInproWithITNRWTest()
|
||||
{
|
||||
var resultFile = @"C:\TEMP\hochbaustatistik.csv";
|
||||
DatabaseOperations.conString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dborap04.stadtdo.de)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=bgvp.stadtdo.de)));user id=leser;password=leser;";
|
||||
var instance = DataOpsSingleton.Instance;
|
||||
|
||||
List<VorgangItnrw> hochbauliste = new List<VorgangItnrw>();
|
||||
hochbauliste.Add(new VorgangItnrw()
|
||||
{
|
||||
AGS = "913000",
|
||||
Identifikator = "50005733064",
|
||||
BauscheinNr = "61/5-2-43665",
|
||||
MonatGenehmigung = "5",
|
||||
JahrGenehmigung = "2017",
|
||||
NameBauherr = " ",
|
||||
Strasse = "Rüschenstr. 29",
|
||||
PLZ = "44328",
|
||||
Gemeinde = "Dortmund",
|
||||
Gemeindeteil = " ",
|
||||
Bauzustand = " ",
|
||||
Bemerkungen = " "
|
||||
});
|
||||
|
||||
instance.MergeInproWithITNRW(resultFile, hochbauliste);
|
||||
Assert.True(File.Exists(resultFile));
|
||||
var result = SearchEntry(resultFile, hochbauliste[0].PLZ);
|
||||
Assert.True(result);
|
||||
}
|
||||
|
||||
private bool SearchEntry(string file, string text)
|
||||
{
|
||||
bool found = false;
|
||||
|
||||
using (StreamReader sr = new StreamReader(file))
|
||||
{
|
||||
var fullText = sr.ReadToEnd();
|
||||
found = fullText.Contains(text);
|
||||
}
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
public static IEnumerable<object[]> Vorgänge()
|
||||
{
|
||||
var vorgänge = new List<VorgangInpro>
|
||||
{
|
||||
new VorgangInpro { Schlussabnahme = "2022" },
|
||||
new VorgangInpro { Fertigstellung_Gemeldet = "2022" },
|
||||
new VorgangInpro { BaugenehmigungAusgeführt = "2022"}
|
||||
};
|
||||
|
||||
yield return new object[] { vorgänge };
|
||||
}
|
||||
|
||||
public static IEnumerable<object[]> Hochbauliste()
|
||||
{
|
||||
var hochbauliste = new List<VorgangItnrw>
|
||||
{
|
||||
new VorgangItnrw {
|
||||
AGS = "913000",
|
||||
Identifikator = "50005733064",
|
||||
BauscheinNr = "61/5-2-43665",
|
||||
MonatGenehmigung = "5",
|
||||
JahrGenehmigung = "2017",
|
||||
NameBauherr = " ",
|
||||
Strasse = "Rüschenstr. 29",
|
||||
PLZ = "44328",
|
||||
Gemeinde = "Dortmund",
|
||||
Gemeindeteil = " ",
|
||||
Bauzustand = " ",
|
||||
Bemerkungen = " "}
|
||||
};
|
||||
|
||||
yield return new object[] { hochbauliste };
|
||||
}
|
||||
}
|
||||
}
|
||||
27
Hochbaustatistik.Testing/Utilities/FileOperationsTests.cs
Normal file
27
Hochbaustatistik.Testing/Utilities/FileOperationsTests.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
using Hochbaustatistik.Business;
|
||||
using Hochbaustatistik.Database;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Diagnostics;
|
||||
using Hochbaustatistik.Utilities;
|
||||
|
||||
namespace Hochbaustatistik.Testing.Utilities
|
||||
{
|
||||
public class FileOperationsTests
|
||||
{
|
||||
List<VorgangItnrw> hochbauListe = new List<VorgangItnrw>();
|
||||
readonly string filePath = @"..\..\..\TestData\Testdata.csv";
|
||||
|
||||
[Fact]
|
||||
public void GenerateHochbauVorgangFromCSVTest()
|
||||
{
|
||||
hochbauListe = FileOperations.GenerateHochbauVorgangFromCSV(filePath);
|
||||
Assert.True(hochbauListe.Count != 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
Hochbaustatistik.Testing/Utilities/Interop.Domino.dll
Normal file
BIN
Hochbaustatistik.Testing/Utilities/Interop.Domino.dll
Normal file
Binary file not shown.
Binary file not shown.
64
Hochbaustatistik.Testing/WebTesting.cs
Normal file
64
Hochbaustatistik.Testing/WebTesting.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Xunit;
|
||||
using Hochbaustatistik.Business;
|
||||
using Hochbaustatistik.Database;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using OpenQA.Selenium;
|
||||
using OpenQA.Selenium.Support.UI;
|
||||
using OpenQA.Selenium.Edge;
|
||||
using System.Net;
|
||||
using System.Data;
|
||||
|
||||
namespace Hochbaustatistik.Testing
|
||||
{
|
||||
public class WebTesting
|
||||
{
|
||||
|
||||
[Fact (Skip ="Derzeit keine Daten zum Download vorhanden")]
|
||||
public void DownloadList()
|
||||
{
|
||||
//DownloadFolder
|
||||
string pathUser = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
|
||||
string pathDownloadedList = Path.Combine(pathUser, "Downloads", "BU-Liste_913000.csv");
|
||||
|
||||
//User: 0521442179
|
||||
//Passwort: #Dortmund2022
|
||||
IWebDriver driver = new EdgeDriver();
|
||||
|
||||
string loginUrl = "https://www.idev.nrw.de/";
|
||||
|
||||
driver.Navigate().GoToUrl(loginUrl);
|
||||
|
||||
IWebElement site = driver.FindElement(By.Id("05"));
|
||||
site.Click();
|
||||
|
||||
site = driver.FindElement(By.Id("loginid"));
|
||||
site.SendKeys("0521442179");
|
||||
|
||||
site = driver.FindElement(By.Id("password"));
|
||||
site.SendKeys("#Dortmund2022");
|
||||
|
||||
site = driver.FindElement(By.Id("login"));
|
||||
site.Click();
|
||||
|
||||
site = driver.FindElement(By.Id("menu100"));
|
||||
site.Click();
|
||||
|
||||
site = driver.FindElement(By.LinkText("Bauüberhangsliste"));
|
||||
|
||||
site.Click();
|
||||
|
||||
Thread.Sleep(1500);
|
||||
driver.Quit();
|
||||
|
||||
Assert.True(File.Exists(pathDownloadedList));
|
||||
File.Delete(pathDownloadedList);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user