forked from eatvio/eatvio_app
93 lines
2.7 KiB
Dart
93 lines
2.7 KiB
Dart
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);
|
||
});
|
||
});
|
||
}
|
||
|