Reescrita dos geradores: biblioteca IGenerator, minimal API e novo frontend
- GeradoresService: cada tipo passa a ser um IGenerator (NIF, NIPC, NISS, CC, passaporte, IBAN, NIB, cartões, referência MB, pessoa, telefone, código postal, email, matrícula, EAN, UUID) registado em GeneratorRegistry; remove DAL/EF - GeradoresWS: minimal APIs em /api/v1 com OpenAPI + Scalar e health check - UnitTest: testes de ida e volta, valores conhecidos, detecção e API - geradoresfe: UI construída a partir dos metadados da API, validador livre, exportação CSV/JSON/TXT, nginx com API_UPSTREAM configurável - Docker, docker-compose e Jenkinsfile actualizados Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
47
UnitTest/DetectTests.cs
Normal file
47
UnitTest/DetectTests.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
using GeradoresService;
|
||||
|
||||
namespace UnitTest;
|
||||
|
||||
public class DetectTests
|
||||
{
|
||||
private static readonly GeneratorRegistry Registry = new();
|
||||
|
||||
[Fact]
|
||||
public void Detects_nif_first()
|
||||
{
|
||||
var matches = Registry.Detect("123456789");
|
||||
Assert.NotEmpty(matches);
|
||||
Assert.Equal("nif", matches[0].Generator.Id);
|
||||
Assert.True(matches[0].Result.IsValid);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Detects_iban()
|
||||
{
|
||||
var matches = Registry.Detect("PT50 0002 0123 1234 5678 9015 4");
|
||||
Assert.Equal("iban", matches[0].Generator.Id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Reports_near_miss_when_checksum_fails()
|
||||
{
|
||||
var matches = Registry.Detect("123456780");
|
||||
Assert.Contains(matches, m => m.Generator.Id == "nif" && !m.Result.IsValid && m.Result.FormatMatch);
|
||||
Assert.DoesNotContain(matches, m => m.Generator.Id == "nif" && m.Result.IsValid);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("")]
|
||||
[InlineData(" ")]
|
||||
[InlineData("isto não é nada")]
|
||||
public void Nothing_detected(string value)
|
||||
{
|
||||
Assert.DoesNotContain(Registry.Detect(value), m => m.Result.IsValid);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Pessoa_is_never_detected()
|
||||
{
|
||||
Assert.DoesNotContain(Registry.Detect("João Silva"), m => m.Generator.Id == "pessoa");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user