diff --git a/Realtime/Realtime.Test/Client.cs b/Realtime/Realtime.Test/Client.cs index e43a7bf..6ac6774 100644 --- a/Realtime/Realtime.Test/Client.cs +++ b/Realtime/Realtime.Test/Client.cs @@ -10,15 +10,22 @@ using static NUnit.Framework.TestContext; namespace Realtime.Test { public class Client { + private const string USERNAME1 = "username1"; + private const string PASSWORD1 = "password1"; + + private const string USERNAME2 = "username2"; + private const string PASSWORD2 = "password2"; + [SetUp] - public void SetUp() { - LCLogger.LogDelegate += Utils.Print; - LCApplication.Initialize("ikGGdRE2YcVOemAaRbgp1xGJ-gzGzoHsz", "NUKmuRbdAhg1vrb2wexYo1jo", "https://ikggdre2.lc-cn-n1-shared.com"); + public async Task SetUp() { + Utils.SetUp(); + await NewUser(USERNAME1, PASSWORD1); + await NewUser(USERNAME2, PASSWORD2); } [TearDown] public void TearDown() { - LCLogger.LogDelegate -= Utils.Print; + Utils.TearDown(); } [Test] @@ -34,12 +41,12 @@ namespace Realtime.Test { [Test] public async Task OpenAndCloseByLCUser() { - LCUser user = await LCUser.Login("hello", "world"); + LCUser user = await LCUser.Login(USERNAME1, PASSWORD1); LCIMClient client = new LCIMClient(user); await client.Open(); - LCUser game = await LCUser.Login("game", "play"); + LCUser game = await LCUser.Login(USERNAME2, PASSWORD2); LCIMClient client2 = new LCIMClient(game); await client2.Open(); @@ -134,5 +141,21 @@ namespace Realtime.Test { await tcs.Task; } + + private async Task NewUser(string username, string password) { + try { + await LCUser.Login(username, password); + } catch (LCException e) { + if (e.Code == 211) { + LCUser user1 = new LCUser { + Username = username, + Password = password + }; + await user1.SignUp(); + } else { + throw e; + } + } + } } } diff --git a/Realtime/Realtime.Test/Conversation.cs b/Realtime/Realtime.Test/Conversation.cs index 31f34cc..cf4050f 100644 --- a/Realtime/Realtime.Test/Conversation.cs +++ b/Realtime/Realtime.Test/Conversation.cs @@ -16,8 +16,7 @@ namespace Realtime.Test { [SetUp] public async Task SetUp() { - LCLogger.LogDelegate += Utils.Print; - LCApplication.Initialize("ikGGdRE2YcVOemAaRbgp1xGJ-gzGzoHsz", "NUKmuRbdAhg1vrb2wexYo1jo", "https://ikggdre2.lc-cn-n1-shared.com"); + Utils.SetUp(); c1 = new LCIMClient(Guid.NewGuid().ToString()); await c1.Open(); c2 = new LCIMClient(Guid.NewGuid().ToString()); @@ -32,7 +31,7 @@ namespace Realtime.Test { await c1.Close(); await c2.Close(); await lean.Close(); - LCLogger.LogDelegate -= Utils.Print; + Utils.TearDown(); } [Test] diff --git a/Realtime/Realtime.Test/ConversationQuery.cs b/Realtime/Realtime.Test/ConversationQuery.cs index 4741ceb..dfdd125 100644 --- a/Realtime/Realtime.Test/ConversationQuery.cs +++ b/Realtime/Realtime.Test/ConversationQuery.cs @@ -1,27 +1,24 @@ using NUnit.Framework; using System.Collections.ObjectModel; using System.Threading.Tasks; -using LeanCloud; -using LeanCloud.Common; using LeanCloud.Realtime; namespace Realtime.Test { public class ConversationQuery { - private string clientId = "hello123"; + private readonly string clientId = "m1"; private LCIMClient client; [SetUp] public async Task SetUp() { - LCLogger.LogDelegate += Utils.Print; - LCApplication.Initialize("ikGGdRE2YcVOemAaRbgp1xGJ-gzGzoHsz", "NUKmuRbdAhg1vrb2wexYo1jo", "https://ikggdre2.lc-cn-n1-shared.com"); + Utils.SetUp(); client = new LCIMClient(clientId); await client.Open(); } [TearDown] public async Task TearDown() { - LCLogger.LogDelegate -= Utils.Print; await client.Close(); + Utils.TearDown(); } [Test] @@ -36,7 +33,7 @@ namespace Realtime.Test { [Test] public async Task QueryMemberConversation() { - string memberId = "cc1"; + string memberId = "m1"; LCIMConversationQuery query = new LCIMConversationQuery(client); query.WhereEqualTo("m", memberId); ReadOnlyCollection conversations = await query.Find(); @@ -45,5 +42,34 @@ namespace Realtime.Test { Assert.True(conversation.MemberIds.Contains(memberId)); } } + + [Test] + public async Task QueryCompact() { + string memberId = "m1"; + LCIMConversationQuery query = new LCIMConversationQuery(client) + .WhereEqualTo("m", memberId); + query.Compact = true; + ReadOnlyCollection conversations = await query.Find(); + foreach (LCIMConversation conversation in conversations) { + Assert.True(conversation.MemberIds.Count == 0); + await conversation.Fetch(); + Assert.True(conversation.MemberIds.Count > 0); + } + } + + [Test] + public async Task QueryWithLastMessage() { + string memberId = "m1"; + LCIMConversationQuery query = new LCIMConversationQuery(client) + .WhereEqualTo("m", memberId); + query.WithLastMessageRefreshed = true; + ReadOnlyCollection conversations = await query.Find(); + foreach (LCIMConversation conversation in conversations) { + Assert.True(!string.IsNullOrEmpty(conversation.LastMessage.Id)); + if (conversation.LastMessage is LCIMBinaryMessage binaryMessage) { + TestContext.WriteLine(System.Text.Encoding.UTF8.GetString(binaryMessage.Data)); + } + } + } } } diff --git a/Realtime/Realtime.Test/Message.cs b/Realtime/Realtime.Test/Message.cs index fefb78f..5fa81dc 100644 --- a/Realtime/Realtime.Test/Message.cs +++ b/Realtime/Realtime.Test/Message.cs @@ -32,8 +32,7 @@ namespace Realtime.Test { [SetUp] public async Task SetUp() { - LCLogger.LogDelegate += Utils.Print; - LCApplication.Initialize("ikGGdRE2YcVOemAaRbgp1xGJ-gzGzoHsz", "NUKmuRbdAhg1vrb2wexYo1jo", "https://ikggdre2.lc-cn-n1-shared.com"); + Utils.SetUp(); m1 = new LCIMClient("m1"); m2 = new LCIMClient("m2"); await m1.Open(); @@ -45,7 +44,7 @@ namespace Realtime.Test { public async Task TearDown() { await m1.Close(); await m2.Close(); - LCLogger.LogDelegate -= Utils.Print; + Utils.TearDown(); } [Test] @@ -76,17 +75,19 @@ namespace Realtime.Test { Assert.NotNull(textMessage.Id); LCFile image = new LCFile("hello", "../../../../../assets/hello.png"); - await image.Save(); LCIMImageMessage imageMessage = new LCIMImageMessage(image); await conversation.Send(imageMessage); Assert.NotNull(imageMessage.Id); LCFile file = new LCFile("apk", "../../../../../assets/test.apk"); - await file.Save(); LCIMFileMessage fileMessage = new LCIMFileMessage(file); await conversation.Send(fileMessage); Assert.NotNull(fileMessage.Id); + LCIMBinaryMessage binaryMessage = new LCIMBinaryMessage(System.Text.Encoding.UTF8.GetBytes("LeanCloud")); + await conversation.Send(binaryMessage); + Assert.NotNull(binaryMessage.Id); + await tcs.Task; } @@ -152,7 +153,7 @@ namespace Realtime.Test { [Test] [Order(4)] public async Task Query() { - ReadOnlyCollection messages = await conversation.QueryMessages(); + ReadOnlyCollection messages = await conversation.QueryMessages(messageType: -6); Assert.Greater(messages.Count, 0); foreach (LCIMMessage message in messages) { Assert.AreEqual(message.ConversationId, conversation.Id); diff --git a/Realtime/Realtime.Test/Throttle.cs b/Realtime/Realtime.Test/Throttle.cs index b0f5efa..0f6d475 100644 --- a/Realtime/Realtime.Test/Throttle.cs +++ b/Realtime/Realtime.Test/Throttle.cs @@ -1,7 +1,6 @@ using NUnit.Framework; using System; using System.Threading.Tasks; -using LeanCloud; using LeanCloud.Realtime; using LeanCloud.Realtime.Internal.Protocol; @@ -14,8 +13,7 @@ namespace Realtime.Test { [SetUp] public async Task SetUp() { - LCLogger.LogDelegate += Utils.Print; - LCApplication.Initialize("ikGGdRE2YcVOemAaRbgp1xGJ-gzGzoHsz", "NUKmuRbdAhg1vrb2wexYo1jo", "https://ikggdre2.lc-cn-n1-shared.com"); + Utils.SetUp(); c1 = new LCIMClient(Guid.NewGuid().ToString()); c2 = new LCIMClient(Guid.NewGuid().ToString()); await c1.Open(); @@ -28,7 +26,7 @@ namespace Realtime.Test { public async Task TearDown() { await c1.Close(); await c2.Close(); - LCLogger.LogDelegate -= Utils.Print; + Utils.TearDown(); } [Test] diff --git a/Realtime/Realtime.Test/Utils.cs b/Realtime/Realtime.Test/Utils.cs index 70aa219..77e42d4 100644 --- a/Realtime/Realtime.Test/Utils.cs +++ b/Realtime/Realtime.Test/Utils.cs @@ -1,10 +1,18 @@ using System; using LeanCloud; -using LeanCloud.Common; using NUnit.Framework; namespace Realtime.Test { public static class Utils { + internal static void SetUp() { + LCLogger.LogDelegate += Print; + LCApplication.Initialize("3zWMOXuO9iSdnjXM942i6DdI-gzGzoHsz", "bkwiNq4Tj417eUaHlTWS5sPm", "https://3zwmoxuo.lc-cn-n1-shared.com"); + } + + internal static void TearDown() { + LCLogger.LogDelegate -= Print; + } + internal static void Print(LCLogLevel level, string info) { switch (level) { case LCLogLevel.Debug: