< Summary

Class:TaskbarHUDShould
Assembly:TaskbarHUDTests
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/TaskbarHUD/Tests/TaskbarHUDShould.cs
Covered lines:130
Uncovered lines:0
Coverable lines:130
Total lines:252
Line coverage:100% (130 of 130)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
TaskbarHUDShould()0%110100%
SetUp()0%330100%
TearDown()0%10100100%
AddWorldChatWindowProperly()0%110100%
AddFriendWindowProperly()0%110100%
AddSettingsWindowProperly()0%110100%
AddHelpAndSupportWindowProperly()0%110100%
AddExploreWindowProperly()0%110100%
AddControlsMoreButtonProperly()0%110100%
ToggleWindowsProperly()0%110100%
ToggleBarVisibilityProperly()0%110100%
AddPortableExperienceItemProperly()0%110100%
RemovePortableExperienceItemProperly()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/TaskbarHUD/Tests/TaskbarHUDShould.cs

#LineLine coverage
 1using DCL.HelpAndSupportHUD;
 2using DCL.SettingsPanelHUD;
 3using NUnit.Framework;
 4using System.Collections;
 5using UnityEngine;
 6using UnityEngine.TestTools;
 7
 8public class TaskbarHUDShould : IntegrationTestSuite_Legacy
 9{
 10    private TaskbarHUDController controller;
 11    private TaskbarHUDView view;
 12
 113    private readonly FriendsController_Mock friendsController = new FriendsController_Mock();
 114    private readonly ChatController_Mock chatController = new ChatController_Mock();
 15
 16    private GameObject userProfileGO;
 17    private PrivateChatWindowHUDController privateChatController;
 18    private FriendsHUDController friendsHudController;
 19    private WorldChatWindowHUDController worldChatWindowController;
 20    private SettingsPanelHUDController settingsPanelHudController;
 21    private HelpAndSupportHUDController helpAndSupportHUDController;
 22    private ExploreHUDController exploreHUDController;
 23
 1024    protected override bool justSceneSetUp => true;
 25
 26    protected override IEnumerator SetUp()
 27    {
 1028        yield return base.SetUp();
 29
 1030        CommonScriptableObjects.rendererState.Set(true);
 31
 1032        userProfileGO = new GameObject();
 33
 1034        controller = new TaskbarHUDController();
 1035        controller.Initialize(null, chatController, null, null, null);
 1036        view = controller.view;
 37
 1038        Assert.IsTrue(view != null, "Taskbar view is null?");
 1039        Assert.IsTrue(view.moreButton.gameObject.activeSelf, "More button is not actived?");
 1040        Assert.IsTrue(CommonScriptableObjects.isTaskbarHUDInitialized, "Taskbar controller is not initialized?");
 1041    }
 42
 43    protected override IEnumerator TearDown()
 44    {
 1045        yield return null;
 46
 1047        privateChatController?.Dispose();
 1048        worldChatWindowController?.Dispose();
 1049        friendsHudController?.Dispose();
 1050        settingsPanelHudController?.Dispose();
 1051        helpAndSupportHUDController?.Dispose();
 1052        exploreHUDController?.Dispose();
 53
 1054        controller.Dispose();
 1055        UnityEngine.Object.Destroy(userProfileGO);
 56
 1057        yield return base.TearDown();
 1058    }
 59
 60    [Test]
 61    public void AddWorldChatWindowProperly()
 62    {
 163        worldChatWindowController = new WorldChatWindowHUDController();
 164        worldChatWindowController.Initialize(null, null);
 165        controller.AddWorldChatWindow(worldChatWindowController);
 66
 167        Assert.IsTrue(worldChatWindowController.view.transform.parent == view.leftWindowContainer,
 68            "Chat window isn't inside taskbar window container!");
 169        Assert.IsTrue(worldChatWindowController.view.gameObject.activeSelf, "Chat window is disabled!");
 170    }
 71
 72    [Test]
 73    public void AddFriendWindowProperly()
 74    {
 175        friendsHudController = new FriendsHUDController();
 176        friendsHudController.Initialize(null, null);
 177        controller.AddFriendsWindow(friendsHudController);
 78
 179        Assert.IsTrue(friendsHudController.view.transform.parent == view.leftWindowContainer,
 80            "Friends window isn't inside taskbar window container!");
 181        Assert.IsTrue(friendsHudController.view.gameObject.activeSelf, "Friends window is disabled!");
 182    }
 83
 84    [Test]
 85    public void AddSettingsWindowProperly()
 86    {
 187        settingsPanelHudController = new SettingsPanelHUDController();
 188        controller.AddSettingsWindow(settingsPanelHudController);
 89
 190        Assert.IsTrue(settingsPanelHudController.view.gameObject.activeSelf, "Settings window is disabled!");
 191    }
 92
 93    [Test]
 94    public void AddHelpAndSupportWindowProperly()
 95    {
 196        helpAndSupportHUDController = new HelpAndSupportHUDController();
 197        controller.AddHelpAndSupportWindow(helpAndSupportHUDController);
 98
 199        Assert.IsTrue(helpAndSupportHUDController.view.gameObject.activeSelf, "Help and Support window is disabled!");
 1100    }
 101
 102    [Test]
 103    public void AddExploreWindowProperly()
 104    {
 1105        exploreHUDController = new ExploreHUDController();
 1106        exploreHUDController.Initialize(friendsController);
 1107        controller.AddExploreWindow(exploreHUDController);
 108
 1109        Assert.IsTrue(exploreHUDController.view.gameObject.activeSelf, "Explore window is disabled!");
 1110    }
 111
 112    [Test]
 113    public void AddControlsMoreButtonProperly()
 114    {
 1115        controller.AddControlsMoreOption();
 116
 1117        Assert.IsTrue(view.moreMenu.controlsButton.mainButton.IsActive(), "Controls more button is disabled!");
 1118    }
 119
 120    [Test]
 121    public void ToggleWindowsProperly()
 122    {
 1123        privateChatController = new PrivateChatWindowHUDController();
 1124        privateChatController.Initialize(chatController);
 1125        controller.AddPrivateChatWindow(privateChatController);
 126
 127        const string badPositionMsg =
 128            "Anchored position should be zero or it won't be correctly placed inside the taskbar";
 129        const string badPivotMsg = "Pivot should be zero or it won't be correctly placed inside the taskbar";
 130
 1131        RectTransform rt = privateChatController.view.transform as RectTransform;
 1132        Assert.AreEqual(Vector2.zero, rt.anchoredPosition, badPositionMsg);
 1133        Assert.AreEqual(Vector2.zero, rt.pivot, badPivotMsg);
 134
 1135        worldChatWindowController = new WorldChatWindowHUDController();
 1136        worldChatWindowController.Initialize(chatController, null);
 1137        controller.AddWorldChatWindow(worldChatWindowController);
 138
 1139        rt = worldChatWindowController.view.transform as RectTransform;
 1140        Assert.AreEqual(Vector2.zero, rt.anchoredPosition, badPositionMsg);
 1141        Assert.AreEqual(Vector2.zero, rt.pivot, badPivotMsg);
 142
 1143        friendsHudController = new FriendsHUDController();
 1144        friendsHudController.Initialize(friendsController, UserProfile.GetOwnUserProfile());
 1145        controller.AddFriendsWindow(friendsHudController);
 146
 1147        rt = friendsHudController.view.transform as RectTransform;
 1148        Assert.AreEqual(Vector2.zero, rt.anchoredPosition, badPositionMsg);
 1149        Assert.AreEqual(Vector2.zero, rt.pivot, badPivotMsg);
 150
 1151        TestHelpers_Friends.FakeAddFriend(friendsController, friendsHudController.view, "test-1");
 1152        TestHelpers_Chat.FakePrivateChatMessageFrom(chatController, "test-1", "test message!");
 153
 1154        var buttonList = view.GetButtonList();
 155
 1156        Assert.AreEqual(8, buttonList.Count, "Chat head is missing when receiving a private message?");
 157
 1158        Assert.IsFalse(view.chatButton.toggledOn);
 1159        Assert.IsTrue(buttonList[2] is ChatHeadButton);
 160
 1161        ChatHeadButton headButton = buttonList[2] as ChatHeadButton;
 1162        Assert.IsFalse(headButton.toggledOn);
 1163        Assert.IsTrue(headButton.toggleButton.interactable);
 164
 165        //NOTE(Brian): Toggle chat head on and test it works as intended
 1166        headButton.toggleButton.onClick.Invoke();
 167
 1168        Assert.IsTrue(headButton.lineOnIndicator.isVisible);
 1169        Assert.IsFalse(view.friendsButton.lineOnIndicator.isVisible);
 1170        Assert.IsFalse(view.chatButton.lineOnIndicator.isVisible);
 1171        Assert.IsTrue(controller.privateChatWindowHud.view.gameObject.activeInHierarchy);
 172
 173        //NOTE(Brian): Toggle friends window on and test all other windows are untoggled
 1174        view.friendsButton.toggleButton.onClick.Invoke();
 175
 1176        Assert.IsFalse(controller.privateChatWindowHud.view.gameObject.activeInHierarchy);
 1177        Assert.IsFalse(headButton.lineOnIndicator.isVisible);
 1178        Assert.IsTrue(view.friendsButton.lineOnIndicator.isVisible);
 1179        Assert.IsFalse(view.chatButton.lineOnIndicator.isVisible);
 180
 181        //NOTE(Brian): Toggle friends window off and test all other windows are untoggled
 1182        view.friendsButton.toggleButton.onClick.Invoke();
 183
 1184        Assert.IsFalse(controller.privateChatWindowHud.view.gameObject.activeInHierarchy);
 1185        Assert.IsFalse(headButton.lineOnIndicator.isVisible);
 1186        Assert.IsFalse(view.friendsButton.lineOnIndicator.isVisible);
 187
 188        //NOTE(Brian): Toggle friends on, and then chat button on. Then check if world chat window is showing up.
 1189        view.friendsButton.toggleButton.onClick.Invoke();
 1190        view.chatButton.toggleButton.onClick.Invoke();
 191
 1192        Assert.IsTrue(controller.worldChatWindowHud.view.gameObject.activeInHierarchy);
 1193        Assert.IsFalse(controller.friendsHud.view.gameObject.activeInHierarchy);
 1194        Assert.IsFalse(view.friendsButton.lineOnIndicator.isVisible);
 1195    }
 196
 197    [Test]
 198    public void ToggleBarVisibilityProperly()
 199    {
 1200        view.moreMenu.collapseBarButton.mainButton.onClick.Invoke();
 201
 1202        Assert.IsFalse(view.isBarVisible, "The bar should not be visible!");
 1203        Assert.IsFalse(view.moreMenu.collapseIcon.activeSelf, "The collapse icon should not be actived!");
 1204        Assert.IsFalse(view.moreMenu.collapseText.activeSelf, "The collapse text should not be actived!");
 1205        Assert.IsTrue(view.moreMenu.expandIcon.activeSelf, "The expand icon should be actived!");
 1206        Assert.IsTrue(view.moreMenu.expandText.activeSelf, "The expand text should be actived!");
 207
 1208        view.moreMenu.collapseBarButton.mainButton.onClick.Invoke();
 209
 1210        Assert.IsTrue(view.isBarVisible, "The bar should be visible!");
 1211        Assert.IsTrue(view.moreMenu.collapseIcon.activeSelf, "The collapse icon should be actived!");
 1212        Assert.IsTrue(view.moreMenu.collapseText.activeSelf, "The collapse text should be actived!");
 1213        Assert.IsFalse(view.moreMenu.expandIcon.activeSelf, "The expand icon should not be actived!");
 1214        Assert.IsFalse(view.moreMenu.expandText.activeSelf, "The expand text should not be actived!");
 1215    }
 216
 217    [Test]
 218    public void AddPortableExperienceItemProperly()
 219    {
 220        // Arrange
 1221        string testPEId = "test-pe";
 222
 223        // Act
 1224        view.AddPortableExperienceElement(testPEId, "Test PE", "");
 225
 226        // Assert
 1227        Assert.IsTrue(view.portableExperiencesDiv.activeSelf, "The Portable Experiences Div should be actived!");
 1228        var newPE = view.rightButtonsContainer.GetComponentInChildren<PortableExperienceTaskbarItem>();
 1229        Assert.IsNotNull(newPE, "There should exists a PortableExperienceTaskbarItem as child!");
 1230        Assert.AreEqual(0, newPE.gameObject.transform.GetSiblingIndex(), "The sibling index for the new Portable Experie
 1231        Assert.IsTrue(view.activePortableExperienceItems.ContainsKey(testPEId), "The activePortableExperienceItems dicti
 1232        Assert.IsTrue(view.activePortableExperiencesPoolables.ContainsKey(testPEId), "The activePortableExperiencesPoola
 1233    }
 234
 235    [Test]
 236    public void RemovePortableExperienceItemProperly()
 237    {
 238        // Arrange
 1239        string testPEId = "test-pe";
 240
 241        // Act
 1242        view.AddPortableExperienceElement(testPEId, "Test PE", "");
 1243        view.RemovePortableExperienceElement(testPEId);
 244
 245        // Assert
 1246        Assert.IsFalse(view.portableExperiencesDiv.activeSelf, "The Portable Experiences Div should not be actived!");
 1247        var newPE = view.rightButtonsContainer.GetComponentInChildren<PortableExperienceTaskbarItem>();
 1248        Assert.IsNull(newPE, "There should not exists a PortableExperienceTaskbarItem as child!");
 1249        Assert.IsFalse(view.activePortableExperienceItems.ContainsKey(testPEId), "The activePortableExperienceItems dict
 1250        Assert.IsFalse(view.activePortableExperiencesPoolables.ContainsKey(testPEId), "The activePortableExperiencesPool
 1251    }
 252}