using BigRegister.Api.Data; using BigRegister.Domain.Diplomas; using BigRegister.Stamdata; namespace BigRegister.Tests; /// /// The compile-time gate for business-editable stamdata (ADR-0004). The C# compiler /// already catches shape/type mistakes; these tests catch the referential integrity it /// can't, so a bad config edit fails the build instead of reaching production. /// public class StamdataValidationTests { [Fact] public void Every_seeded_diploma_program_maps_to_a_known_profession() { // The dangling-reference guard: a seed program with no entry in Professions would // silently render "Onbekend" to the user. Fail the build instead. foreach (var d in SeedData.Diplomas) Assert.True(DiplomaRules.ProfessionFor(d) != "Onbekend", $"Diploma program '{d.Opleiding}' has no profession in Stamdata.Professions."); } [Fact] public void Profession_map_has_no_blank_programs_or_professions() { Assert.All(Professions.ByProgram, kv => { Assert.False(string.IsNullOrWhiteSpace(kv.Key), "A profession-map program key is blank."); Assert.False(string.IsNullOrWhiteSpace(kv.Value), $"Program '{kv.Key}' maps to a blank profession."); }); } [Fact] public void Manual_professions_are_non_empty_and_distinct() { var professions = DiplomaRules.ManualProfessions(); Assert.NotEmpty(professions); Assert.Equal(professions.Count, professions.Distinct().Count()); } }