import 'package:flutter_test/flutter_test.dart'; import 'package:agenda_tasks/features/auth/domain/entities/user_entity.dart'; void main() { group('UserEntity', () { final testCreatedAt = DateTime(2026, 1, 1, 12, 0, 0); test('should create a UserEntity with required fields', () { const user = UserEntity( id: 'user-1', email: 'test@example.com', name: 'Test User', ); expect(user.id, 'user-1'); expect(user.email, 'test@example.com'); expect(user.name, 'Test User'); expect(user.createdAt, isNull); }); test('should create a UserEntity with all fields', () { final user = UserEntity( id: 'user-1', email: 'test@example.com', name: 'Test User', createdAt: testCreatedAt, ); expect(user.id, 'user-1'); expect(user.email, 'test@example.com'); expect(user.name, 'Test User'); expect(user.createdAt, testCreatedAt); }); group('copyWith', () { test('should return a copy with updated name', () { const original = UserEntity( id: 'user-1', email: 'test@example.com', name: 'Original Name', ); final copy = original.copyWith(name: 'Updated Name'); expect(copy.name, 'Updated Name'); expect(copy.id, original.id); expect(copy.email, original.email); }); test('should return a copy with updated email', () { const original = UserEntity( id: 'user-1', email: 'old@example.com', name: 'Test User', ); final copy = original.copyWith(email: 'new@example.com'); expect(copy.email, 'new@example.com'); expect(copy.name, original.name); }); test('should return identical copy when no arguments provided', () { final original = UserEntity( id: 'user-1', email: 'test@example.com', name: 'Test User', createdAt: testCreatedAt, ); final copy = original.copyWith(); expect(copy.id, original.id); expect(copy.email, original.email); expect(copy.name, original.name); expect(copy.createdAt, original.createdAt); }); }); group('equality', () { test('should be equal when ids are the same', () { const user1 = UserEntity( id: 'same-id', email: 'user1@example.com', name: 'User 1', ); const user2 = UserEntity( id: 'same-id', email: 'user2@example.com', name: 'User 2', ); expect(user1, equals(user2)); }); test('should not be equal when ids are different', () { const user1 = UserEntity( id: 'id-1', email: 'same@example.com', name: 'Same Name', ); const user2 = UserEntity( id: 'id-2', email: 'same@example.com', name: 'Same Name', ); expect(user1, isNot(equals(user2))); }); test('should have same hashCode when ids are the same', () { const user1 = UserEntity( id: 'same-id', email: 'user1@example.com', name: 'User 1', ); const user2 = UserEntity( id: 'same-id', email: 'user2@example.com', name: 'User 2', ); expect(user1.hashCode, equals(user2.hashCode)); }); }); }); }