test(persistence): add getMessagesByCid along with quotedMessage test in message, pinned message dao.

Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
Sahil Kumar
2021-03-19 17:34:41 +05:30
parent 252783adf6
commit ab9990e5bd
2 changed files with 92 additions and 10 deletions
@@ -16,19 +16,20 @@ void main() {
Future<List<Message>> _prepareTestData(
String cid, {
bool quoted = false,
bool threads = false,
bool mapAllThreadToFirstMessage = false,
int count = 3,
}) async {
final users = List.generate(count, (index) => User(id: 'testUserId$index'));
final messages = List.generate(
count,
(index) => Message(
id: 'testMessageId$cid$index',
type: 'testType',
user: User(id: 'testUserId$index'),
user: users[index],
createdAt: DateTime.now(),
shadowed: math.Random().nextBool(),
showInChannel: math.Random().nextBool(),
replyCount: index,
updatedAt: DateTime.now(),
extraData: {'extra_test_field': 'extraTestData'},
@@ -38,17 +39,34 @@ void main() {
pinnedBy: User(id: 'testUserId$index'),
),
);
final quotedMessages = List.generate(
count,
(index) => Message(
id: 'testQuotedMessageId$cid$index',
type: 'testType',
user: users[index],
createdAt: DateTime.now(),
shadowed: math.Random().nextBool(),
replyCount: index,
updatedAt: DateTime.now(),
extraData: {'extra_test_field': 'extraTestData'},
text: 'Dummy text #$index',
quotedMessageId: messages[index].id,
pinned: math.Random().nextBool(),
pinnedAt: DateTime.now(),
pinnedBy: User(id: 'testUserId$index'),
),
);
final threadMessages = List.generate(
count,
(index) => Message(
id: 'testThreadMessageId$cid$index',
type: 'testType',
user: User(id: 'testUserId$index'),
user: users[index],
parentId:
mapAllThreadToFirstMessage ? messages[0].id : messages[index].id,
createdAt: DateTime.now(),
shadowed: math.Random().nextBool(),
showInChannel: math.Random().nextBool(),
replyCount: index,
updatedAt: DateTime.now(),
extraData: {'extra_test_field': 'extraTestData'},
@@ -58,7 +76,12 @@ void main() {
pinnedBy: User(id: 'testUserId$index'),
),
);
final allMessages = [...messages, if (threads) ...threadMessages];
final allMessages = [
...messages,
if (quoted) ...quotedMessages,
if (threads) ...threadMessages
];
await database.userDao.updateUsers(users);
await messageDao.updateMessages(cid, allMessages);
return allMessages;
}
@@ -241,6 +264,24 @@ void main() {
}
});
test('getMessagesByCid along with quotedMessage', () async {
const cid = 'testCid';
// Should be empty initially
final messages = await messageDao.getMessagesByCid(cid);
expect(messages, isEmpty);
// Preparing test data
final insertedMessages = await _prepareTestData(cid, quoted: true);
expect(insertedMessages, isNotEmpty);
// Fetched message should match the inserted messages
final fetchedMessages = await messageDao.getMessagesByCid(cid);
expect(fetchedMessages.length, insertedMessages.length);
final quoted = fetchedMessages.where((it) => it.quotedMessage != null);
expect(quoted.length, insertedMessages.length / 2);
});
test('getMessagesByCid along with pagination', () async {
const cid = 'testCid';
const pagination = PaginationParams(
@@ -16,19 +16,20 @@ void main() {
Future<List<Message>> _prepareTestData(
String cid, {
bool quoted = false,
bool threads = false,
bool mapAllThreadToFirstMessage = false,
int count = 3,
}) async {
final users = List.generate(count, (index) => User(id: 'testUserId$index'));
final messages = List.generate(
count,
(index) => Message(
id: 'testMessageId$cid$index',
type: 'testType',
user: User(id: 'testUserId$index'),
user: users[index],
createdAt: DateTime.now(),
shadowed: math.Random().nextBool(),
showInChannel: math.Random().nextBool(),
replyCount: index,
updatedAt: DateTime.now(),
extraData: {'extra_test_field': 'extraTestData'},
@@ -38,17 +39,34 @@ void main() {
pinnedBy: User(id: 'testUserId$index'),
),
);
final quotedMessages = List.generate(
count,
(index) => Message(
id: 'testQuotedMessageId$cid$index',
type: 'testType',
user: users[index],
createdAt: DateTime.now(),
shadowed: math.Random().nextBool(),
replyCount: index,
updatedAt: DateTime.now(),
extraData: {'extra_test_field': 'extraTestData'},
text: 'Dummy text #$index',
quotedMessageId: messages[index].id,
pinned: math.Random().nextBool(),
pinnedAt: DateTime.now(),
pinnedBy: User(id: 'testUserId$index'),
),
);
final threadMessages = List.generate(
count,
(index) => Message(
id: 'testThreadMessageId$cid$index',
type: 'testType',
user: User(id: 'testUserId$index'),
user: users[index],
parentId:
mapAllThreadToFirstMessage ? messages[0].id : messages[index].id,
createdAt: DateTime.now(),
shadowed: math.Random().nextBool(),
showInChannel: math.Random().nextBool(),
replyCount: index,
updatedAt: DateTime.now(),
extraData: {'extra_test_field': 'extraTestData'},
@@ -58,7 +76,12 @@ void main() {
pinnedBy: User(id: 'testUserId$index'),
),
);
final allMessages = [...messages, if (threads) ...threadMessages];
final allMessages = [
...messages,
if (quoted) ...quotedMessages,
if (threads) ...threadMessages
];
await database.userDao.updateUsers(users);
await pinnedMessageDao.updateMessages(cid, allMessages);
return allMessages;
}
@@ -242,6 +265,24 @@ void main() {
}
});
test('getMessagesByCid along with quotedMessage', () async {
const cid = 'testCid';
// Should be empty initially
final messages = await pinnedMessageDao.getMessagesByCid(cid);
expect(messages, isEmpty);
// Preparing test data
final insertedMessages = await _prepareTestData(cid, quoted: true);
expect(insertedMessages, isNotEmpty);
// Fetched message should match the inserted messages
final fetchedMessages = await pinnedMessageDao.getMessagesByCid(cid);
expect(fetchedMessages.length, insertedMessages.length);
final quoted = fetchedMessages.where((it) => it.quotedMessage != null);
expect(quoted.length, insertedMessages.length / 2);
});
test('getMessagesByCid along with pagination', () async {
const cid = 'testCid';
const pagination = PaginationParams(