11using System ;
2+ using System . Collections . Generic ;
23using SgfDevs . Dev . EventSync ;
34using SgfDevs . Dev . EventSync . Sessionize ;
45using Xunit ;
@@ -8,28 +9,63 @@ namespace SgfDevs.Tests;
89public class PresenterMemberMatcherTests
910{
1011 [ Fact ]
11- public void BuildSearchTerms_IncludesNormalizedNameOnce ( )
12+ public void MatchPresenters_AssignsMemberKeyWhenExactlyOneMemberMatches ( )
1213 {
13- var result = PresenterMemberMatcher . BuildSearchTerms ( "Bertram Gilfoyle" ) ;
14+ var memberKey = Guid . NewGuid ( ) ;
15+ var matcher = CreateMatcher ( new Dictionary < string , IReadOnlyList < Guid > >
16+ {
17+ [ "bertram gilfoyle" ] = [ memberKey ]
18+ } ) ;
1419
15- Assert . Equal ( [ "bertram gilfoyle" , "Bertram Gilfoyle" ] , result ) ;
20+ var result = Assert . Single ( matcher . MatchPresenters ( [ new ImportedPresenterPlan ( "speaker-1" , "Bertram Gilfoyle" , null ) ] ) ) ;
21+
22+ Assert . Equal ( memberKey , result . MatchedMemberKey ) ;
23+ }
24+
25+ [ Fact ]
26+ public void MatchPresenters_LeavesPresenterUnchangedWhenNoMembersMatch ( )
27+ {
28+ var matcher = CreateMatcher ( new Dictionary < string , IReadOnlyList < Guid > > ( ) ) ;
29+
30+ var result = Assert . Single ( matcher . MatchPresenters ( [ new ImportedPresenterPlan ( "speaker-1" , "Bertram Gilfoyle" , null ) ] ) ) ;
31+
32+ Assert . Null ( result . MatchedMemberKey ) ;
1633 }
1734
1835 [ Fact ]
19- public void GetMatchedMemberKey_ReturnsSingleKeyWhenExactlyOneMatchExists ( )
36+ public void MatchPresenters_LeavesPresenterUnchangedWhenMultipleMembersMatch ( )
2037 {
21- var key = Guid . NewGuid ( ) ;
38+ var matcher = CreateMatcher ( new Dictionary < string , IReadOnlyList < Guid > >
39+ {
40+ [ "bertram gilfoyle" ] = [ Guid . NewGuid ( ) , Guid . NewGuid ( ) ]
41+ } ) ;
2242
23- var result = PresenterMemberMatcher . GetMatchedMemberKey ( [ key ] ) ;
43+ var result = Assert . Single ( matcher . MatchPresenters ( [ new ImportedPresenterPlan ( "speaker-1" , "Bertram Gilfoyle" , null ) ] ) ) ;
2444
25- Assert . Equal ( key , result ) ;
45+ Assert . Null ( result . MatchedMemberKey ) ;
2646 }
2747
2848 [ Fact ]
29- public void GetMatchedMemberKey_ReturnsNullWhenMultipleMatchesExist ( )
49+ public void MatchPresenters_DeduplicatesSameMemberReturnedByMultipleSearchTerms ( )
3050 {
31- var result = PresenterMemberMatcher . GetMatchedMemberKey ( [ Guid . NewGuid ( ) , Guid . NewGuid ( ) ] ) ;
51+ var memberKey = Guid . NewGuid ( ) ;
52+ var matcher = CreateMatcher ( new Dictionary < string , IReadOnlyList < Guid > >
53+ {
54+ [ "bertram gilfoyle" ] = [ memberKey ] ,
55+ [ "Bertram Gilfoyle" ] = [ memberKey ]
56+ } ) ;
57+
58+ var result = Assert . Single ( matcher . MatchPresenters ( [ new ImportedPresenterPlan ( "speaker-1" , "Bertram Gilfoyle" , null ) ] ) ) ;
59+
60+ Assert . Equal ( memberKey , result . MatchedMemberKey ) ;
61+ }
3262
33- Assert . Null ( result ) ;
63+ private static PresenterMemberMatcher CreateMatcher ( IReadOnlyDictionary < string , IReadOnlyList < Guid > > resultsBySearchTerm )
64+ {
65+ return new PresenterMemberMatcher ( searchTerm =>
66+ resultsBySearchTerm . TryGetValue ( searchTerm , out var result )
67+ ? result
68+ : [ ] ) ;
3469 }
70+
3571}
0 commit comments