cyberhybridhub/server/test/question_source_preferences_test.dart
nathanAndrinoid 4459852f83
Some checks failed
Admin portal tests / test (push) Has been cancelled
spelling
2026-06-05 03:22:35 +00:00

79 lines
2.7 KiB
Dart

import 'package:cyberhybridhub_server/question_source_preferences.dart';
import 'package:test/test.dart';
void main() {
test('mergeStored applies defaults for market and spelling sources', () {
final List<ResolvedQuestionSourcePreference> merged =
QuestionSourcePreferences.mergeStored(null);
expect(merged.map((ResolvedQuestionSourcePreference s) => s.id), <String>[
'market_history',
'spelling',
]);
expect(
merged.firstWhere((ResolvedQuestionSourcePreference s) => s.id == 'market_history').enabled,
isTrue,
);
expect(
merged.firstWhere((ResolvedQuestionSourcePreference s) => s.id == 'spelling').enabled,
isTrue,
);
});
test('parsePutBody rejects all disabled sources', () {
expect(
() => QuestionSourcePreferences.parsePutBody(<String, dynamic>{
'sources': <Map<String, dynamic>>[
<String, dynamic>{'id': 'market_history', 'enabled': false, 'ratio': 50},
<String, dynamic>{'id': 'spelling', 'enabled': false, 'ratio': 50},
],
}),
throwsA(isA<QuestionSourceValidationException>()),
);
});
test('parsePutBody accepts enabled spelling source', () {
final List<Map<String, dynamic>> stored =
QuestionSourcePreferences.parsePutBody(<String, dynamic>{
'sources': <Map<String, dynamic>>[
<String, dynamic>{'id': 'market_history', 'enabled': true, 'ratio': 50},
<String, dynamic>{'id': 'spelling', 'enabled': true, 'ratio': 50},
],
});
expect(stored.length, 2);
expect(
stored.firstWhere((Map<String, dynamic> row) => row['id'] == 'spelling')['enabled'],
isTrue,
);
});
test('effectiveMix normalizes enabled source ratios', () {
final List<ResolvedQuestionSourcePreference> resolved =
QuestionSourcePreferences.mergeStored(<Map<String, dynamic>>[
<String, dynamic>{'id': 'market_history', 'enabled': true, 'ratio': 75},
<String, dynamic>{'id': 'spelling', 'enabled': true, 'ratio': 25},
]);
final Map<String, int> mix =
QuestionSourcePreferences.effectiveMix(resolved);
expect(mix['market_history'], 75);
expect(mix['spelling'], 25);
});
test('isEnabled returns false for disabled spelling', () {
final List<ResolvedQuestionSourcePreference> resolved =
QuestionSourcePreferences.mergeStored(<Map<String, dynamic>>[
<String, dynamic>{'id': 'market_history', 'enabled': true, 'ratio': 100},
<String, dynamic>{'id': 'spelling', 'enabled': false, 'ratio': 0},
]);
expect(
QuestionSourcePreferences.isEnabled(resolved, 'market_history'),
isTrue,
);
expect(QuestionSourcePreferences.isEnabled(resolved, 'spelling'), isFalse);
});
}