< Summary

Class:DCL.Tutorial_Tests.TutorialControllerShould
Assembly:TutorialControllerTests
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Tutorial/Tests/TutorialControllerShould.cs
Covered lines:133
Uncovered lines:6
Coverable lines:139
Total lines:270
Line coverage:95.6% (133 of 139)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
TutorialControllerShould()0%110100%
SetUp()0%110100%
TearDown()0%110100%
ExecuteTutorialStepsFromGenesisPlazaCorrectly()0%330100%
SkipTutorialStepsFromGenesisPlazaCorrectly()0%110100%
ExecuteTutorialStepsFromDeepLinkCorrectly()0%330100%
SkipTutorialStepsFromDeepLinkCorrectly()0%110100%
ExecuteTutorialStepsForResetTutorialCorrectly()0%330100%
SkipTutorialStepsForResetTutorialCorrectly()0%110100%
ExecuteTutorialStepsFromUserThatAlreadyDidTheTutorialCorrectly()0%330100%
SkipTutorialStepsFromUserThatAlreadyDidTheTutorialCorrectly()0%110100%
ShowHideTutorialTeacherCorrectly()0%110100%
SetTutorialTeacherPositionCorrectly()0%110100%
CreateAndConfigureTutorial()0%110100%
DestroyTutorial()0%220100%
ConfigureTutorialForGenesisPlaza()0%220100%
ConfigureTutorialForDeepLink()0%220100%
ConfigureTutorialForResetTutorial()0%220100%
ConfigureTutorialForUserThatAlreadyDidTheTutorial()0%220100%
CreateNewFakeStep()0%110100%
WaitForOnStepStart()0%110100%
WaitForOnStepExecute()0%12300%
WaitForOnStepPlayAnimationForHidding()0%12300%
WaitForOnStepFinished()0%110100%
CheckRunningStep()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Tutorial/Tests/TutorialControllerShould.cs

#LineLine coverage
 1using DCL.Tutorial;
 2using NUnit.Framework;
 3using System.Collections;
 4using System.Collections.Generic;
 5using UnityEngine;
 6using UnityEngine.TestTools;
 7
 8namespace DCL.Tutorial_Tests
 9{
 10    public class TutorialControllerShould
 11    {
 12        private TutorialController tutorialController;
 13        private int currentStepIndex = 0;
 114        private List<TutorialStep> currentSteps = new List<TutorialStep>();
 15
 16        [SetUp]
 2017        public void SetUp() { CreateAndConfigureTutorial(); }
 18
 19        [TearDown]
 2020        public void TearDown() { DestroyTutorial(); }
 21
 22        [UnityTest]
 23        public IEnumerator ExecuteTutorialStepsFromGenesisPlazaCorrectly()
 24        {
 125            ConfigureTutorialForGenesisPlaza();
 26
 127            yield return tutorialController.StartTutorialFromStep(0);
 28
 129            Assert.IsFalse(tutorialController.isRunning);
 130            Assert.IsNull(tutorialController.runningStep);
 131            Assert.IsFalse(CommonScriptableObjects.tutorialActive.Get());
 132        }
 33
 34        [Test]
 35        public void SkipTutorialStepsFromGenesisPlazaCorrectly()
 36        {
 137            ConfigureTutorialForGenesisPlaza();
 38
 139            tutorialController.SkipTutorial();
 40
 141            Assert.IsFalse(tutorialController.isRunning);
 142            Assert.IsNull(tutorialController.runningStep);
 143            Assert.IsFalse(CommonScriptableObjects.tutorialActive.Get());
 144        }
 45
 46        [UnityTest]
 47        public IEnumerator ExecuteTutorialStepsFromDeepLinkCorrectly()
 48        {
 149            ConfigureTutorialForDeepLink();
 50
 151            yield return tutorialController.StartTutorialFromStep(0);
 52
 153            Assert.IsFalse(tutorialController.isRunning);
 154            Assert.IsNull(tutorialController.runningStep);
 155            Assert.IsFalse(CommonScriptableObjects.tutorialActive.Get());
 156        }
 57
 58        [Test]
 59        public void SkipTutorialStepsFromDeepLinkCorrectly()
 60        {
 161            ConfigureTutorialForDeepLink();
 62
 163            tutorialController.SkipTutorial();
 64
 165            Assert.IsFalse(tutorialController.isRunning);
 166            Assert.IsNull(tutorialController.runningStep);
 167            Assert.IsFalse(CommonScriptableObjects.tutorialActive.Get());
 168        }
 69
 70        [UnityTest]
 71        public IEnumerator ExecuteTutorialStepsForResetTutorialCorrectly()
 72        {
 173            ConfigureTutorialForResetTutorial();
 74
 175            yield return tutorialController.StartTutorialFromStep(0);
 76
 177            Assert.IsFalse(tutorialController.isRunning);
 178            Assert.IsNull(tutorialController.runningStep);
 179            Assert.IsFalse(tutorialController.tutorialReset);
 180            Assert.IsFalse(CommonScriptableObjects.tutorialActive.Get());
 181        }
 82
 83        [Test]
 84        public void SkipTutorialStepsForResetTutorialCorrectly()
 85        {
 186            ConfigureTutorialForResetTutorial();
 87
 188            tutorialController.SkipTutorial();
 89
 190            Assert.IsFalse(tutorialController.isRunning);
 191            Assert.IsNull(tutorialController.runningStep);
 192            Assert.IsFalse(tutorialController.tutorialReset);
 193            Assert.IsFalse(CommonScriptableObjects.tutorialActive.Get());
 194        }
 95
 96        [UnityTest]
 97        public IEnumerator ExecuteTutorialStepsFromUserThatAlreadyDidTheTutorialCorrectly()
 98        {
 199            ConfigureTutorialForUserThatAlreadyDidTheTutorial();
 100
 1101            yield return tutorialController.StartTutorialFromStep(0);
 102
 1103            Assert.IsFalse(tutorialController.isRunning);
 1104            Assert.IsNull(tutorialController.runningStep);
 1105            Assert.IsFalse(CommonScriptableObjects.tutorialActive.Get());
 1106        }
 107
 108        [Test]
 109        public void SkipTutorialStepsFromUserThatAlreadyDidTheTutorialCorrectly()
 110        {
 1111            ConfigureTutorialForUserThatAlreadyDidTheTutorial();
 112
 1113            tutorialController.SkipTutorial();
 114
 1115            Assert.IsFalse(tutorialController.isRunning);
 1116            Assert.IsNull(tutorialController.runningStep);
 1117            Assert.IsFalse(CommonScriptableObjects.tutorialActive.Get());
 1118        }
 119
 120        [Test]
 121        public void ShowHideTutorialTeacherCorrectly()
 122        {
 1123            tutorialController.ShowTeacher3DModel(true);
 1124            Assert.IsTrue(tutorialController.teacherRawImage.gameObject.activeSelf);
 125
 1126            tutorialController.ShowTeacher3DModel(false);
 1127            Assert.IsFalse(tutorialController.teacherRawImage.gameObject.activeSelf);
 1128        }
 129
 130        [Test]
 131        public void SetTutorialTeacherPositionCorrectly()
 132        {
 1133            Vector3 oldPosition = tutorialController.teacherRawImage.rectTransform.position;
 1134            tutorialController.SetTeacherPosition(new Vector2(10, 30), false);
 1135            Assert.IsTrue(tutorialController.teacherRawImage.rectTransform.position != oldPosition);
 136
 1137            oldPosition = tutorialController.teacherRawImage.rectTransform.position;
 1138            tutorialController.SetTeacherPosition(new Vector2(50, 20), false);
 1139            Assert.IsTrue(tutorialController.teacherRawImage.rectTransform.position != oldPosition);
 1140        }
 141
 142        private void CreateAndConfigureTutorial()
 143        {
 10144            tutorialController = GameObject.Instantiate(Resources.Load<GameObject>("TutorialController")).GetComponent<T
 10145            tutorialController.stepsOnGenesisPlaza.Clear();
 10146            tutorialController.stepsFromDeepLink.Clear();
 10147            tutorialController.stepsFromReset.Clear();
 10148            tutorialController.stepsFromUserThatAlreadyDidTheTutorial.Clear();
 10149            tutorialController.timeBetweenSteps = 0f;
 10150            tutorialController.sendStats = false;
 10151            tutorialController.debugRunTutorial = false;
 10152            tutorialController.tutorialReset = false;
 10153            tutorialController.userAlreadyDidTheTutorial = false;
 10154        }
 155
 156        private void DestroyTutorial()
 157        {
 100158            foreach (var step in currentSteps)
 159            {
 40160                GameObject.Destroy(step);
 161            }
 162
 10163            GameObject.Destroy(tutorialController.gameObject);
 10164            currentSteps.Clear();
 10165            currentStepIndex = 0;
 10166        }
 167
 168        private void ConfigureTutorialForGenesisPlaza()
 169        {
 24170            for (int i = 0; i < 5; i++)
 171            {
 10172                tutorialController.stepsOnGenesisPlaza.Add(CreateNewFakeStep());
 173            }
 174
 2175            currentStepIndex = 0;
 2176            currentSteps = tutorialController.stepsOnGenesisPlaza;
 177
 2178            tutorialController.playerIsInGenesisPlaza = true;
 2179            tutorialController.isRunning = true;
 2180            CommonScriptableObjects.tutorialActive.Set(true);
 2181        }
 182
 183        private void ConfigureTutorialForDeepLink()
 184        {
 24185            for (int i = 0; i < 5; i++)
 186            {
 10187                tutorialController.stepsFromDeepLink.Add(CreateNewFakeStep());
 188            }
 189
 2190            currentStepIndex = 0;
 2191            currentSteps = tutorialController.stepsFromDeepLink;
 192
 2193            tutorialController.playerIsInGenesisPlaza = false;
 2194            tutorialController.openedFromDeepLink = true;
 2195            tutorialController.isRunning = true;
 2196            CommonScriptableObjects.tutorialActive.Set(true);
 2197        }
 198
 199        private void ConfigureTutorialForResetTutorial()
 200        {
 24201            for (int i = 0; i < 5; i++)
 202            {
 10203                tutorialController.stepsFromReset.Add(CreateNewFakeStep());
 204            }
 205
 2206            currentStepIndex = 0;
 2207            currentSteps = tutorialController.stepsFromReset;
 208
 2209            tutorialController.tutorialReset = true;
 2210            tutorialController.playerIsInGenesisPlaza = false;
 2211            tutorialController.isRunning = true;
 2212            CommonScriptableObjects.tutorialActive.Set(true);
 2213        }
 214
 215        private void ConfigureTutorialForUserThatAlreadyDidTheTutorial()
 216        {
 24217            for (int i = 0; i < 5; i++)
 218            {
 10219                tutorialController.stepsFromUserThatAlreadyDidTheTutorial.Add(CreateNewFakeStep());
 220            }
 221
 2222            currentStepIndex = 0;
 2223            currentSteps = tutorialController.stepsFromUserThatAlreadyDidTheTutorial;
 224
 2225            tutorialController.userAlreadyDidTheTutorial = true;
 2226            tutorialController.isRunning = true;
 2227            CommonScriptableObjects.tutorialActive.Set(true);
 2228        }
 229
 230        private TutorialStep_Mock CreateNewFakeStep()
 231        {
 40232            GameObject newStepObject = new GameObject("FakeStep");
 40233            TutorialStep_Mock newStep = newStepObject.AddComponent<TutorialStep_Mock>();
 40234            newStep.letInstantiation = false;
 40235            newStep.customOnStepStart = WaitForOnStepStart;
 40236            newStep.customOnStepExecute = WaitForOnStepExecute;
 40237            newStep.customOnStepPlayAnimationForHidding = WaitForOnStepPlayAnimationForHidding;
 40238            newStep.customOnStepFinished = WaitForOnStepFinished;
 40239            return newStep;
 240        }
 241
 40242        private void WaitForOnStepStart() { CheckRunningStep(); }
 243
 244        private IEnumerator WaitForOnStepExecute()
 245        {
 0246            CheckRunningStep();
 0247            yield return null;
 0248        }
 249
 250        private IEnumerator WaitForOnStepPlayAnimationForHidding()
 251        {
 0252            CheckRunningStep();
 0253            yield return null;
 0254        }
 255
 256        private void WaitForOnStepFinished()
 257        {
 20258            CheckRunningStep();
 20259            currentStepIndex++;
 20260        }
 261
 262        private void CheckRunningStep()
 263        {
 40264            Assert.IsTrue(tutorialController.isRunning);
 40265            Assert.IsNotNull(tutorialController.runningStep);
 40266            Assert.IsTrue(currentSteps[currentStepIndex] == tutorialController.runningStep);
 40267            Assert.IsTrue(CommonScriptableObjects.tutorialActive.Get());
 40268        }
 269    }
 270}