Files
Client/test/widget/avatar_disk_cache_test.dart
T

52 lines
1.6 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:marianum_mobile/widget/avatar_disk_cache.dart';
void main() {
group('AvatarDiskCache.fileName', () {
test('user files carry the size, group files do not', () {
expect(
AvatarDiskCache.fileName(id: 'alice', isGroup: false, size: 256),
'u_616c696365_256',
);
expect(
AvatarDiskCache.fileName(id: 'alice', isGroup: false, size: 64),
'u_616c696365_64',
);
// Groups are served at one fixed size — the size argument is ignored.
expect(
AvatarDiskCache.fileName(id: 'room1', isGroup: true, size: 512),
AvatarDiskCache.fileName(id: 'room1', isGroup: true, size: 64),
);
expect(
AvatarDiskCache.fileName(id: 'room1', isGroup: true, size: 0),
startsWith('g_'),
);
});
test('names are file-safe even for exotic ids', () {
final name = AvatarDiskCache.fileName(
id: 'a/b c@d',
isGroup: false,
size: 128,
);
expect(name, matches(RegExp(r'^u_[0-9a-f]+_128$')));
});
test(
'a short id evict prefix never matches a longer id file (hex + _ '
'separator keeps the boundary unambiguous)',
() {
// Eviction deletes files starting with `u_<hex(id)>_`.
final shortPrefix =
'u_${AvatarDiskCache.fileName(id: 'a', isGroup: false, size: 1).split('_')[1]}_';
final longFile = AvatarDiskCache.fileName(
id: 'a_b',
isGroup: false,
size: 256,
);
expect(longFile.startsWith(shortPrefix), isFalse);
},
);
});
}