import 'package:eatvio_app/features/chat/models/chat_message_model.dart'; import 'package:flutter_test/flutter_test.dart'; import '../../../fixtures/fixture_reader.dart'; void main() { group('ChatMessageModel', () { test('создает ChatMessageModel с правильными значениями', () { final model = ChatMessageModel( id: 1, data: 'Test message', mediaData: null, authorId: 123, updatedAt: DateTime(2024, 1, 1), isRead: false, isCurrentUserAuthor: true, roomId: 'room-1', ); expect(model.id, 1); expect(model.data, 'Test message'); expect(model.authorId, 123); expect(model.isRead, false); expect(model.messageState, MessageState.sent); }); test('fromJson создает ChatMessageModel из JSON', () { final json = FixtureReader.readAsMap('chat/chat_message_response.json'); final model = ChatMessageModel.fromJson(json); expect(model.id, 1); expect(model.data, 'Test message'); expect(model.authorId, 1); }); test('fromJson создает ChatMessageModel с медиа из JSON', () { final json = FixtureReader.readAsMap('chat/chat_message_with_media_response.json'); final model = ChatMessageModel.fromJson(json); expect(model.id, 2); expect(model.data, 'Message with attachment'); expect(model.mediaData, isNotNull); expect(model.mediaData!.length, 1); }); test('toJson serializes ChatMessageModel correctly', () { final model = ChatMessageModel( id: 1, data: 'Test message', mediaData: null, authorId: 123, updatedAt: DateTime(2024, 1, 1, 12, 0, 0), isRead: false, isCurrentUserAuthor: true, roomId: 'room-1', type: ChatMessageType.text, ); final json = model.toJson(); expect(json['id'], 1); expect(json['data'], 'Test message'); expect(json['author_id'], 123); expect(json['read_by_to_user'], false); expect(json['is_author_message_auth_user'], true); expect(json['room_id'], 'room-1'); expect(json['type'], 'text'); }); test('toJson handles null fields correctly', () { final model = ChatMessageModel( id: 1, data: 'Test message', mediaData: null, authorId: 123, updatedAt: DateTime(2024, 1, 1, 12, 0, 0), isRead: false, isCurrentUserAuthor: null, roomId: null, type: null, ); final json = model.toJson(); expect(json['is_author_message_auth_user'], isNull); expect(json['room_id'], isNull); expect(json['type'], isNull); }); }); }