< Summary

Class:PrivateChatWindowHUDShould
Assembly:PrivateChatWindowHUDTests
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/PrivateChatWindow/Tests/PrivateChatWindowHUDShould.cs
Covered lines:107
Uncovered lines:0
Coverable lines:107
Total lines:205
Line coverage:100% (107 of 107)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SetUp()0%330100%
InitializeChatWindowController(...)0%110100%
TearDown()0%330100%
ProcessCurrentMessagesOnControllerInitialize()0%110100%
ReceivesOneMessageProperly()0%110100%
SendChatMessageProperly()0%220100%
CloseOnCloseButtonPressed()0%110100%
CloseOnBackButtonPressed()0%110100%
OpenFriendsHUDOnBackButtonPressed()0%330100%
GetViewEntryModel(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/PrivateChatWindow/Tests/PrivateChatWindowHUDShould.cs

#LineLine coverage
 1using System;
 2using DCL.Interface;
 3using NUnit.Framework;
 4using System.Collections;
 5using System.Collections.Generic;
 6using NSubstitute;
 7using UnityEngine.TestTools;
 8
 9public class PrivateChatWindowHUDShould : IntegrationTestSuite_Legacy
 10{
 11    private PrivateChatWindowHUDController controller;
 12    private PrivateChatWindowHUDView view;
 13
 14    private UserProfileModel ownProfileModel;
 15    private UserProfileModel testProfileModel;
 16
 617    protected override bool justSceneSetUp => true;
 18
 19    protected override IEnumerator SetUp()
 20    {
 621        yield return base.SetUp();
 22
 623        UserProfileController.i.ClearProfilesCatalog();
 24
 625        UserProfile ownProfile = UserProfile.GetOwnUserProfile();
 26
 627        ownProfileModel = new UserProfileModel();
 628        ownProfileModel.userId = "my-user-id";
 629        ownProfileModel.name = "NO_USER";
 630        ownProfile.UpdateData(ownProfileModel, false);
 31
 632        testProfileModel = new UserProfileModel();
 633        testProfileModel.userId = "my-user-id-2";
 634        testProfileModel.name = "TEST_USER";
 635        UserProfileController.i.AddUserProfileToCatalog(testProfileModel);
 36
 37        //NOTE(Brian): This profile is added by the LoadProfile message in the normal flow.
 38        //             Adding this here because its used by the chat flow in ChatMessageToChatEntry.
 639        UserProfileController.i.AddUserProfileToCatalog(ownProfileModel);
 640    }
 41
 42    private void InitializeChatWindowController(IChatController chatController)
 43    {
 644        controller = new PrivateChatWindowHUDController();
 645        controller.Initialize(chatController);
 646        controller.Configure(testProfileModel.userId);
 647        controller.SetVisibility(true);
 648        view = controller.view;
 649    }
 50
 51    protected override IEnumerator TearDown()
 52    {
 653        controller.Dispose();
 654        yield return base.TearDown();
 655    }
 56
 57    [Test]
 58    public void ProcessCurrentMessagesOnControllerInitialize()
 59    {
 160        IChatController chatController = Substitute.For<IChatController>();
 161        chatController.GetEntries()
 62                      .ReturnsForAnyArgs(new List<ChatMessage>
 63                      {
 64                          new ChatMessage(ChatMessage.Type.PRIVATE, testProfileModel.userId, "message1"),
 65                          new ChatMessage(ChatMessage.Type.PRIVATE, testProfileModel.userId, "message2"),
 66                          new ChatMessage(ChatMessage.Type.PRIVATE, testProfileModel.userId, "message3"),
 67                      });
 168        InitializeChatWindowController(chatController);
 69
 170        Assert.AreEqual(3, controller.view.chatHudView.entries.Count);
 71
 172        Assert.AreEqual(ChatMessage.Type.PRIVATE, GetViewEntryModel(0).messageType);
 73        ;
 174        Assert.AreEqual(testProfileModel.userId, GetViewEntryModel(0).senderId);
 175        Assert.AreEqual("message1", GetViewEntryModel(0).bodyText);
 76
 177        Assert.AreEqual(ChatMessage.Type.PRIVATE, GetViewEntryModel(1).messageType);
 78        ;
 179        Assert.AreEqual(testProfileModel.userId, GetViewEntryModel(1).senderId);
 180        Assert.AreEqual("message2", GetViewEntryModel(1).bodyText);
 81
 182        Assert.AreEqual(ChatMessage.Type.PRIVATE, GetViewEntryModel(2).messageType);
 83        ;
 184        Assert.AreEqual(testProfileModel.userId, GetViewEntryModel(2).senderId);
 185        Assert.AreEqual("message3", GetViewEntryModel(2).bodyText);
 186    }
 87
 88    [Test]
 89    public void ReceivesOneMessageProperly()
 90    {
 191        IChatController chatController = Substitute.For<IChatController>();
 192        chatController.GetEntries().ReturnsForAnyArgs(new List<ChatMessage>());
 193        InitializeChatWindowController(chatController);
 94
 195        ChatMessage chatMessage1 = new ChatMessage(ChatMessage.Type.PRIVATE, testProfileModel.userId, "message1");
 196        ChatMessage chatMessage2 = new ChatMessage(ChatMessage.Type.PRIVATE, testProfileModel.userId, "message2");
 197        ChatMessage chatMessage3 = new ChatMessage(ChatMessage.Type.PRIVATE, testProfileModel.userId, "message3");
 198        chatController.OnAddMessage += Raise.Event<Action<ChatMessage>>(chatMessage1);
 199        chatController.OnAddMessage += Raise.Event<Action<ChatMessage>>(chatMessage2);
 1100        chatController.OnAddMessage += Raise.Event<Action<ChatMessage>>(chatMessage3);
 101
 1102        Assert.AreEqual(3, controller.view.chatHudView.entries.Count);
 103
 1104        Assert.AreEqual(ChatMessage.Type.PRIVATE, GetViewEntryModel(0).messageType);
 105        ;
 1106        Assert.AreEqual(testProfileModel.userId, GetViewEntryModel(0).senderId);
 1107        Assert.AreEqual("message1", GetViewEntryModel(0).bodyText);
 108
 1109        Assert.AreEqual(ChatMessage.Type.PRIVATE, GetViewEntryModel(1).messageType);
 110        ;
 1111        Assert.AreEqual(testProfileModel.userId, GetViewEntryModel(1).senderId);
 1112        Assert.AreEqual("message2", GetViewEntryModel(1).bodyText);
 113
 1114        Assert.AreEqual(ChatMessage.Type.PRIVATE, GetViewEntryModel(2).messageType);
 115        ;
 1116        Assert.AreEqual(testProfileModel.userId, GetViewEntryModel(2).senderId);
 1117        Assert.AreEqual("message3", GetViewEntryModel(2).bodyText);
 1118    }
 119
 120    [UnityTest]
 121    public IEnumerator SendChatMessageProperly()
 122    {
 1123        IChatController chatController = Substitute.For<IChatController>();
 1124        chatController.GetEntries().ReturnsForAnyArgs(new List<ChatMessage>());
 1125        InitializeChatWindowController(chatController);
 126
 1127        bool messageWasSent = false;
 128
 1129        System.Action<string, string> messageCallback =
 130            (type, msg) =>
 131            {
 1132                if (type == "SendChatMessage" && msg.Contains("test message"))
 133                {
 1134                    messageWasSent = true;
 135                }
 1136            };
 137
 1138        WebInterface.OnMessageFromEngine += messageCallback;
 1139        controller.resetInputFieldOnSubmit = false;
 1140        controller.SendChatMessage(new ChatMessage() { body = "test message", recipient = "testUser" });
 1141        Assert.IsTrue(messageWasSent);
 1142        Assert.AreEqual("", controller.view.chatHudView.inputField.text);
 1143        WebInterface.OnMessageFromEngine -= messageCallback;
 1144        yield break;
 145    }
 146
 147    [Test]
 148    public void CloseOnCloseButtonPressed()
 149    {
 1150        IChatController chatController = Substitute.For<IChatController>();
 1151        chatController.GetEntries().ReturnsForAnyArgs(new List<ChatMessage>());
 1152        InitializeChatWindowController(chatController);
 153
 1154        controller.SetVisibility(true);
 1155        Assert.AreEqual(true, controller.view.gameObject.activeSelf);
 1156        controller.view.minimizeButton.onClick.Invoke();
 1157        Assert.AreEqual(false, controller.view.gameObject.activeSelf);
 1158    }
 159
 160    [Test]
 161    public void CloseOnBackButtonPressed()
 162    {
 1163        IChatController chatController = Substitute.For<IChatController>();
 1164        chatController.GetEntries().ReturnsForAnyArgs(new List<ChatMessage>());
 1165        InitializeChatWindowController(chatController);
 166
 1167        controller.SetVisibility(true);
 1168        Assert.AreEqual(true, controller.view.gameObject.activeSelf);
 1169        bool pressedBack = false;
 3170        controller.view.OnPressBack += () => { pressedBack = true; };
 1171        controller.view.backButton.onClick.Invoke();
 1172        Assert.IsTrue(pressedBack);
 1173    }
 174
 175    [UnityTest]
 176    public IEnumerator OpenFriendsHUDOnBackButtonPressed()
 177    {
 1178        IChatController chatController = Substitute.For<IChatController>();
 1179        chatController.GetEntries().ReturnsForAnyArgs(new List<ChatMessage>());
 1180        InitializeChatWindowController(chatController);
 181
 182        // Initialize friends HUD
 1183        NotificationsController.i.Initialize(new NotificationHUDController());
 184
 1185        FriendsHUDController friendsHudController = new FriendsHUDController();
 1186        friendsHudController.Initialize(new FriendsController_Mock(), UserProfile.GetOwnUserProfile());
 187
 1188        Assert.IsTrue(view != null, "Friends hud view is null?");
 1189        Assert.IsTrue(controller != null, "Friends hud controller is null?");
 190
 191        // initialize private chat
 1192        controller.SetVisibility(true);
 1193        Assert.AreEqual(true, controller.view.gameObject.activeSelf);
 194
 1195        controller.view.backButton.onClick.Invoke();
 1196        yield return null;
 197
 1198        Assert.AreEqual(true, friendsHudController.view.gameObject.activeSelf);
 199
 1200        friendsHudController.Dispose();
 1201        NotificationsController.i.Dispose();
 1202    }
 203
 18204    private ChatEntry.Model GetViewEntryModel(int index) { return controller.view.chatHudView.entries[index].model; }
 205}