import 'package:flutter_test/flutter_test.dart'; import 'package:relationship_saver/features/local/chat_preference_extractor.dart'; import 'package:relationship_saver/features/local/local_models.dart'; void main() { const ChatPreferenceExtractor extractor = ChatPreferenceExtractor(); test('extracts prefer-over like/dislike signals', () { final List result = extractor.extract( 'I prefer tea over coffee, especially at night.', ); expect( result.any( (ExtractedPreferenceSignalCandidate item) => item.key == 'drink:tea' && item.polarity == PreferenceSignalPolarity.like, ), isTrue, ); expect( result.any( (ExtractedPreferenceSignalCandidate item) => item.key == 'drink:coffee' && item.polarity == PreferenceSignalPolarity.dislike, ), isTrue, ); }); test('extracts positive and negative statements with categories', () { final List result = extractor.extract( "I love bookstores and I don't like loud clubs.", ); expect( result.any( (ExtractedPreferenceSignalCandidate item) => item.category == 'hobby' && item.polarity == PreferenceSignalPolarity.like, ), isTrue, ); expect( result.any( (ExtractedPreferenceSignalCandidate item) => item.category == 'environment' && item.polarity == PreferenceSignalPolarity.dislike, ), isTrue, ); }); test('extracts allergy as high-confidence dislike signal', () { final List result = extractor.extract( 'I am allergic to peanuts, please remember that.', ); final ExtractedPreferenceSignalCandidate signal = result.firstWhere( (ExtractedPreferenceSignalCandidate item) => item.key == 'health:peanuts', ); expect(signal.polarity, PreferenceSignalPolarity.dislike); expect(signal.confidence, greaterThan(0.9)); }); }