Persist regenerated answer versions
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
import 'package:flutter_app/core/network/api_repository.dart';
|
||||
import 'package:flutter_app/features/chat/presentation/cubit/chat_cubit.dart';
|
||||
import 'package:flutter_app/features/chat/presentation/cubit/chat_state.dart';
|
||||
|
||||
class _VersionTestApi extends ApiRepository {
|
||||
_VersionTestApi() : super(baseUrl: 'http://127.0.0.1:8000');
|
||||
|
||||
final responses = <List<String>>[
|
||||
['الجواب الأول'],
|
||||
['الجواب الثاني'],
|
||||
];
|
||||
SavedConversation? lastSaved;
|
||||
|
||||
@override
|
||||
Future<String> getModelName() async => 'gemma4:e2b';
|
||||
|
||||
@override
|
||||
Future<List<String>> getAvailableModels() async => ['gemma4:e2b'];
|
||||
|
||||
@override
|
||||
Future<List<SavedConversation>> listConversations() async => [];
|
||||
|
||||
@override
|
||||
Future<void> saveConversation(SavedConversation conversation) async {
|
||||
lastSaved = conversation;
|
||||
}
|
||||
|
||||
@override
|
||||
Stream<String> completeStream(
|
||||
List<ChatMessage> messages, {
|
||||
String? model,
|
||||
}) => Stream<String>.fromIterable(responses.removeAt(0));
|
||||
}
|
||||
|
||||
void main() {
|
||||
test('regeneration keeps prior answers and selection is persisted', () async {
|
||||
final api = _VersionTestApi();
|
||||
final cubit = ChatCubit(api);
|
||||
await Future<void>.delayed(Duration.zero);
|
||||
|
||||
await cubit.send('ما معنى API؟');
|
||||
expect(cubit.state.messages.last.answerVersions, ['الجواب الأول']);
|
||||
|
||||
await cubit.regenerateLastAnswer();
|
||||
expect(cubit.state.messages.last.text, 'الجواب الثاني');
|
||||
expect(cubit.state.messages.last.answerVersions, ['الجواب الأول', 'الجواب الثاني']);
|
||||
expect(cubit.state.messages.last.selectedVersion, 1);
|
||||
|
||||
await cubit.selectAnswerVersion(1, 0);
|
||||
expect(cubit.state.messages.last.text, 'الجواب الأول');
|
||||
expect(cubit.state.messages.last.selectedVersion, 0);
|
||||
expect(api.lastSaved?.messages.last.answerVersions, ['الجواب الأول', 'الجواب الثاني']);
|
||||
expect(api.lastSaved?.messages.last.selectedVersion, 0);
|
||||
|
||||
await cubit.close();
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user