[Tests] Fix user tests

This commit is contained in:
Christian Pauly 2019-08-08 11:54:39 +02:00
parent 1617a8b7d5
commit b4ae8b47f8
7 changed files with 57 additions and 30 deletions

View File

@ -44,7 +44,7 @@ class RawEvent {
/// The user who has sent this event if it is not a global account data event. /// The user who has sent this event if it is not a global account data event.
final String senderId; final String senderId;
User get sender => room.states[senderId] ?? User(senderId: senderId); User get sender => room.states[senderId] ?? User(senderId);
/// The time this event has received at the server. May be null for events like /// The time this event has received at the server. May be null for events like
/// account data. /// account data.

View File

@ -76,7 +76,7 @@ class Room {
for (int i = 0; i < mHeroes.length; i++) { for (int i = 0; i < mHeroes.length; i++) {
User hero = states[mHeroes[i]] != null User hero = states[mHeroes[i]] != null
? states[mHeroes[i]].asUser ? states[mHeroes[i]].asUser
: User(stateKey: mHeroes[i]); : User(mHeroes[i]);
displayname += hero.calcDisplayname() + ", "; displayname += hero.calcDisplayname() + ", ";
} }
return displayname.substring(0, displayname.length - 2); return displayname.substring(0, displayname.length - 2);
@ -155,7 +155,7 @@ class Room {
if (mHeroes.length > 0) { if (mHeroes.length > 0) {
String displayname = ""; String displayname = "";
for (int i = 0; i < mHeroes.length; i++) for (int i = 0; i < mHeroes.length; i++)
displayname += User(senderId: mHeroes[i]).calcDisplayname() + ", "; displayname += User(mHeroes[i]).calcDisplayname() + ", ";
return displayname.substring(0, displayname.length - 2); return displayname.substring(0, displayname.length - 2);
} }
return "Empty chat"; return "Empty chat";

View File

@ -36,7 +36,7 @@ class State extends RawEvent {
/// the overwriting semantics for this piece of room state. /// the overwriting semantics for this piece of room state.
final String stateKey; final String stateKey;
User get stateKeyUser => room.states[stateKey] ?? User(senderId: stateKey); User get stateKeyUser => room.states[stateKey] ?? User(stateKey);
State( State(
{this.prevContent, {this.prevContent,
@ -96,7 +96,7 @@ class State extends RawEvent {
/// stateKey. Otherwise it will be the [type] as a string. /// stateKey. Otherwise it will be the [type] as a string.
String get key => stateKey == null || stateKey.isEmpty ? typeKey : stateKey; String get key => stateKey == null || stateKey.isEmpty ? typeKey : stateKey;
User get asUser => User( User get asUser => User.fromState(
stateKey: stateKey, stateKey: stateKey,
prevContent: prevContent, prevContent: prevContent,
content: content, content: content,

View File

@ -33,7 +33,28 @@ enum Membership { join, invite, leave, ban }
/// Represents a Matrix User which may be a participant in a Matrix Room. /// Represents a Matrix User which may be a participant in a Matrix Room.
class User extends State { class User extends State {
User( factory User(
String id, {
String membership,
String displayName,
String avatarUrl,
Room room,
}) {
Map<String, String> content = {};
if (membership != null) content["membership"] = membership;
if (displayName != null) content["displayname"] = displayName;
if (avatarUrl != null) content["avatar_url"] = avatarUrl;
return User.fromState(
stateKey: id,
content: content,
typeKey: "m.room.member",
roomId: room?.id,
room: room,
time: ChatTime.now(),
);
}
User.fromState(
{dynamic prevContent, {dynamic prevContent,
String stateKey, String stateKey,
dynamic content, dynamic content,

View File

@ -263,8 +263,8 @@ void main() {
test('createGroup', () async { test('createGroup', () async {
final List<User> users = [ final List<User> users = [
User(senderId: "@alice:fakeServer.notExisting"), User("@alice:fakeServer.notExisting"),
User(senderId: "@bob:fakeServer.notExisting") User("@bob:fakeServer.notExisting")
]; ];
final String newID = await matrix.createGroup(users); final String newID = await matrix.createGroup(users);
expect(newID, "!1234:fakeServer.notExisting"); expect(newID, "!1234:fakeServer.notExisting");

View File

@ -229,7 +229,6 @@ void main() {
final dynamic resp = await room.addToDirectChat("Testname"); final dynamic resp = await room.addToDirectChat("Testname");
expect(resp, {}); expect(resp, {});
}); });
});
test("getTimeline", () async { test("getTimeline", () async {
final Timeline timeline = await room.getTimeline(); final Timeline timeline = await room.getTimeline();
@ -246,4 +245,5 @@ void main() {
expect(user.stateKey, "@getme:example.com"); expect(user.stateKey, "@getme:example.com");
expect(user.calcDisplayname(), "You got me"); expect(user.calcDisplayname(), "You got me");
}); });
});
} }

View File

@ -33,14 +33,20 @@ void main() {
final Membership membership = Membership.join; final Membership membership = Membership.join;
final String displayName = "Alice"; final String displayName = "Alice";
final String avatarUrl = ""; final String avatarUrl = "";
final int powerLevel = 50;
final Map<String, dynamic> jsonObj = { final Map<String, dynamic> jsonObj = {
"matrix_id": id, "content": {
"displayname": displayName, "membership": "join",
"avatar_url": avatarUrl, "avatar_url": avatarUrl,
"membership": membership.toString().split('.').last, "displayname": displayName
"power_level": powerLevel, },
"type": "m.room.member",
"event_id": "143273582443PhrSn:example.org",
"room_id": "!636q39766251:example.com",
"sender": id,
"origin_server_ts": 1432735824653,
"unsigned": {"age": 1234},
"state_key": id
}; };
User user = State.fromJson(jsonObj, null).asUser; User user = State.fromJson(jsonObj, null).asUser;
@ -53,9 +59,9 @@ void main() {
}); });
test("calcDisplayname", () async { test("calcDisplayname", () async {
final User user1 = User(senderId: "@alice:example.com"); final User user1 = User("@alice:example.com");
final User user2 = User(senderId: "@alice:example.com"); final User user2 = User("@SuperAlice:example.com");
final User user3 = User(senderId: "@alice:example.com"); final User user3 = User("@alice:example.com");
expect(user1.calcDisplayname(), "alice"); expect(user1.calcDisplayname(), "alice");
expect(user2.calcDisplayname(), "SuperAlice"); expect(user2.calcDisplayname(), "SuperAlice");
expect(user3.calcDisplayname(), "alice"); expect(user3.calcDisplayname(), "alice");