@@ -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
@@ -978,6 +918,66 @@ void main() {
978918 });
979919 });
980920
921+ group ('MentionAutocompleteQuery.testUser' , () {
922+ late PerAccountStore store;
923+
924+ void doCheck (String rawQuery, User user, bool expected) {
925+ final result = MentionAutocompleteQuery (rawQuery).testUser (user, store);
926+ expected
927+ ? check (result).isA <UserMentionAutocompleteResult >()
928+ : check (result).isNull ();
929+ }
930+
931+ test ('user is always excluded when not active regardless of other criteria' , () {
932+ store = eg.store ();
933+
934+ doCheck ('Full Name' , eg.user (fullName: 'Full Name' , isActive: false ), false );
935+ // When active then other criteria will be checked
936+ doCheck ('Full Name' , eg.user (fullName: 'Full Name' , isActive: true ), true );
937+ });
938+
939+ test ('user is always excluded when muted, regardless of other criteria' , () async {
940+ store = eg.store ();
941+ await store.setMutedUsers ([1 ]);
942+ doCheck ('Full Name' , eg.user (userId: 1 , fullName: 'Full Name' ), false );
943+ // When not muted, then other criteria will be checked
944+ doCheck ('Full Name' , eg.user (userId: 2 , fullName: 'Full Name' ), true );
945+ });
946+
947+ test ('user is included if fullname words match the query' , () {
948+ store = eg.store ();
949+
950+ doCheck ('' , eg.user (fullName: 'Full Name' ), true );
951+ doCheck ('' , eg.user (fullName: '' ), true ); // Unlikely case, but should not crash
952+ doCheck ('Full Name' , eg.user (fullName: 'Full Name' ), true );
953+ doCheck ('full name' , eg.user (fullName: 'Full Name' ), true );
954+ doCheck ('Full Name' , eg.user (fullName: 'full name' ), true );
955+ doCheck ('Full' , eg.user (fullName: 'Full Name' ), true );
956+ doCheck ('Name' , eg.user (fullName: 'Full Name' ), true );
957+ doCheck ('Full Name' , eg.user (fullName: 'Fully Named' ), true );
958+ doCheck ('Full Four' , eg.user (fullName: 'Full Name Four Words' ), true );
959+ doCheck ('Name Words' , eg.user (fullName: 'Full Name Four Words' ), true );
960+ doCheck ('Full F' , eg.user (fullName: 'Full Name Four Words' ), true );
961+ doCheck ('F Four' , eg.user (fullName: 'Full Name Four Words' ), true );
962+ doCheck ('full full' , eg.user (fullName: 'Full Full Name' ), true );
963+ doCheck ('full full' , eg.user (fullName: 'Full Name Full' ), true );
964+
965+ doCheck ('F' , eg.user (fullName: '' ), false ); // Unlikely case, but should not crash
966+ doCheck ('Fully Named' , eg.user (fullName: 'Full Name' ), false );
967+ doCheck ('Full Name' , eg.user (fullName: 'Full' ), false );
968+ doCheck ('Full Name' , eg.user (fullName: 'Name' ), false );
969+ doCheck ('ull ame' , eg.user (fullName: 'Full Name' ), false );
970+ doCheck ('ull Name' , eg.user (fullName: 'Full Name' ), false );
971+ doCheck ('Full ame' , eg.user (fullName: 'Full Name' ), false );
972+ doCheck ('Full Full' , eg.user (fullName: 'Full Name' ), false );
973+ doCheck ('Name Name' , eg.user (fullName: 'Full Name' ), false );
974+ doCheck ('Name Full' , eg.user (fullName: 'Full Name' ), false );
975+ doCheck ('Name Four Full Words' , eg.user (fullName: 'Full Name Four Words' ), false );
976+ doCheck ('F Full' , eg.user (fullName: 'Full Name Four Words' ), false );
977+ doCheck ('Four F' , eg.user (fullName: 'Full Name Four Words' ), false );
978+ });
979+ });
980+
981981 group ('MentionAutocompleteQuery ranking' , () {
982982 // This gets filled lazily, but never reset.
983983 // We're counting on this group's tests never doing anything to mutate it.
0 commit comments