// 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); }); }); }