Skip to content

Commit d455b0d

Browse files
committed
test(base): Use common data for store tests
1 parent c79e62d commit d455b0d

File tree

6 files changed

+148
-129
lines changed

6 files changed

+148
-129
lines changed

crates/matrix-sdk-base/src/store/memory_store.rs

Lines changed: 43 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -588,107 +588,105 @@ impl StateStore for MemoryStore {
588588

589589
#[cfg(test)]
590590
mod test {
591-
use matrix_sdk_test::async_test;
591+
use matrix_sdk_test::{async_test, test_json};
592592
use ruma::{
593-
api::client::r0::media::get_content_thumbnail::Method, event_id, mxc_uri,
594-
receipt::ReceiptType, room_id, uint, user_id, UserId,
593+
api::client::r0::media::get_content_thumbnail::Method,
594+
events::{AnyEphemeralRoomEventContent, AnySyncEphemeralRoomEvent},
595+
mxc_uri,
596+
receipt::ReceiptType,
597+
uint,
595598
};
596-
use serde_json::json;
599+
use serde_json::Value as JsonValue;
597600

598601
use super::{MemoryStore, StateChanges};
599-
use crate::media::{MediaFormat, MediaRequest, MediaThumbnailSize, MediaType};
600-
601-
fn user_id() -> &'static UserId {
602-
user_id!("@example:localhost")
603-
}
602+
use crate::{
603+
media::{MediaFormat, MediaRequest, MediaThumbnailSize, MediaType},
604+
store::test::{first_receipt_event_id, room_id, second_receipt_event_id, user_id},
605+
};
604606

605607
#[async_test]
606608
async fn test_receipts_saving() {
607609
let store = MemoryStore::new();
608610

609-
let room_id = room_id!("!test:localhost");
610-
611-
let first_event_id = event_id!("$1435641916114394fHBLK:matrix.org").to_owned();
612-
let second_event_id = event_id!("$fHBLK1435641916114394:matrix.org").to_owned();
613-
614-
let first_receipt_event = serde_json::from_value(json!({
615-
first_event_id.clone(): {
616-
"m.read": {
617-
user_id().to_owned(): {
618-
"ts": 1436451550453u64
619-
}
620-
}
621-
}
622-
}))
623-
.unwrap();
611+
let user_id = user_id();
612+
let room_id = room_id();
613+
let first_event_id = first_receipt_event_id();
614+
let second_event_id = second_receipt_event_id();
615+
616+
let first_receipt_json: &JsonValue = &test_json::READ_RECEIPT;
617+
let first_receipt_event =
618+
serde_json::from_value::<AnySyncEphemeralRoomEvent>(first_receipt_json.clone())
619+
.unwrap();
620+
let first_receipt_content = match first_receipt_event.content() {
621+
AnyEphemeralRoomEventContent::Receipt(content) => content,
622+
_ => panic!(),
623+
};
624624

625-
let second_receipt_event = serde_json::from_value(json!({
626-
second_event_id.clone(): {
627-
"m.read": {
628-
user_id().to_owned(): {
629-
"ts": 1436451551453u64
630-
}
631-
}
632-
}
633-
}))
634-
.unwrap();
625+
let second_receipt_json: &JsonValue = &test_json::READ_RECEIPT_OTHER;
626+
let second_receipt_event =
627+
serde_json::from_value::<AnySyncEphemeralRoomEvent>(second_receipt_json.clone())
628+
.unwrap();
629+
let second_receipt_content = match second_receipt_event.content() {
630+
AnyEphemeralRoomEventContent::Receipt(content) => content,
631+
_ => panic!(),
632+
};
635633

636634
assert!(store
637-
.get_user_room_receipt_event(room_id, ReceiptType::Read, user_id())
635+
.get_user_room_receipt_event(room_id, ReceiptType::Read, user_id)
638636
.await
639637
.unwrap()
640638
.is_none());
641639
assert!(store
642-
.get_event_room_receipt_events(room_id, ReceiptType::Read, &first_event_id)
640+
.get_event_room_receipt_events(room_id, ReceiptType::Read, first_event_id)
643641
.await
644642
.unwrap()
645643
.is_empty());
646644
assert!(store
647-
.get_event_room_receipt_events(room_id, ReceiptType::Read, &second_event_id)
645+
.get_event_room_receipt_events(room_id, ReceiptType::Read, second_event_id)
648646
.await
649647
.unwrap()
650648
.is_empty());
651649

652650
let mut changes = StateChanges::default();
653-
changes.add_receipts(room_id, first_receipt_event);
651+
changes.add_receipts(room_id, first_receipt_content);
654652

655653
store.save_changes(&changes).await.unwrap();
656654
assert!(store
657-
.get_user_room_receipt_event(room_id, ReceiptType::Read, user_id())
655+
.get_user_room_receipt_event(room_id, ReceiptType::Read, user_id)
658656
.await
659657
.unwrap()
660658
.is_some(),);
661659
assert_eq!(
662660
store
663-
.get_event_room_receipt_events(room_id, ReceiptType::Read, &first_event_id)
661+
.get_event_room_receipt_events(room_id, ReceiptType::Read, first_event_id)
664662
.await
665663
.unwrap()
666664
.len(),
667665
1
668666
);
669667
assert!(store
670-
.get_event_room_receipt_events(room_id, ReceiptType::Read, &second_event_id)
668+
.get_event_room_receipt_events(room_id, ReceiptType::Read, second_event_id)
671669
.await
672670
.unwrap()
673671
.is_empty());
674672

675673
let mut changes = StateChanges::default();
676-
changes.add_receipts(room_id, second_receipt_event);
674+
changes.add_receipts(room_id, second_receipt_content);
677675

678676
store.save_changes(&changes).await.unwrap();
679677
assert!(store
680-
.get_user_room_receipt_event(room_id, ReceiptType::Read, user_id())
678+
.get_user_room_receipt_event(room_id, ReceiptType::Read, user_id)
681679
.await
682680
.unwrap()
683681
.is_some());
684682
assert!(store
685-
.get_event_room_receipt_events(room_id, ReceiptType::Read, &first_event_id)
683+
.get_event_room_receipt_events(room_id, ReceiptType::Read, first_event_id)
686684
.await
687685
.unwrap()
688686
.is_empty());
689687
assert_eq!(
690688
store
691-
.get_event_room_receipt_events(room_id, ReceiptType::Read, &second_event_id)
689+
.get_event_room_receipt_events(room_id, ReceiptType::Read, second_event_id)
692690
.await
693691
.unwrap()
694692
.len(),

crates/matrix-sdk-base/src/store/mod.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,3 +571,24 @@ impl StateChanges {
571571
self.receipts.insert(room_id.to_owned(), event);
572572
}
573573
}
574+
575+
#[cfg(test)]
576+
mod test {
577+
use ruma::{event_id, room_id, user_id, EventId, RoomId, UserId};
578+
579+
pub(crate) fn user_id() -> &'static UserId {
580+
user_id!("@example:localhost")
581+
}
582+
583+
pub(crate) fn room_id() -> &'static RoomId {
584+
room_id!("!test:localhost")
585+
}
586+
587+
pub(crate) fn first_receipt_event_id() -> &'static EventId {
588+
event_id!("$example")
589+
}
590+
591+
pub(crate) fn second_receipt_event_id() -> &'static EventId {
592+
event_id!("$other")
593+
}
594+
}

crates/matrix-sdk-base/src/store/sled_store/mod.rs

Lines changed: 45 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -991,77 +991,43 @@ impl StateStore for SledStore {
991991

992992
#[cfg(test)]
993993
mod test {
994-
use matrix_sdk_test::async_test;
994+
use matrix_sdk_test::{async_test, test_json};
995995
use ruma::{
996996
api::client::r0::media::get_content_thumbnail::Method,
997-
event_id,
998997
events::{
999-
room::{
1000-
member::{MembershipState, RoomMemberEventContent},
1001-
power_levels::RoomPowerLevelsEventContent,
1002-
},
1003-
AnySyncStateEvent, EventType, Unsigned,
998+
AnyEphemeralRoomEventContent, AnySyncEphemeralRoomEvent, AnySyncStateEvent, EventType,
1004999
},
10051000
mxc_uri,
10061001
receipt::ReceiptType,
1007-
room_id,
10081002
serde::Raw,
1009-
uint, user_id, MilliSecondsSinceUnixEpoch, UserId,
1003+
uint,
10101004
};
1011-
use serde_json::json;
1005+
use serde_json::Value as JsonValue;
10121006

10131007
use super::{Result, SledStore, StateChanges};
10141008
use crate::{
10151009
deserialized_responses::MemberEvent,
10161010
media::{MediaFormat, MediaRequest, MediaThumbnailSize, MediaType},
1011+
store::test::{first_receipt_event_id, room_id, second_receipt_event_id, user_id},
10171012
StateStore,
10181013
};
10191014

1020-
fn user_id() -> &'static UserId {
1021-
user_id!("@example:localhost")
1022-
}
1023-
1024-
fn power_level_event() -> Raw<AnySyncStateEvent> {
1025-
let content = RoomPowerLevelsEventContent::default();
1026-
1027-
let event = json!({
1028-
"event_id": "$h29iv0s8:example.com",
1029-
"content": content,
1030-
"sender": user_id(),
1031-
"type": "m.room.power_levels",
1032-
"origin_server_ts": 0u64,
1033-
"state_key": "",
1034-
"unsigned": Unsigned::default(),
1035-
});
1036-
1037-
serde_json::from_value(event).unwrap()
1038-
}
1039-
1040-
fn membership_event() -> MemberEvent {
1041-
MemberEvent {
1042-
event_id: event_id!("$h29iv0s8:example.com").to_owned(),
1043-
content: RoomMemberEventContent::new(MembershipState::Join),
1044-
sender: user_id().to_owned(),
1045-
origin_server_ts: MilliSecondsSinceUnixEpoch::now(),
1046-
state_key: user_id().to_owned(),
1047-
prev_content: None,
1048-
unsigned: Unsigned::default(),
1049-
}
1050-
}
1051-
10521015
#[async_test]
10531016
async fn test_member_saving() {
10541017
let store = SledStore::open().unwrap();
1055-
let room_id = room_id!("!test:localhost");
1018+
1019+
let room_id = room_id();
10561020
let user_id = user_id();
10571021

10581022
assert!(store.get_member_event(room_id, user_id).await.unwrap().is_none());
10591023
let mut changes = StateChanges::default();
1024+
let json: &JsonValue = &test_json::MEMBER;
1025+
let membership_event = serde_json::from_value::<MemberEvent>(json.clone()).unwrap();
10601026
changes
10611027
.members
10621028
.entry(room_id.to_owned())
10631029
.or_default()
1064-
.insert(user_id.to_owned(), membership_event());
1030+
.insert(user_id.to_owned(), membership_event);
10651031

10661032
store.save_changes(&changes).await.unwrap();
10671033
assert!(store.get_member_event(room_id, user_id).await.unwrap().is_some());
@@ -1073,9 +1039,10 @@ mod test {
10731039
#[async_test]
10741040
async fn test_power_level_saving() {
10751041
let store = SledStore::open().unwrap();
1076-
let room_id = room_id!("!test:localhost");
1042+
let room_id = room_id();
10771043

1078-
let raw_event = power_level_event();
1044+
let json: &JsonValue = &test_json::POWER_LEVELS;
1045+
let raw_event = serde_json::from_value::<Raw<AnySyncStateEvent>>(json.clone()).unwrap();
10791046
let event = raw_event.deserialize().unwrap();
10801047

10811048
assert!(store
@@ -1098,89 +1065,85 @@ mod test {
10981065
async fn test_receipts_saving() {
10991066
let store = SledStore::open().unwrap();
11001067

1101-
let room_id = room_id!("!test:localhost");
1102-
1103-
let first_event_id = event_id!("$1435641916114394fHBLK:matrix.org").to_owned();
1104-
let second_event_id = event_id!("$fHBLK1435641916114394:matrix.org").to_owned();
1068+
let user_id = user_id();
1069+
let room_id = room_id();
1070+
let first_event_id = first_receipt_event_id();
1071+
let second_event_id = second_receipt_event_id();
1072+
1073+
let first_receipt_json: &JsonValue = &test_json::READ_RECEIPT;
1074+
let first_receipt_event =
1075+
serde_json::from_value::<AnySyncEphemeralRoomEvent>(first_receipt_json.clone())
1076+
.unwrap();
1077+
let first_receipt_content = match first_receipt_event.content() {
1078+
AnyEphemeralRoomEventContent::Receipt(content) => content,
1079+
_ => panic!(),
1080+
};
11051081

1106-
let first_receipt_event = serde_json::from_value(json!({
1107-
first_event_id.clone(): {
1108-
"m.read": {
1109-
user_id().to_owned(): {
1110-
"ts": 1436451550453u64
1111-
}
1112-
}
1113-
}
1114-
}))
1115-
.unwrap();
1116-
1117-
let second_receipt_event = serde_json::from_value(json!({
1118-
second_event_id.clone(): {
1119-
"m.read": {
1120-
user_id().to_owned(): {
1121-
"ts": 1436451551453u64
1122-
}
1123-
}
1124-
}
1125-
}))
1126-
.unwrap();
1082+
let second_receipt_json: &JsonValue = &test_json::READ_RECEIPT_OTHER;
1083+
let second_receipt_event =
1084+
serde_json::from_value::<AnySyncEphemeralRoomEvent>(second_receipt_json.clone())
1085+
.unwrap();
1086+
let second_receipt_content = match second_receipt_event.content() {
1087+
AnyEphemeralRoomEventContent::Receipt(content) => content,
1088+
_ => panic!(),
1089+
};
11271090

11281091
assert!(store
1129-
.get_user_room_receipt_event(room_id, ReceiptType::Read, user_id())
1092+
.get_user_room_receipt_event(room_id, ReceiptType::Read, user_id)
11301093
.await
11311094
.unwrap()
11321095
.is_none());
11331096
assert!(store
1134-
.get_event_room_receipt_events(room_id, ReceiptType::Read, &first_event_id)
1097+
.get_event_room_receipt_events(room_id, ReceiptType::Read, first_event_id)
11351098
.await
11361099
.unwrap()
11371100
.is_empty());
11381101
assert!(store
1139-
.get_event_room_receipt_events(room_id, ReceiptType::Read, &second_event_id)
1102+
.get_event_room_receipt_events(room_id, ReceiptType::Read, second_event_id)
11401103
.await
11411104
.unwrap()
11421105
.is_empty());
11431106

11441107
let mut changes = StateChanges::default();
1145-
changes.add_receipts(room_id, first_receipt_event);
1108+
changes.add_receipts(room_id, first_receipt_content);
11461109

11471110
store.save_changes(&changes).await.unwrap();
11481111
assert!(store
1149-
.get_user_room_receipt_event(room_id, ReceiptType::Read, user_id())
1112+
.get_user_room_receipt_event(room_id, ReceiptType::Read, user_id)
11501113
.await
11511114
.unwrap()
11521115
.is_some(),);
11531116
assert_eq!(
11541117
store
1155-
.get_event_room_receipt_events(room_id, ReceiptType::Read, &first_event_id)
1118+
.get_event_room_receipt_events(room_id, ReceiptType::Read, first_event_id)
11561119
.await
11571120
.unwrap()
11581121
.len(),
11591122
1
11601123
);
11611124
assert!(store
1162-
.get_event_room_receipt_events(room_id, ReceiptType::Read, &second_event_id)
1125+
.get_event_room_receipt_events(room_id, ReceiptType::Read, second_event_id)
11631126
.await
11641127
.unwrap()
11651128
.is_empty());
11661129

11671130
let mut changes = StateChanges::default();
1168-
changes.add_receipts(room_id, second_receipt_event);
1131+
changes.add_receipts(room_id, second_receipt_content);
11691132

11701133
store.save_changes(&changes).await.unwrap();
11711134
assert!(store
1172-
.get_user_room_receipt_event(room_id, ReceiptType::Read, user_id())
1135+
.get_user_room_receipt_event(room_id, ReceiptType::Read, user_id)
11731136
.await
11741137
.unwrap()
11751138
.is_some());
11761139
assert!(store
1177-
.get_event_room_receipt_events(room_id, ReceiptType::Read, &first_event_id)
1140+
.get_event_room_receipt_events(room_id, ReceiptType::Read, first_event_id)
11781141
.await
11791142
.unwrap()
11801143
.is_empty());
11811144
assert_eq!(
11821145
store
1183-
.get_event_room_receipt_events(room_id, ReceiptType::Read, &second_event_id)
1146+
.get_event_room_receipt_events(room_id, ReceiptType::Read, second_event_id)
11841147
.await
11851148
.unwrap()
11861149
.len(),

0 commit comments

Comments
 (0)