feat(leaderboard_repository): enable ability to check if a username is allowed

pull/226/head
Jonathan Daniels 3 years ago committed by jonathandaniels-vgv
parent 06b7f29830
commit f8e5c038a7

@ -152,4 +152,15 @@ class LeaderboardRepository {
throw FetchPlayerRankingException(error, stackTrace);
}
}
/// Checks if the given [username] is allowed. The [username] is not allowed
/// if it is a bad word.
Future<bool> isUsernameAllowed({required String username}) async {
// TODO(jonathandaniels-vgv): load this list of bad words from an endpoint
final badWords = <String>['badword'];
final filteredUsername = username.trim().toLowerCase();
final isUsernameABadWord = badWords.contains(filteredUsername);
final isUsernameAllowed = !isUsernameABadWord;
return isUsernameAllowed;
}
}

@ -223,5 +223,46 @@ void main() {
);
});
});
group('isUsernameAllowed', () {
late LeaderboardRepository leaderboardRepository;
setUp(() async {
leaderboardRepository = LeaderboardRepository(firestore);
});
test('returns true if username is not a bad word', () async {
final isUsernameAllowedResponse =
await leaderboardRepository.isUsernameAllowed(
username: 'goodword',
);
expect(
isUsernameAllowedResponse,
isTrue,
);
});
test('returns false if username is a bad word', () async {
final isUsernameAllowedResponse =
await leaderboardRepository.isUsernameAllowed(
username: 'badword',
);
expect(
isUsernameAllowedResponse,
isFalse,
);
});
test('bad word detection should be case insensitive', () async {
final isUsernameAllowedResponse =
await leaderboardRepository.isUsernameAllowed(
username: ' bAdWoRd ',
);
expect(
isUsernameAllowedResponse,
isFalse,
);
});
});
});
}

Loading…
Cancel
Save