using SGU.AuthBroker.Core.Profiles; using Xunit; namespace SGU.AuthBroker.Core.Tests; public sealed class SguProfileParserTests { [Fact] public void ParsesOnlyTheRequiredAdministrativeFieldsFromTheInitialResponse() { const string html = """ 017045 - JESÚS ALEJANDRO ROSALES GONZÁLEZ SINDICALIZADO QUINCENAL (ACTIVO) persona@lasalle.mx
ANALISTA DE PROYECTOS FACULTAD DE INGENIERÍA ESTE CAMPO NO DEBE EXTRAERSE
DATOS NO REQUERIDOS
"""; InstitutionalProfile? profile = SguProfileParser.ParseAdministrative(html, "017045"); Assert.NotNull(profile); Assert.Equal("017045", profile.EmployeeNumber); Assert.Equal("JESÚS ALEJANDRO ROSALES GONZÁLEZ", profile.DisplayName); Assert.Equal("persona@lasalle.mx", profile.Email); Assert.Equal("SINDICALIZADO QUINCENAL (ACTIVO)", profile.EmployeeType); Assert.Equal("ANALISTA DE PROYECTOS", profile.JobTitle); Assert.Equal("FACULTAD DE INGENIERÍA", profile.Department); } [Fact] public void RejectsAdministrativeMetadataForADifferentEmployeeNumber() { const string html = """ 017045 - PERSONA INCORRECTA incorrecta@lasalle.mx """; Assert.Null(SguProfileParser.ParseAdministrative(html, "999999")); } [Fact] public void ParsesTheMenuNameAsAConservativeFallback() { const string html = """ MARÍA & JOSÉ """; InstitutionalProfile? profile = SguProfileParser.ParseMenu(html); Assert.NotNull(profile); Assert.Equal("MARÍA & JOSÉ", profile.DisplayName); Assert.Null(profile.Email); Assert.Null(profile.JobTitle); Assert.Null(profile.Department); } [Fact] public void MissingKnownFieldsProducesNoProfile() { Assert.Null(SguProfileParser.ParseMenu("Portal SGU")); Assert.Null(SguProfileParser.ParseAdministrative( "Portal SGU", "017045")); } }