Passa al contenuto principale

Step 1: Dominio

Il dominio si tocca per primo. Le entity, le migration e i vincoli del database sono la fondamenta su cui poggia tutto il resto: business logic e UI dipendono da questa stabilità.

Cosa fare

1. Apportare le modifiche al dominio

Implementare le entity e le configurazioni EF emerse dalla modellazione in analisi tecnica. Seguire le regole descritte in regole/entity-framework e regole/dominio:

  • nomi dall'Ubiquitous Language, senza abbreviazioni né traduzioni
  • constraint e chiavi esterne dichiarati nel modello, non gestiti applicativamente
  • migration con nome descrittivo che racconta la decisione di dominio
  • nessuna rinomina, nessuna rimozione, solo aggiunte e deprecazioni

2. Scrivere il primo test di integrazione

Appena il dominio è definito, si scrive almeno un test di integrazione che verifichi il funzionamento base. Non deve coprire tutta la business logic (quella viene nel passo successivo) ma deve garantire che il modello sia corretto: che le migration vengano applicate, che i constraint funzionino, che le relazioni siano navigabili.

[Fact]
public async Task CreaOrdine_PersistsCorrectly()
{
// Arrange: database reale con migration applicate
await using var context = CreateDbContext();
var cliente = new Cliente { Nome = "Acme Srl" };
context.Clienti.Add(cliente);
await context.SaveChangesAsync();

// Act
var ordine = new Ordine { ClienteId = cliente.Id, Numero = "ORD-001" };
context.Ordini.Add(ordine);
await context.SaveChangesAsync();

// Assert
var saved = await context.Ordini.FindAsync(ordine.Id);
Assert.NotNull(saved);
Assert.Equal("ORD-001", saved!.Numero);
}

3. Verificare che i test esistenti non si rompano

Le modifiche al dominio non devono rompere i test preesistenti. La CI lo verifica automaticamente, ma è buona pratica girare la suite localmente prima di aprire un commit, specialmente se si toccano entità con molte dipendenze.

Quando il dominio è stabile

Il dominio è stabile quando:

  • le migration sono applicate e i test di dominio passano
  • nessun test preesistente è rotto
  • le breaking changes, se presenti, sono state comunicate

Da questo momento business logic e UI possono procedere in parallelo.


Prossimo step: Step 2: Business Logic