using System.Linq; using Xunit; namespace HikvisionAttendanceService.Tests; public class UserSyncJsonParserTests { [Fact] public void ParseUserInfoSearchPage_extracts_users_and_face_url() { const string json = """ { "UserInfoSearch": { "UserInfo": [ { "employeeNo": "0000000001", "name": "Test User", "numOfFace": 1, "numOfFP": 0, "gender": "male", "faceURL": "http://192.168.1.10/LOCALS/pic/enrlFace/0/1.jpg@WEB1", "Valid": { "enable": true, "beginTime": "2026-01-01T00:00:00", "endTime": "2030-12-31T23:59:59" } } ] } } """; var list = UserSyncJsonParser.ParseUserInfoSearchPage(json); Assert.Single(list); var u = list[0]; Assert.Equal("0000000001", u.EmployeeNo); Assert.Equal("Test User", u.Name); Assert.Equal(1, u.NumOfFace); Assert.Equal(0, u.NumOfFp); Assert.Contains("enrlFace", u.FaceUrl); Assert.True(u.ValidEnable); Assert.Contains("2026-01-01", u.ValidBeginTime); } [Fact] public void ParseUserInfoSearchPage_empty_json_returns_empty() { Assert.Empty(UserSyncJsonParser.ParseUserInfoSearchPage("")); Assert.Empty(UserSyncJsonParser.ParseUserInfoSearchPage("{}")); } }