Merge pull request #1568 from GetStream/fix/nullable-date

This commit is contained in:
Sahil Kumar
2023-05-24 18:15:25 +05:30
committed by GitHub
15 changed files with 86 additions and 79 deletions
+5
View File
@@ -1,5 +1,10 @@
## Upcoming ## Upcoming
🐞 Fixed
- [[#1422]](https://github.com/GetStream/stream-chat-flutter/issues/1422) Fixed `User.createdAt` property using
currentTime when the ws connection is not established.
✅ Added ✅ Added
- Added support for `ChatPersistenceClient.isConnected` for checking if the client is connected to the database. - Added support for `ChatPersistenceClient.isConnected` for checking if the client is connected to the database.
@@ -35,8 +35,8 @@ class User extends Equatable {
this.role, this.role,
String? name, String? name,
String? image, String? image,
DateTime? createdAt, this.createdAt,
DateTime? updatedAt, this.updatedAt,
this.lastActive, this.lastActive,
Map<String, Object?> extraData = const {}, Map<String, Object?> extraData = const {},
this.online = false, this.online = false,
@@ -44,8 +44,7 @@ class User extends Equatable {
this.banExpires, this.banExpires,
this.teams = const [], this.teams = const [],
this.language, this.language,
}) : createdAt = createdAt ?? DateTime.now(), }) :
updatedAt = updatedAt ?? DateTime.now(),
// For backwards compatibility, set 'name', 'image' in [extraData]. // For backwards compatibility, set 'name', 'image' in [extraData].
extraData = { extraData = {
...extraData, ...extraData,
@@ -104,11 +103,11 @@ class User extends Equatable {
/// Date of user creation. /// Date of user creation.
@JsonKey(includeToJson: false) @JsonKey(includeToJson: false)
final DateTime createdAt; final DateTime? createdAt;
/// Date of last user update. /// Date of last user update.
@JsonKey(includeToJson: false) @JsonKey(includeToJson: false)
final DateTime updatedAt; final DateTime? updatedAt;
/// Date of last user connection. /// Date of last user connection.
@JsonKey(includeToJson: false) @JsonKey(includeToJson: false)
@@ -198,8 +198,8 @@ void main() {
expect(user.banned, false); expect(user.banned, false);
expect(user.teams, []); expect(user.teams, []);
expect(user.lastActive, null); expect(user.lastActive, null);
expect(user.createdAt, isNotNull); expect(user.createdAt, null);
expect(user.updatedAt, isNotNull); expect(user.updatedAt, null);
}); });
test('default values, parse json', () { test('default values, parse json', () {
@@ -214,8 +214,8 @@ void main() {
expect(user.banned, false); expect(user.banned, false);
expect(user.teams, []); expect(user.teams, []);
expect(user.lastActive, null); expect(user.lastActive, null);
expect(user.createdAt, isNotNull); expect(user.createdAt, null);
expect(user.updatedAt, isNotNull); expect(user.updatedAt, null);
}); });
}); });
} }
@@ -1,6 +1,8 @@
## Upcoming ## Upcoming
- Added support for `StreamChatPersistenceClient.isConnected` for checking if the client is connected to the database. - Added support for `StreamChatPersistenceClient.isConnected` for checking if the client is connected to the database.
- [[#1422]](https://github.com/GetStream/stream-chat-flutter/issues/1422) Removed default values
from `UserEntity` `createdAt` and `updatedAt` fields.
## 6.1.0 ## 6.1.0
@@ -49,7 +49,7 @@ class DriftChatDatabase extends _$DriftChatDatabase {
// you should bump this number whenever you change or add a table definition. // you should bump this number whenever you change or add a table definition.
@override @override
int get schemaVersion => 10; int get schemaVersion => 11;
@override @override
MigrationStrategy get migration => MigrationStrategy( MigrationStrategy get migration => MigrationStrategy(
@@ -3651,18 +3651,14 @@ class $UsersTable extends Users with TableInfo<$UsersTable, UserEntity> {
const VerificationMeta('createdAt'); const VerificationMeta('createdAt');
@override @override
late final GeneratedColumn<DateTime> createdAt = GeneratedColumn<DateTime>( late final GeneratedColumn<DateTime> createdAt = GeneratedColumn<DateTime>(
'created_at', aliasedName, false, 'created_at', aliasedName, true,
type: DriftSqlType.dateTime, type: DriftSqlType.dateTime, requiredDuringInsert: false);
requiredDuringInsert: false,
defaultValue: currentDateAndTime);
static const VerificationMeta _updatedAtMeta = static const VerificationMeta _updatedAtMeta =
const VerificationMeta('updatedAt'); const VerificationMeta('updatedAt');
@override @override
late final GeneratedColumn<DateTime> updatedAt = GeneratedColumn<DateTime>( late final GeneratedColumn<DateTime> updatedAt = GeneratedColumn<DateTime>(
'updated_at', aliasedName, false, 'updated_at', aliasedName, true,
type: DriftSqlType.dateTime, type: DriftSqlType.dateTime, requiredDuringInsert: false);
requiredDuringInsert: false,
defaultValue: currentDateAndTime);
static const VerificationMeta _lastActiveMeta = static const VerificationMeta _lastActiveMeta =
const VerificationMeta('lastActive'); const VerificationMeta('lastActive');
@override @override
@@ -3773,9 +3769,9 @@ class $UsersTable extends Users with TableInfo<$UsersTable, UserEntity> {
language: attachedDatabase.typeMapping language: attachedDatabase.typeMapping
.read(DriftSqlType.string, data['${effectivePrefix}language']), .read(DriftSqlType.string, data['${effectivePrefix}language']),
createdAt: attachedDatabase.typeMapping createdAt: attachedDatabase.typeMapping
.read(DriftSqlType.dateTime, data['${effectivePrefix}created_at'])!, .read(DriftSqlType.dateTime, data['${effectivePrefix}created_at']),
updatedAt: attachedDatabase.typeMapping updatedAt: attachedDatabase.typeMapping
.read(DriftSqlType.dateTime, data['${effectivePrefix}updated_at'])!, .read(DriftSqlType.dateTime, data['${effectivePrefix}updated_at']),
lastActive: attachedDatabase.typeMapping lastActive: attachedDatabase.typeMapping
.read(DriftSqlType.dateTime, data['${effectivePrefix}last_active']), .read(DriftSqlType.dateTime, data['${effectivePrefix}last_active']),
online: attachedDatabase.typeMapping online: attachedDatabase.typeMapping
@@ -3808,10 +3804,10 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
final String? language; final String? language;
/// Date of user creation /// Date of user creation
final DateTime createdAt; final DateTime? createdAt;
/// Date of last user update /// Date of last user update
final DateTime updatedAt; final DateTime? updatedAt;
/// Date of last user connection /// Date of last user connection
final DateTime? lastActive; final DateTime? lastActive;
@@ -3828,8 +3824,8 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
{required this.id, {required this.id,
this.role, this.role,
this.language, this.language,
required this.createdAt, this.createdAt,
required this.updatedAt, this.updatedAt,
this.lastActive, this.lastActive,
required this.online, required this.online,
required this.banned, required this.banned,
@@ -3844,8 +3840,12 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
if (!nullToAbsent || language != null) { if (!nullToAbsent || language != null) {
map['language'] = Variable<String>(language); map['language'] = Variable<String>(language);
} }
map['created_at'] = Variable<DateTime>(createdAt); if (!nullToAbsent || createdAt != null) {
map['updated_at'] = Variable<DateTime>(updatedAt); map['created_at'] = Variable<DateTime>(createdAt);
}
if (!nullToAbsent || updatedAt != null) {
map['updated_at'] = Variable<DateTime>(updatedAt);
}
if (!nullToAbsent || lastActive != null) { if (!nullToAbsent || lastActive != null) {
map['last_active'] = Variable<DateTime>(lastActive); map['last_active'] = Variable<DateTime>(lastActive);
} }
@@ -3865,8 +3865,8 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
id: serializer.fromJson<String>(json['id']), id: serializer.fromJson<String>(json['id']),
role: serializer.fromJson<String?>(json['role']), role: serializer.fromJson<String?>(json['role']),
language: serializer.fromJson<String?>(json['language']), language: serializer.fromJson<String?>(json['language']),
createdAt: serializer.fromJson<DateTime>(json['createdAt']), createdAt: serializer.fromJson<DateTime?>(json['createdAt']),
updatedAt: serializer.fromJson<DateTime>(json['updatedAt']), updatedAt: serializer.fromJson<DateTime?>(json['updatedAt']),
lastActive: serializer.fromJson<DateTime?>(json['lastActive']), lastActive: serializer.fromJson<DateTime?>(json['lastActive']),
online: serializer.fromJson<bool>(json['online']), online: serializer.fromJson<bool>(json['online']),
banned: serializer.fromJson<bool>(json['banned']), banned: serializer.fromJson<bool>(json['banned']),
@@ -3880,8 +3880,8 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
'id': serializer.toJson<String>(id), 'id': serializer.toJson<String>(id),
'role': serializer.toJson<String?>(role), 'role': serializer.toJson<String?>(role),
'language': serializer.toJson<String?>(language), 'language': serializer.toJson<String?>(language),
'createdAt': serializer.toJson<DateTime>(createdAt), 'createdAt': serializer.toJson<DateTime?>(createdAt),
'updatedAt': serializer.toJson<DateTime>(updatedAt), 'updatedAt': serializer.toJson<DateTime?>(updatedAt),
'lastActive': serializer.toJson<DateTime?>(lastActive), 'lastActive': serializer.toJson<DateTime?>(lastActive),
'online': serializer.toJson<bool>(online), 'online': serializer.toJson<bool>(online),
'banned': serializer.toJson<bool>(banned), 'banned': serializer.toJson<bool>(banned),
@@ -3893,8 +3893,8 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
{String? id, {String? id,
Value<String?> role = const Value.absent(), Value<String?> role = const Value.absent(),
Value<String?> language = const Value.absent(), Value<String?> language = const Value.absent(),
DateTime? createdAt, Value<DateTime?> createdAt = const Value.absent(),
DateTime? updatedAt, Value<DateTime?> updatedAt = const Value.absent(),
Value<DateTime?> lastActive = const Value.absent(), Value<DateTime?> lastActive = const Value.absent(),
bool? online, bool? online,
bool? banned, bool? banned,
@@ -3903,8 +3903,8 @@ class UserEntity extends DataClass implements Insertable<UserEntity> {
id: id ?? this.id, id: id ?? this.id,
role: role.present ? role.value : this.role, role: role.present ? role.value : this.role,
language: language.present ? language.value : this.language, language: language.present ? language.value : this.language,
createdAt: createdAt ?? this.createdAt, createdAt: createdAt.present ? createdAt.value : this.createdAt,
updatedAt: updatedAt ?? this.updatedAt, updatedAt: updatedAt.present ? updatedAt.value : this.updatedAt,
lastActive: lastActive.present ? lastActive.value : this.lastActive, lastActive: lastActive.present ? lastActive.value : this.lastActive,
online: online ?? this.online, online: online ?? this.online,
banned: banned ?? this.banned, banned: banned ?? this.banned,
@@ -3948,8 +3948,8 @@ class UsersCompanion extends UpdateCompanion<UserEntity> {
final Value<String> id; final Value<String> id;
final Value<String?> role; final Value<String?> role;
final Value<String?> language; final Value<String?> language;
final Value<DateTime> createdAt; final Value<DateTime?> createdAt;
final Value<DateTime> updatedAt; final Value<DateTime?> updatedAt;
final Value<DateTime?> lastActive; final Value<DateTime?> lastActive;
final Value<bool> online; final Value<bool> online;
final Value<bool> banned; final Value<bool> banned;
@@ -4010,8 +4010,8 @@ class UsersCompanion extends UpdateCompanion<UserEntity> {
{Value<String>? id, {Value<String>? id,
Value<String?>? role, Value<String?>? role,
Value<String?>? language, Value<String?>? language,
Value<DateTime>? createdAt, Value<DateTime?>? createdAt,
Value<DateTime>? updatedAt, Value<DateTime?>? updatedAt,
Value<DateTime?>? lastActive, Value<DateTime?>? lastActive,
Value<bool>? online, Value<bool>? online,
Value<bool>? banned, Value<bool>? banned,
@@ -15,10 +15,10 @@ class Users extends Table {
TextColumn get language => text().nullable()(); TextColumn get language => text().nullable()();
/// Date of user creation /// Date of user creation
DateTimeColumn get createdAt => dateTime().withDefault(currentDateAndTime)(); DateTimeColumn get createdAt => dateTime().nullable()();
/// Date of last user update /// Date of last user update
DateTimeColumn get updatedAt => dateTime().withDefault(currentDateAndTime)(); DateTimeColumn get updatedAt => dateTime().nullable()();
/// Date of last user connection /// Date of last user connection
DateTimeColumn get lastActive => dateTime().nullable()(); DateTimeColumn get lastActive => dateTime().nullable()();
@@ -132,7 +132,7 @@ void main() {
// Should match lastMessageAt date // Should match lastMessageAt date
expect( expect(
updatedChannel.lastMessageAt, updatedChannel.lastMessageAt,
isSameDateAs(insertedChannel.lastMessageAt!), isSameDateAs(insertedChannel.lastMessageAt),
); );
} }
}); });
@@ -177,7 +177,7 @@ void main() {
// Should match lastMessageAt date // Should match lastMessageAt date
expect( expect(
updatedChannel.lastMessageAt, updatedChannel.lastMessageAt,
isSameDateAs(insertedChannel.lastMessageAt!), isSameDateAs(insertedChannel.lastMessageAt),
); );
} }
}); });
@@ -220,7 +220,7 @@ void main() {
// Should match lastMessageAt date // Should match lastMessageAt date
expect( expect(
updatedChannel.lastMessageAt, updatedChannel.lastMessageAt,
isSameDateAs(insertedChannel.lastMessageAt!), isSameDateAs(insertedChannel.lastMessageAt),
); );
} }
}); });
@@ -66,7 +66,7 @@ void main() {
expect(fetchedMember.updatedAt, isSameDateAs(member.updatedAt)); expect(fetchedMember.updatedAt, isSameDateAs(member.updatedAt));
expect( expect(
fetchedMember.inviteAcceptedAt, fetchedMember.inviteAcceptedAt,
isSameDateAs(member.inviteAcceptedAt!), isSameDateAs(member.inviteAcceptedAt),
); );
} }
}); });
@@ -93,7 +93,7 @@ void main() {
expect(fetchedMember.updatedAt, isSameDateAs(member.updatedAt)); expect(fetchedMember.updatedAt, isSameDateAs(member.updatedAt));
expect( expect(
fetchedMember.inviteAcceptedAt, fetchedMember.inviteAcceptedAt,
isSameDateAs(member.inviteAcceptedAt!), isSameDateAs(member.inviteAcceptedAt),
); );
} }
@@ -37,8 +37,8 @@ void main() {
expect(channelModel.updatedAt, isSameDateAs(entity.updatedAt)); expect(channelModel.updatedAt, isSameDateAs(entity.updatedAt));
expect(channelModel.memberCount, entity.memberCount); expect(channelModel.memberCount, entity.memberCount);
expect(channelModel.cid, entity.cid); expect(channelModel.cid, entity.cid);
expect(channelModel.lastMessageAt, isSameDateAs(entity.lastMessageAt!)); expect(channelModel.lastMessageAt, isSameDateAs(entity.lastMessageAt));
expect(channelModel.deletedAt, isSameDateAs(entity.deletedAt!)); expect(channelModel.deletedAt, isSameDateAs(entity.deletedAt));
expect(channelModel.extraData, entity.extraData); expect(channelModel.extraData, entity.extraData);
expect(channelModel.createdBy!.id, entity.createdById); expect(channelModel.createdBy!.id, entity.createdById);
}); });
@@ -77,8 +77,8 @@ void main() {
expect(channelModel.updatedAt, isSameDateAs(entity.updatedAt)); expect(channelModel.updatedAt, isSameDateAs(entity.updatedAt));
expect(channelModel.memberCount, entity.memberCount); expect(channelModel.memberCount, entity.memberCount);
expect(channelModel.cid, entity.cid); expect(channelModel.cid, entity.cid);
expect(channelModel.lastMessageAt, isSameDateAs(entity.lastMessageAt!)); expect(channelModel.lastMessageAt, isSameDateAs(entity.lastMessageAt));
expect(channelModel.deletedAt, isSameDateAs(entity.deletedAt!)); expect(channelModel.deletedAt, isSameDateAs(entity.deletedAt));
expect(channelModel.extraData, entity.extraData); expect(channelModel.extraData, entity.extraData);
expect(channelModel.createdBy!.id, entity.createdById); expect(channelModel.createdBy!.id, entity.createdById);
}); });
@@ -115,8 +115,8 @@ void main() {
expect(channelEntity.updatedAt, isSameDateAs(model.updatedAt)); expect(channelEntity.updatedAt, isSameDateAs(model.updatedAt));
expect(channelEntity.memberCount, model.memberCount); expect(channelEntity.memberCount, model.memberCount);
expect(channelEntity.cid, model.cid); expect(channelEntity.cid, model.cid);
expect(channelEntity.lastMessageAt, isSameDateAs(model.lastMessageAt!)); expect(channelEntity.lastMessageAt, isSameDateAs(model.lastMessageAt));
expect(channelEntity.deletedAt, isSameDateAs(model.deletedAt!)); expect(channelEntity.deletedAt, isSameDateAs(model.deletedAt));
expect(channelEntity.extraData, model.extraData); expect(channelEntity.extraData, model.extraData);
expect(channelEntity.createdById, model.createdBy!.id); expect(channelEntity.createdById, model.createdBy!.id);
}); });
@@ -29,8 +29,8 @@ void main() {
expect(member.createdAt, isSameDateAs(entity.createdAt)); expect(member.createdAt, isSameDateAs(entity.createdAt));
expect(member.updatedAt, isSameDateAs(entity.updatedAt)); expect(member.updatedAt, isSameDateAs(entity.updatedAt));
expect(member.channelRole, entity.channelRole); expect(member.channelRole, entity.channelRole);
expect(member.inviteAcceptedAt, isSameDateAs(entity.inviteAcceptedAt!)); expect(member.inviteAcceptedAt, isSameDateAs(entity.inviteAcceptedAt));
expect(member.inviteRejectedAt, isSameDateAs(entity.inviteRejectedAt!)); expect(member.inviteRejectedAt, isSameDateAs(entity.inviteRejectedAt));
expect(member.invited, entity.invited); expect(member.invited, entity.invited);
expect(member.banned, entity.banned); expect(member.banned, entity.banned);
expect(member.shadowBanned, entity.shadowBanned); expect(member.shadowBanned, entity.shadowBanned);
@@ -59,8 +59,8 @@ void main() {
expect(entity.createdAt, isSameDateAs(member.createdAt)); expect(entity.createdAt, isSameDateAs(member.createdAt));
expect(entity.updatedAt, isSameDateAs(member.updatedAt)); expect(entity.updatedAt, isSameDateAs(member.updatedAt));
expect(entity.channelRole, member.channelRole); expect(entity.channelRole, member.channelRole);
expect(entity.inviteAcceptedAt, isSameDateAs(member.inviteAcceptedAt!)); expect(entity.inviteAcceptedAt, isSameDateAs(member.inviteAcceptedAt));
expect(entity.inviteRejectedAt, isSameDateAs(member.inviteRejectedAt!)); expect(entity.inviteRejectedAt, isSameDateAs(member.inviteRejectedAt));
expect(entity.invited, member.invited); expect(entity.invited, member.invited);
expect(entity.banned, member.banned); expect(entity.banned, member.banned);
expect(entity.shadowBanned, member.shadowBanned); expect(entity.shadowBanned, member.shadowBanned);
@@ -96,11 +96,11 @@ void main() {
expect(message.updatedAt, isSameDateAs(entity.updatedAt)); expect(message.updatedAt, isSameDateAs(entity.updatedAt));
expect(message.extraData, entity.extraData); expect(message.extraData, entity.extraData);
expect(message.user!.id, entity.userId); expect(message.user!.id, entity.userId);
expect(message.deletedAt, isSameDateAs(entity.deletedAt!)); expect(message.deletedAt, isSameDateAs(entity.deletedAt));
expect(message.text, entity.messageText); expect(message.text, entity.messageText);
expect(message.pinned, entity.pinned); expect(message.pinned, entity.pinned);
expect(message.pinExpires, isSameDateAs(entity.pinExpires!)); expect(message.pinExpires, isSameDateAs(entity.pinExpires));
expect(message.pinnedAt, isSameDateAs(entity.pinnedAt!)); expect(message.pinnedAt, isSameDateAs(entity.pinnedAt));
expect(message.pinnedBy!.id, entity.pinnedByUserId); expect(message.pinnedBy!.id, entity.pinnedByUserId);
expect(message.reactionCounts, entity.reactionCounts); expect(message.reactionCounts, entity.reactionCounts);
expect(message.reactionScores, entity.reactionScores); expect(message.reactionScores, entity.reactionScores);
@@ -191,11 +191,11 @@ void main() {
expect(entity.updatedAt, isSameDateAs(message.updatedAt)); expect(entity.updatedAt, isSameDateAs(message.updatedAt));
expect(entity.extraData, message.extraData); expect(entity.extraData, message.extraData);
expect(entity.userId, message.user!.id); expect(entity.userId, message.user!.id);
expect(entity.deletedAt, isSameDateAs(message.deletedAt!)); expect(entity.deletedAt, isSameDateAs(message.deletedAt));
expect(entity.messageText, message.text); expect(entity.messageText, message.text);
expect(entity.pinned, message.pinned); expect(entity.pinned, message.pinned);
expect(entity.pinExpires, isSameDateAs(message.pinExpires!)); expect(entity.pinExpires, isSameDateAs(message.pinExpires));
expect(entity.pinnedAt, isSameDateAs(message.pinnedAt!)); expect(entity.pinnedAt, isSameDateAs(message.pinnedAt));
expect(entity.pinnedByUserId, message.pinnedBy!.id); expect(entity.pinnedByUserId, message.pinnedBy!.id);
expect(entity.reactionCounts, message.reactionCounts); expect(entity.reactionCounts, message.reactionCounts);
expect(entity.reactionScores, message.reactionScores); expect(entity.reactionScores, message.reactionScores);
@@ -89,11 +89,11 @@ void main() {
expect(message.updatedAt, isSameDateAs(entity.updatedAt)); expect(message.updatedAt, isSameDateAs(entity.updatedAt));
expect(message.extraData, entity.extraData); expect(message.extraData, entity.extraData);
expect(message.user!.id, entity.userId); expect(message.user!.id, entity.userId);
expect(message.deletedAt, isSameDateAs(entity.deletedAt!)); expect(message.deletedAt, isSameDateAs(entity.deletedAt));
expect(message.text, entity.messageText); expect(message.text, entity.messageText);
expect(message.pinned, entity.pinned); expect(message.pinned, entity.pinned);
expect(message.pinExpires, isSameDateAs(entity.pinExpires!)); expect(message.pinExpires, isSameDateAs(entity.pinExpires));
expect(message.pinnedAt, isSameDateAs(entity.pinnedAt!)); expect(message.pinnedAt, isSameDateAs(entity.pinnedAt));
expect(message.pinnedBy!.id, entity.pinnedByUserId); expect(message.pinnedBy!.id, entity.pinnedByUserId);
expect(message.reactionCounts, entity.reactionCounts); expect(message.reactionCounts, entity.reactionCounts);
expect(message.reactionScores, entity.reactionScores); expect(message.reactionScores, entity.reactionScores);
@@ -179,11 +179,11 @@ void main() {
expect(entity.updatedAt, isSameDateAs(message.updatedAt)); expect(entity.updatedAt, isSameDateAs(message.updatedAt));
expect(entity.extraData, message.extraData); expect(entity.extraData, message.extraData);
expect(entity.userId, message.user!.id); expect(entity.userId, message.user!.id);
expect(entity.deletedAt, isSameDateAs(message.deletedAt!)); expect(entity.deletedAt, isSameDateAs(message.deletedAt));
expect(entity.messageText, message.text); expect(entity.messageText, message.text);
expect(entity.pinned, message.pinned); expect(entity.pinned, message.pinned);
expect(entity.pinExpires, isSameDateAs(message.pinExpires!)); expect(entity.pinExpires, isSameDateAs(message.pinExpires));
expect(entity.pinnedAt, isSameDateAs(message.pinnedAt!)); expect(entity.pinnedAt, isSameDateAs(message.pinnedAt));
expect(entity.pinnedByUserId, message.pinnedBy!.id); expect(entity.pinnedByUserId, message.pinnedBy!.id);
expect(entity.reactionCounts, message.reactionCounts); expect(entity.reactionCounts, message.reactionCounts);
expect(entity.reactionScores, message.reactionScores); expect(entity.reactionScores, message.reactionScores);
@@ -27,7 +27,7 @@ void main() {
expect(user.language, entity.language); expect(user.language, entity.language);
expect(user.createdAt, isSameDateAs(entity.createdAt)); expect(user.createdAt, isSameDateAs(entity.createdAt));
expect(user.updatedAt, isSameDateAs(entity.updatedAt)); expect(user.updatedAt, isSameDateAs(entity.updatedAt));
expect(user.lastActive, isSameDateAs(entity.lastActive!)); expect(user.lastActive, isSameDateAs(entity.lastActive));
expect(user.online, entity.online); expect(user.online, entity.online);
expect(user.banned, entity.banned); expect(user.banned, entity.banned);
expect(user.extraData, entity.extraData); expect(user.extraData, entity.extraData);
@@ -52,7 +52,7 @@ void main() {
expect(entity.language, user.language); expect(entity.language, user.language);
expect(entity.createdAt, isSameDateAs(user.createdAt)); expect(entity.createdAt, isSameDateAs(user.createdAt));
expect(entity.updatedAt, isSameDateAs(user.updatedAt)); expect(entity.updatedAt, isSameDateAs(user.updatedAt));
expect(entity.lastActive, isSameDateAs(user.lastActive!)); expect(entity.lastActive, isSameDateAs(user.lastActive));
expect(entity.online, user.online); expect(entity.online, user.online);
expect(entity.banned, user.banned); expect(entity.banned, user.banned);
expect(entity.extraData, user.extraData); expect(entity.extraData, user.extraData);
@@ -1,21 +1,22 @@
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
Matcher isSameDateAs(DateTime targetDate) => Matcher isSameDateAs(DateTime? targetDate) =>
_IsSameDateAs(targetDate: targetDate); _IsSameDateAs(targetDate: targetDate);
class _IsSameDateAs extends Matcher { class _IsSameDateAs extends Matcher {
const _IsSameDateAs({required this.targetDate}); const _IsSameDateAs({required this.targetDate});
final DateTime targetDate; final DateTime? targetDate;
@override @override
bool matches(covariant DateTime date, Map matchState) => bool matches(covariant DateTime date, Map matchState) {
date.year == targetDate.year && return date.year == targetDate?.year &&
date.month == targetDate.month && date.month == targetDate?.month &&
date.day == targetDate.day && date.day == targetDate?.day &&
date.hour == targetDate.hour && date.hour == targetDate?.hour &&
date.minute == targetDate.minute && date.minute == targetDate?.minute &&
date.second == targetDate.second; date.second == targetDate?.second;
}
@override @override
Description describe(Description description) => Description describe(Description description) =>