hesabixArc/hesabixUI/hesabix_ui/test/column_settings_test.dart

89 lines
3.4 KiB
Dart
Raw Normal View History

import 'package:flutter_test/flutter_test.dart';
import 'package:hesabix_ui/widgets/data_table/helpers/column_settings_service.dart';
void main() {
group('ColumnSettingsService', () {
test('should create default settings from column keys', () {
final columnKeys = ['id', 'name', 'email', 'createdAt'];
final settings = ColumnSettingsService.getDefaultSettings(columnKeys);
expect(settings.visibleColumns, equals(columnKeys));
expect(settings.columnOrder, equals(columnKeys));
expect(settings.columnWidths, isEmpty);
});
test('should merge user settings with defaults correctly', () {
final defaultKeys = ['id', 'name', 'email', 'createdAt', 'updatedAt'];
final userSettings = ColumnSettings(
visibleColumns: ['id', 'name', 'email'],
columnOrder: ['name', 'id', 'email'],
columnWidths: {'name': 200.0},
);
final merged = ColumnSettingsService.mergeWithDefaults(userSettings, defaultKeys);
expect(merged.visibleColumns, equals(['id', 'name', 'email']));
expect(merged.columnOrder, equals(['name', 'id', 'email']));
expect(merged.columnWidths, equals({'name': 200.0}));
});
test('should handle null user settings', () {
final defaultKeys = ['id', 'name', 'email'];
final merged = ColumnSettingsService.mergeWithDefaults(null, defaultKeys);
expect(merged.visibleColumns, equals(defaultKeys));
expect(merged.columnOrder, equals(defaultKeys));
expect(merged.columnWidths, isEmpty);
});
test('should filter out invalid columns from user settings', () {
final defaultKeys = ['id', 'name', 'email'];
final userSettings = ColumnSettings(
visibleColumns: ['id', 'name', 'invalidColumn', 'email'],
columnOrder: ['name', 'invalidColumn', 'id', 'email'],
columnWidths: {'name': 200.0, 'invalidColumn': 150.0},
);
final merged = ColumnSettingsService.mergeWithDefaults(userSettings, defaultKeys);
expect(merged.visibleColumns, equals(['id', 'name', 'email']));
expect(merged.columnOrder, equals(['name', 'id', 'email']));
expect(merged.columnWidths, equals({'name': 200.0}));
});
});
group('ColumnSettings', () {
test('should serialize and deserialize correctly', () {
final original = ColumnSettings(
visibleColumns: ['id', 'name', 'email'],
columnOrder: ['name', 'id', 'email'],
columnWidths: {'name': 200.0, 'email': 150.0},
);
final json = original.toJson();
final restored = ColumnSettings.fromJson(json);
expect(restored.visibleColumns, equals(original.visibleColumns));
expect(restored.columnOrder, equals(original.columnOrder));
expect(restored.columnWidths, equals(original.columnWidths));
});
test('should copy with new values correctly', () {
final original = ColumnSettings(
visibleColumns: ['id', 'name'],
columnOrder: ['name', 'id'],
columnWidths: {'name': 200.0},
);
final copied = original.copyWith(
visibleColumns: ['id', 'name', 'email'],
columnWidths: {'name': 250.0, 'email': 150.0},
);
expect(copied.visibleColumns, equals(['id', 'name', 'email']));
expect(copied.columnOrder, equals(['name', 'id'])); // unchanged
expect(copied.columnWidths, equals({'name': 250.0, 'email': 150.0}));
});
});
}