Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ jobs:
SUPER_BUSINESS_GUID: ${{ secrets.SUPER_BUSINESS_GUID }}
SUPER_USERNAME: ${{ secrets.SUPER_USERNAME }}
SUPER_PASSWORD: ${{ secrets.SUPER_PASSWORD }}
EPOSLOVANJE_USERNAME: ${{ secrets.EPOSLOVANJE_USERNAME }}
EPOSLOVANJE_PASSWORD: ${{ secrets.EPOSLOVANJE_PASSWORD }}
DOKU_API_KEY: ${{ secrets.DOKU_API_KEY }}

steps:
- name: Checkout repository
Expand All @@ -31,7 +34,7 @@ jobs:
run: dotnet restore MAES.Fiskal2.Tests/MAES.Fiskal2.Tests.csproj

- name: Run tests
run: dotnet test MAES.Fiskal2.Tests/MAES.Fiskal2.Tests.csproj --configuration Release --no-restore
run: dotnet test MAES.Fiskal2.Tests/MAES.Fiskal2.Tests.csproj --configuration Release --no-restore -v normal --logger "console;verbosity=detailed"

pack-and-publish:
name: Pack and publish package
Expand Down
73 changes: 0 additions & 73 deletions MAES.Fiskal2.Tests/Fiskal2Tests.cs

This file was deleted.

203 changes: 203 additions & 0 deletions MAES.Fiskal2.Tests/PosredniciTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@

using MAES.Fiskal2.Posrednici;
using Xunit.Abstractions;

namespace MAES.Fiskal2.Tests;

public class PosredniciTests
{
readonly List<Posrednik> posrednici =
[
new Super
{
BusinessGuid = Environment.GetEnvironmentVariable("SUPER_BUSINESS_GUID") ?? throw new InvalidOperationException("SUPER_BUSINESS_GUID environment variable is not set."),
Username = Environment.GetEnvironmentVariable("SUPER_USERNAME") ?? throw new InvalidOperationException("SUPER_USERNAME environment variable is not set."),
Password = Environment.GetEnvironmentVariable("SUPER_PASSWORD") ?? throw new InvalidOperationException("SUPER_PASSWORD environment variable is not set."),
IsDev = true
},
new EPoslovanje
{
OIB = "51560545524",
Username = Environment.GetEnvironmentVariable("EPOSLOVANJE_USERNAME") ?? throw new InvalidOperationException("EPOSLOVANJE_USERNAME environment variable is not set."),
Password = Environment.GetEnvironmentVariable("EPOSLOVANJE_PASSWORD") ?? throw new InvalidOperationException("EPOSLOVANJE_PASSWORD environment variable is not set."),
IsDev = true
},
new Doku
{
ApiKey = Environment.GetEnvironmentVariable("DOKU_API_KEY") ?? throw new InvalidOperationException("DOKU_API_KEY environment variable is not set."),
IsDev = true
}
];

[Fact]
public async Task EvidentirajUBL()
{
foreach (var posrednik in posrednici.Where(p => p is not Fina))
{
try
{
await posrednik.EvidentirajUBLAsync(File.ReadAllText("ubl.xml"));
Console.WriteLine($"{posrednik.GetType().Name}: EvidentirajUBL OK");
}
catch (Exception ex)
{
Console.WriteLine($"{posrednik.GetType().Name}: EvidentirajUBL FAIL");
Console.WriteLine(ex.ToString());
}
}
}

[Fact]
public async Task DohvatiIzlazneRacune()
{
foreach (var posrednik in posrednici.Where(p => p is not Fina))
{
try
{
var izlazni = await posrednik.IzlazniListAsync(
DateTime.UtcNow.AddDays(-30),
DateTime.UtcNow);

Console.WriteLine($"{posrednik.GetType().Name}: IzlazniList OK ({izlazni.Count()})");
}
catch (Exception ex)
{
Console.WriteLine($"{posrednik.GetType().Name}: IzlazniList FAIL");
Console.WriteLine(ex.ToString());
}
}
}

[Fact]
public async Task DohvatiPrviIzlazniPdfIUBL()
{
foreach (var posrednik in posrednici.Where(p => p is not Fina))
{
try
{
var izlazni = await posrednik.IzlazniListAsync(
DateTime.UtcNow.AddDays(-30),
DateTime.UtcNow);

var first = izlazni.FirstOrDefault();

if (first == null)
{
Console.WriteLine($"{posrednik.GetType().Name}: nema izlaznih računa");
continue;
}

await posrednik.IzlazniPdfAsync(first.Id);
await posrednik.IzlazniUBLAsync(first.Id);

Console.WriteLine($"{posrednik.GetType().Name}: Izlazni PDF + UBL OK");
}
catch (Exception ex)
{
Console.WriteLine($"{posrednik.GetType().Name}: Izlazni PDF + UBL FAIL");
Console.WriteLine(ex.ToString());
}
}
}

[Fact]
public async Task EvidentirajUplatu()
{
foreach (var posrednik in posrednici.Where(p => p is not Fina))
{
try
{
var izlazni = await posrednik.IzlazniListAsync(
DateTime.UtcNow.AddDays(-30),
DateTime.UtcNow);

var first = izlazni.FirstOrDefault();

if (first == null)
{
Console.WriteLine($"{posrednik.GetType().Name}: nema izlaznih računa za uplatu");
continue;
}

await posrednik.EvidentirajUplatuAsync(
first.Id,
DateTime.UtcNow,
100,
NacinPlacanja.TransakcijskiRaCun);

Console.WriteLine($"{posrednik.GetType().Name}: EvidentirajUplatu OK");
}
catch (Exception ex)
{
Console.WriteLine($"{posrednik.GetType().Name}: EvidentirajUplatu FAIL");
Console.WriteLine(ex.ToString());
}
}
}

[Fact]
public async Task UlazniRacuni()
{
foreach (var posrednik in posrednici.Where(p => p is not Fina))
{
try
{
var ulazni = await posrednik.UlazniListAsync(
DateTime.UtcNow.AddDays(-30),
DateTime.UtcNow);

var first = ulazni.FirstOrDefault();

if (first == null)
{
Console.WriteLine($"{posrednik.GetType().Name}: nema ulaznih računa");
continue;
}

await posrednik.UlazniPdfAsync(first.Id);
await posrednik.UlazniUBLAsync(first.Id);

Console.WriteLine($"{posrednik.GetType().Name}: Ulazni PDF + UBL OK");
}
catch (Exception ex)
{
Console.WriteLine($"{posrednik.GetType().Name}: Ulazni FAIL");
Console.WriteLine(ex.ToString());
}
}
}

[Fact]
public async Task OdbijPrviUlazniRacun()
{
foreach (var posrednik in posrednici.Where(p => p is not Fina))
{
try
{
var ulazni = await posrednik.UlazniListAsync(
DateTime.UtcNow.AddDays(-30),
DateTime.UtcNow);

var first = ulazni.FirstOrDefault();

if (first == null)
{
Console.WriteLine($"{posrednik.GetType().Name}: nema ulaznih za odbijanje");
continue;
}

await posrednik.OdbijRacunAsync(
first.Id,
RazlogOdbijanja.NeusklađenostKojaNeUtjeceNaObracunPoreza,
"Nedostaje OIB");

Console.WriteLine($"{posrednik.GetType().Name}: OdbijRacun OK");
}
catch (Exception ex)
{
Console.WriteLine($"{posrednik.GetType().Name}: OdbijRacun FAIL");
Console.WriteLine(ex.ToString());
}
}
}
}
13 changes: 13 additions & 0 deletions MAES.Fiskal2/ClientCreatedEventArgs.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
namespace MAES.Fiskal2;

/// <summary>
/// Podaci događaja koji se prosljeđuju prilikom pokretanja događaja <see cref="Posrednik.OnClientCreated"/>. Sadrži referencu na kreirani <see cref="HttpClient"/> koji se koristi za slanje zahtjeva prema posredniku.
/// </summary>
/// <param name="client">Kreirani HTTP klijent.</param>
public class ClientCreatedEventArgs(HttpClient client) : EventArgs
{
/// <summary>
/// Kreirani HTTP klijent koji se koristi za komunikaciju s posrednikom. Dopušta dodatnu konfiguraciju (npr. dodavanje zaglavlja) prije slanja zahtjeva.
/// </summary>
public HttpClient Client { get; } = client;
}
Loading
Loading