Files
tatuchat/test/account_config_test.dart
Welton Moura 058926cf6f feat: sincronizar cor do tema via account data da conta Matrix
A cor escolhida no Appearance passa a ser guardada em im.fluffychat.account_config (primary_color), em vez de apenas nas preferencias locais do dispositivo.

- ApplicationAccountConfig ganha primaryColor, preservado em updateApplicationAccountConfig e no novo setApplicationAccountColor
- ThemeController restaura a cor da conta activa, aguarda accountDataLoading e reage a alteracoes remotas via onSync
- A cor final e derivada de _accountPrimaryColor ?? _localPrimaryColor, evitando corrida entre as preferencias locais e o sync
- Matrix notifica a troca de conta activa em initMatrix, setActiveClient e logout, corrigindo o indice do cliente activo
- Apagar o wallpaper preserva a cor; testes de serializacao do modelo
2026-09-25 12:53:21 -03:00

68 lines
2.2 KiB
Dart

// SPDX-FileCopyrightText: 2026 TatuChat
//
// SPDX-License-Identifier: AGPL-3.0-or-later
import 'package:flutter_test/flutter_test.dart';
import 'package:tatchat/utils/account_config.dart';
void main() {
group('ApplicationAccountConfig', () {
test('Parses primary color from account data', () {
final config = ApplicationAccountConfig.fromJson({
'primary_color': 0xFF6750A4,
});
expect(config.primaryColor, 0xFF6750A4);
});
test('Ignores primary color of unexpected type', () {
expect(
ApplicationAccountConfig.fromJson({
'primary_color': '4286369748',
}).primaryColor,
isNull,
);
expect(
ApplicationAccountConfig.fromJson({'primary_color': 1.5}).primaryColor,
isNull,
);
});
test('Defaults primary color to null when absent', () {
expect(ApplicationAccountConfig.fromJson({}).primaryColor, isNull);
});
test('Serializes primary color', () {
const config = ApplicationAccountConfig(primaryColor: 0xFF00D084);
expect(config.toJson()['primary_color'], 0xFF00D084);
});
test('Serializes missing primary color as null', () {
const config = ApplicationAccountConfig(wallpaperOpacity: 0.5);
expect(config.toJson()['primary_color'], isNull);
});
test('Round trips through json', () {
final config = ApplicationAccountConfig(
wallpaperUrl: Uri.parse('mxc://example.invalid/wallpaper'),
wallpaperOpacity: 0.3,
wallpaperBlur: 4,
primaryColor: 0xFF6750A4,
);
final parsed = ApplicationAccountConfig.fromJson(config.toJson());
expect(parsed.wallpaperUrl, config.wallpaperUrl);
expect(parsed.wallpaperOpacity, config.wallpaperOpacity);
expect(parsed.wallpaperBlur, config.wallpaperBlur);
expect(parsed.primaryColor, config.primaryColor);
});
test('Keeps existing wallpaper defaults when parsing color only', () {
final config = ApplicationAccountConfig.fromJson({
'primary_color': 0xFF6750A4,
});
expect(config.wallpaperUrl, isNull);
expect(config.wallpaperOpacity, 1);
expect(config.wallpaperBlur, isNull);
});
});
}