fix/issue-3-splitquery #5
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/issue-3-splitquery"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Corrige le chargement du contexte de donnée des clients d'API
GET /BlogSpot/Details/1 retournait 500 (avec un 500-sur-500 sur la page d'erreur elle-même) parce que DisplayTemplates /ApplicationUser.cshtml faisait `var avuri = "/Avatars/" + Model.UserName + ".s.png"` : avec <Nullable>enable</Nullable>, Razor émet un null-check implicite sur Model.UserName et lève NullReferenceException quand l'auteur n'a pas de UserName posé (donnée héritée, user partiellement initialisé). - UserDisplayHelpers.AvatarSrc : helper statique pur dans Yavsc.Abstract.Identity qui retourne YavscConstants.DefaultAvatar pour user null / UserName vide ou whitespace, et un path /avatars/<name>.s.png sinon. - ApplicationUser.cshtml : utilise le helper. - Tests : 4 cas (null, vide, whitespace, valide) dans Yavsc.Org.Tests/NonRegression. Bonus : le path d'avatar passe de "/Avatars/" (S majuscule, ne résolvait pas dans le middleware de fichiers statiques) à YavscConstants.AvatarsPath ("/avatars" minuscule), pour fermer l'autre trou que centraliser le calcul permettait de fixer proprement.Le commit 2 a fixé la NPE du /BlogSpot/Details/{id} en passant le display template par UserDisplayHelpers.AvatarSrc, qui défend contre un UserName null. Ce commit complète le filet de non-régression et pose la doc d'architecture des tests. - ApplicationUserDisplayTemplateTests : assert que le cshtml ne concatène plus directement Model.UserName (ancien code fautif) et qu'il utilise bien le helper. Si quelqu'un revert la ligne 4 du cshtml, les tests cassent. Les autres usages de Model.UserName (alt, title, asp-route-id) sont autorisés : ils ne sont pas la cause du 500, juste laids si null. - doc/testing.md : vue d'ensemble de la stratégie de test (conventions NonRegression/Mandatory/Smoke/Controllers, EF in-memory via InMemoryDatabaseRoot partagé, auth stubs, quand ne pas écrire de test). - src/Yavsc.Tests.Shared/README.md : détails du scaffold partagé (WebHostFixture + son cycle de vie et ses hooks, TestAuthPolicyProvider, TestTokenIssuer) et des deux spécialisations dans le repo (Yavsc.Org.Tests.WebServerFixture et Yavsc.Blogs.Tests.BlogsWebServerFixture). - doc/README.md : entrée vers testing.md dans l'index.TestWebApplicationFactory used ASPNETCORE_ENVIRONMENT=Development, which caused Program.Main's AddConfiguration("org") to load the tracked appsettings-org.json (the reference file with the '*** via dotnet user-secrets ou variable d'environnement ***' placeholder connection string). Npgsql then failed to parse that placeholder during host startup, failing six integration tests (observed 2026-07-11: System.ArgumentException on NpgsqlConnectionStringBuilder.set_Item). Switching the test host to a dedicated Testing environment makes AddConfiguration("org") pick up the new optional appsettings-org.Testing.json file as the last source in the chain (JSON → env vars), which overrides YavscConnection with the InMemory marker and the Smtp section with the test stub values. The .gitignore exception whitelists this file explicitly: it is a configuration source for the test host, not a secrets file. The WebServerFixture path is unchanged — it owns its WebApplicationBuilder and adds the same in-memory override via its BuildApp hook.