@@ -403,66 +403,6 @@ void main() {
403403 ..not ((results) => results.contains (11000 ));
404404 });
405405
406- group ('MentionAutocompleteQuery.testUser' , () {
407- late PerAccountStore store;
408-
409- void doCheck (String rawQuery, User user, bool expected) {
410- final result = MentionAutocompleteQuery (rawQuery).testUser (user, store);
411- expected
412- ? check (result).isA <UserMentionAutocompleteResult >()
413- : check (result).isNull ();
414- }
415-
416- test ('user is always excluded when not active regardless of other criteria' , () {
417- store = eg.store ();
418-
419- doCheck ('Full Name' , eg.user (fullName: 'Full Name' , isActive: false ), false );
420- // When active then other criteria will be checked
421- doCheck ('Full Name' , eg.user (fullName: 'Full Name' , isActive: true ), true );
422- });
423-
424- test ('user is always excluded when muted, regardless of other criteria' , () async {
425- store = eg.store ();
426- await store.setMutedUsers ([1 ]);
427- doCheck ('Full Name' , eg.user (userId: 1 , fullName: 'Full Name' ), false );
428- // When not muted, then other criteria will be checked
429- doCheck ('Full Name' , eg.user (userId: 2 , fullName: 'Full Name' ), true );
430- });
431-
432- test ('user is included if fullname words match the query' , () {
433- store = eg.store ();
434-
435- doCheck ('' , eg.user (fullName: 'Full Name' ), true );
436- doCheck ('' , eg.user (fullName: '' ), true ); // Unlikely case, but should not crash
437- doCheck ('Full Name' , eg.user (fullName: 'Full Name' ), true );
438- doCheck ('full name' , eg.user (fullName: 'Full Name' ), true );
439- doCheck ('Full Name' , eg.user (fullName: 'full name' ), true );
440- doCheck ('Full' , eg.user (fullName: 'Full Name' ), true );
441- doCheck ('Name' , eg.user (fullName: 'Full Name' ), true );
442- doCheck ('Full Name' , eg.user (fullName: 'Fully Named' ), true );
443- doCheck ('Full Four' , eg.user (fullName: 'Full Name Four Words' ), true );
444- doCheck ('Name Words' , eg.user (fullName: 'Full Name Four Words' ), true );
445- doCheck ('Full F' , eg.user (fullName: 'Full Name Four Words' ), true );
446- doCheck ('F Four' , eg.user (fullName: 'Full Name Four Words' ), true );
447- doCheck ('full full' , eg.user (fullName: 'Full Full Name' ), true );
448- doCheck ('full full' , eg.user (fullName: 'Full Name Full' ), true );
449-
450- doCheck ('F' , eg.user (fullName: '' ), false ); // Unlikely case, but should not crash
451- doCheck ('Fully Named' , eg.user (fullName: 'Full Name' ), false );
452- doCheck ('Full Name' , eg.user (fullName: 'Full' ), false );
453- doCheck ('Full Name' , eg.user (fullName: 'Name' ), false );
454- doCheck ('ull ame' , eg.user (fullName: 'Full Name' ), false );
455- doCheck ('ull Name' , eg.user (fullName: 'Full Name' ), false );
456- doCheck ('Full ame' , eg.user (fullName: 'Full Name' ), false );
457- doCheck ('Full Full' , eg.user (fullName: 'Full Name' ), false );
458- doCheck ('Name Name' , eg.user (fullName: 'Full Name' ), false );
459- doCheck ('Name Full' , eg.user (fullName: 'Full Name' ), false );
460- doCheck ('Name Four Full Words' , eg.user (fullName: 'Full Name Four Words' ), false );
461- doCheck ('F Full' , eg.user (fullName: 'Full Name Four Words' ), false );
462- doCheck ('Four F' , eg.user (fullName: 'Full Name Four Words' ), false );
463- });
464- });
465-
466406 group ('MentionAutocompleteView sorting users results' , () {
467407 late PerAccountStore store;
468408
@@ -976,6 +916,66 @@ void main() {
976916 });
977917 });
978918
919+ group ('MentionAutocompleteQuery.testUser' , () {
920+ late PerAccountStore store;
921+
922+ void doCheck (String rawQuery, User user, bool expected) {
923+ final result = MentionAutocompleteQuery (rawQuery).testUser (user, store);
924+ expected
925+ ? check (result).isA <UserMentionAutocompleteResult >()
926+ : check (result).isNull ();
927+ }
928+
929+ test ('user is always excluded when not active regardless of other criteria' , () {
930+ store = eg.store ();
931+
932+ doCheck ('Full Name' , eg.user (fullName: 'Full Name' , isActive: false ), false );
933+ // When active then other criteria will be checked
934+ doCheck ('Full Name' , eg.user (fullName: 'Full Name' , isActive: true ), true );
935+ });
936+
937+ test ('user is always excluded when muted, regardless of other criteria' , () async {
938+ store = eg.store ();
939+ await store.setMutedUsers ([1 ]);
940+ doCheck ('Full Name' , eg.user (userId: 1 , fullName: 'Full Name' ), false );
941+ // When not muted, then other criteria will be checked
942+ doCheck ('Full Name' , eg.user (userId: 2 , fullName: 'Full Name' ), true );
943+ });
944+
945+ test ('user is included if fullname words match the query' , () {
946+ store = eg.store ();
947+
948+ doCheck ('' , eg.user (fullName: 'Full Name' ), true );
949+ doCheck ('' , eg.user (fullName: '' ), true ); // Unlikely case, but should not crash
950+ doCheck ('Full Name' , eg.user (fullName: 'Full Name' ), true );
951+ doCheck ('full name' , eg.user (fullName: 'Full Name' ), true );
952+ doCheck ('Full Name' , eg.user (fullName: 'full name' ), true );
953+ doCheck ('Full' , eg.user (fullName: 'Full Name' ), true );
954+ doCheck ('Name' , eg.user (fullName: 'Full Name' ), true );
955+ doCheck ('Full Name' , eg.user (fullName: 'Fully Named' ), true );
956+ doCheck ('Full Four' , eg.user (fullName: 'Full Name Four Words' ), true );
957+ doCheck ('Name Words' , eg.user (fullName: 'Full Name Four Words' ), true );
958+ doCheck ('Full F' , eg.user (fullName: 'Full Name Four Words' ), true );
959+ doCheck ('F Four' , eg.user (fullName: 'Full Name Four Words' ), true );
960+ doCheck ('full full' , eg.user (fullName: 'Full Full Name' ), true );
961+ doCheck ('full full' , eg.user (fullName: 'Full Name Full' ), true );
962+
963+ doCheck ('F' , eg.user (fullName: '' ), false ); // Unlikely case, but should not crash
964+ doCheck ('Fully Named' , eg.user (fullName: 'Full Name' ), false );
965+ doCheck ('Full Name' , eg.user (fullName: 'Full' ), false );
966+ doCheck ('Full Name' , eg.user (fullName: 'Name' ), false );
967+ doCheck ('ull ame' , eg.user (fullName: 'Full Name' ), false );
968+ doCheck ('ull Name' , eg.user (fullName: 'Full Name' ), false );
969+ doCheck ('Full ame' , eg.user (fullName: 'Full Name' ), false );
970+ doCheck ('Full Full' , eg.user (fullName: 'Full Name' ), false );
971+ doCheck ('Name Name' , eg.user (fullName: 'Full Name' ), false );
972+ doCheck ('Name Full' , eg.user (fullName: 'Full Name' ), false );
973+ doCheck ('Name Four Full Words' , eg.user (fullName: 'Full Name Four Words' ), false );
974+ doCheck ('F Full' , eg.user (fullName: 'Full Name Four Words' ), false );
975+ doCheck ('Four F' , eg.user (fullName: 'Full Name Four Words' ), false );
976+ });
977+ });
978+
979979 group ('MentionAutocompleteQuery ranking' , () {
980980 // This gets filled lazily, but never reset.
981981 // We're counting on this group's tests never doing anything to mutate it.
0 commit comments