< Summary

Class:Tests.SearchBarViewShould
Assembly:BuilderProjectsPanelTests
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuilderProjectsPanel/Tests/SearchBarViewShould.cs
Covered lines:97
Uncovered lines:0
Coverable lines:97
Total lines:186
Line coverage:100% (97 of 97)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SetUp()0%110100%
TearDown()0%110100%
TriggerSearchWhenUserStopTyping()0%440100%
ShowSpinnerAndClearSearchButton()0%110100%
ShowFilters()0%110100%
TriggerFiltersCallback()0%220100%
ShowSortDropdown()0%110100%
NotShowSortDropdownWhenLessThanTwoSortTypes()0%110100%
TriggerSortTypeCallback()0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuilderProjectsPanel/Tests/SearchBarViewShould.cs

#LineLine coverage
 1using NSubstitute;
 2using NUnit.Framework;
 3using System.Collections;
 4using System.Linq;
 5using UnityEditor;
 6using UnityEngine;
 7using UnityEngine.EventSystems;
 8using UnityEngine.TestTools;
 9using Object = UnityEngine.Object;
 10
 11namespace Tests
 12{
 13    public class SearchBarViewShould
 14    {
 15        private SearchBarView view;
 16
 17        [SetUp]
 18        public void SetUp()
 19        {
 20            const string prefabAssetPath =
 21                "Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuilderProjectsPanel/Prefabs/SearchBar/SearchBarView.pre
 722            var prefab = AssetDatabase.LoadAssetAtPath<SearchBarView>(prefabAssetPath);
 723            view = Object.Instantiate(prefab);
 724        }
 25
 26        [TearDown]
 1427        public void TearDown() { Object.Destroy(view.gameObject); }
 28
 29        [UnityTest]
 30        public IEnumerator TriggerSearchWhenUserStopTyping()
 31        {
 32            const string searchValue = "Something";
 33            const float idleTimeToTriggerSearch = 1;
 34
 135            bool searchTriggered = false;
 136            string searchValueReceived = "";
 137            float searchTriggerTime = 0;
 38
 139            var handler = Substitute.For<ISectionSearchHandler>();
 240            handler.WhenForAnyArgs(a => a.SetSearchString(""))
 41                   .Do(info =>
 42                   {
 143                       searchTriggered = true;
 144                       searchValueReceived = info.Arg<string>();
 145                       searchTriggerTime = Time.unscaledTime;
 146                   });
 47
 148            view.SetSearchBar(handler, null);
 49
 150            float searchTime = Time.unscaledTime;
 51
 152            view.inputField.inputField.text = searchValue;
 153            yield return new WaitForSeconds(idleTimeToTriggerSearch);
 54
 155            Assert.IsTrue(searchTriggered);
 156            Assert.AreEqual(searchValue, searchValueReceived);
 157            Assert.GreaterOrEqual(searchTriggerTime, searchTime + idleTimeToTriggerSearch);
 158        }
 59
 60        [Test]
 61        public void ShowSpinnerAndClearSearchButton()
 62        {
 163            Assert.IsFalse(view.inputField.searchSpinner.activeSelf);
 164            Assert.IsFalse(view.inputField.clearSearchButton.gameObject.activeSelf);
 65
 166            view.inputField.inputField.text = "searchValue";
 67
 168            Assert.IsTrue(view.inputField.searchSpinner.activeSelf);
 169            Assert.IsFalse(view.inputField.clearSearchButton.gameObject.activeSelf);
 70
 171            view.inputField.inputField.onSubmit.Invoke("searchValue");
 72
 173            Assert.IsFalse(view.inputField.searchSpinner.activeSelf);
 174            Assert.IsTrue(view.inputField.clearSearchButton.gameObject.activeSelf);
 75
 176            view.inputField.clearSearchButton.onClick.Invoke();
 77
 178            Assert.IsFalse(view.inputField.searchSpinner.activeSelf);
 179            Assert.IsFalse(view.inputField.clearSearchButton.gameObject.activeSelf);
 180            Assert.AreEqual(string.Empty, view.inputField.inputField.text);
 181        }
 82
 83        [Test]
 84        public void ShowFilters()
 85        {
 186            view.ShowFilters(true, false, false);
 87
 188            Assert.IsTrue(view.ownerToggle.gameObject.activeSelf);
 189            Assert.IsFalse(view.operatorToggle.gameObject.activeSelf);
 190            Assert.IsFalse(view.contributorToggle.gameObject.activeSelf);
 91
 192            view.ShowFilters(false, false, false);
 93
 194            Assert.IsFalse(view.ownerToggle.gameObject.activeSelf);
 195            Assert.IsFalse(view.operatorToggle.gameObject.activeSelf);
 196            Assert.IsFalse(view.contributorToggle.gameObject.activeSelf);
 197        }
 98
 99        [Test]
 100        public void TriggerFiltersCallback()
 101        {
 1102            bool ownerON = false;
 1103            bool operatorON = false;
 1104            bool contributorON = false;
 105
 1106            var handler = Substitute.For<ISectionSearchHandler>();
 2107            handler.WhenForAnyArgs(a => a.SetFilter(false, false, false))
 108                   .Do(info =>
 109                   {
 6110                       ownerON = info.ArgAt<bool>(0);
 6111                       operatorON = info.ArgAt<bool>(1);
 6112                       contributorON = info.ArgAt<bool>(2);
 6113                   });
 114
 1115            view.SetSearchBar(handler, null);
 116
 1117            view.ownerToggle.isOn = true;
 1118            Assert.IsTrue(ownerON);
 1119            Assert.IsFalse(operatorON);
 1120            Assert.IsFalse(contributorON);
 121
 1122            view.operatorToggle.isOn = true;
 1123            Assert.IsFalse(ownerON);
 1124            Assert.IsTrue(operatorON);
 1125            Assert.IsFalse(contributorON);
 126
 1127            view.contributorToggle.isOn = true;
 1128            Assert.IsFalse(ownerON);
 1129            Assert.IsFalse(operatorON);
 1130            Assert.IsTrue(contributorON);
 131
 1132            view.ownerToggle.isOn = false;
 1133            view.operatorToggle.isOn = false;
 1134            view.contributorToggle.isOn = false;
 1135            Assert.IsFalse(ownerON);
 1136            Assert.IsFalse(operatorON);
 1137            Assert.IsFalse(contributorON);
 1138        }
 139
 140        [Test]
 141        public void ShowSortDropdown()
 142        {
 1143            string[] sortTypes = new[] { "Type1", "Type2", "Type3" };
 1144            view.SetSortTypes(sortTypes);
 145
 4146            Assert.IsTrue(view.sortDropdown.activeButtons.TrueForAll(button => sortTypes.Contains(button.label.text)));
 1147            Assert.IsFalse(view.sortDropdown.gameObject.activeSelf);
 148
 1149            view.sortButton.onClick.Invoke();
 1150            Assert.IsTrue(view.sortDropdown.gameObject.activeSelf);
 1151        }
 152
 153        [Test]
 154        public void NotShowSortDropdownWhenLessThanTwoSortTypes()
 155        {
 1156            string[] sortTypes = new[] { "Type1" };
 1157            view.SetSortTypes(sortTypes);
 1158            Assert.IsFalse(view.sortDropdown.gameObject.activeSelf);
 159
 1160            view.sortButton.onClick.Invoke();
 1161            Assert.IsFalse(view.sortDropdown.gameObject.activeSelf);
 1162        }
 163
 164        [Test]
 165        public void TriggerSortTypeCallback()
 166        {
 1167            string selectedSort = "";
 168
 1169            var handler = Substitute.For<ISectionSearchHandler>();
 2170            handler.WhenForAnyArgs(a => a.SetSortType(""))
 171                   .Do(info =>
 172                   {
 1173                       selectedSort = info.Arg<string>();
 1174                   });
 175
 1176            view.SetSearchBar(handler, null);
 177
 1178            string[] sortTypes = new[] { "Type1" };
 1179            view.SetSortTypes(sortTypes);
 1180            ((IPointerDownHandler)view.sortDropdown.activeButtons[0]).OnPointerDown(null);
 181
 1182            Assert.AreEqual(sortTypes[0], selectedSort);
 1183            Assert.AreEqual(sortTypes[0], view.sortTypeLabel.text);
 1184        }
 185    }
 186}