< Summary

Class:Tests.QuestsTrackerHUD.QuestsControllerShould
Assembly:QuestsControllerTests
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/QuestsController/Tests/QuestsControllerShould.cs
Covered lines:99
Uncovered lines:2
Coverable lines:101
Total lines:240
Line coverage:98% (99 of 101)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SetUp()0%110100%
InitializeQuestsProperly()0%110100%
InitializeQuestsFilterQuestsWithoutSections()0%110100%
InitializeQuestsUnpinNotPinnableQuests()0%110100%
InitializeQuestsSetProgressFlags()0%110100%
UpdateQuestProgressUnpinNotPinnableQuests()0%110100%
UpdateQuestProgressProcessNewQuest()0%110100%
UpdateQuestProgressUpdateQuest()0%110100%
UpdateQuestProgressUpdateQuest_Completed()0%110100%
TearDown()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/QuestsController/Tests/QuestsControllerShould.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using DCL;
 3using DCL.QuestsController;
 4using NUnit.Framework;
 5
 6namespace Tests.QuestsTrackerHUD
 7{
 8    public class QuestsControllerShould
 9    {
 10        private QuestsController questsController;
 011        private BaseDictionary<string, QuestModel> quests => DataStore.i.Quests.quests;
 012        private BaseCollection<string> pinnedQuests => DataStore.i.Quests.pinnedQuests;
 13
 14        [SetUp]
 1615        public void SetUp() { questsController = new QuestsController(); }
 16
 17        [Test]
 18        public void InitializeQuestsProperly()
 19        {
 120            questsController.InitializeQuests(new List<QuestModel>
 21            {
 22                new QuestModel { id = "0", status = QuestsLiterals.Status.NOT_STARTED, sections = new [] { new QuestSect
 23                new QuestModel { id = "1", status = QuestsLiterals.Status.NOT_STARTED, sections = new [] { new QuestSect
 24            });
 25
 126            Assert.IsTrue(quests.ContainsKey("0"));
 127            Assert.IsTrue(quests.ContainsKey("1"));
 128        }
 29
 30        [Test]
 31        public void InitializeQuestsFilterQuestsWithoutSections()
 32        {
 133            questsController.InitializeQuests(new List<QuestModel>
 34            {
 35                new QuestModel { id = "0", status = QuestsLiterals.Status.NOT_STARTED, sections = new QuestSection[] { }
 36                new QuestModel { id = "1", status = QuestsLiterals.Status.NOT_STARTED, sections = null },
 37            });
 38
 139            Assert.IsFalse(quests.ContainsKey("0"));
 140            Assert.IsFalse(quests.ContainsKey("1"));
 141        }
 42
 43        [Test]
 44        public void InitializeQuestsUnpinNotPinnableQuests()
 45        {
 146            pinnedQuests.Add("0");
 147            pinnedQuests.Add("1");
 148            questsController.InitializeQuests(new List<QuestModel>
 49            {
 50                new QuestModel { id = "0", status = QuestsLiterals.Status.COMPLETED, sections = new [] { new QuestSectio
 51                new QuestModel { id = "1", status = QuestsLiterals.Status.BLOCKED, sections = new [] { new QuestSection 
 52            });
 53
 154            Assert.IsFalse(pinnedQuests.Contains("0"));
 155            Assert.IsFalse(pinnedQuests.Contains("1"));
 156        }
 57
 58        [Test]
 59        public void InitializeQuestsSetProgressFlags()
 60        {
 161            questsController.InitializeQuests(new List<QuestModel>
 62            {
 63                new QuestModel { id = "0", status = QuestsLiterals.Status.COMPLETED, sections = new [] { new QuestSectio
 64            });
 65
 166            Assert.AreEqual(quests["0"].oldProgress, quests["0"].progress);
 167            Assert.AreEqual(quests["0"].sections[0].tasks[0].oldProgress, quests["0"].sections[0].tasks[0].progress);
 168            Assert.IsFalse(quests["0"].justProgressed);
 169            Assert.IsFalse(quests["0"].sections[0].tasks[0].justProgressed);
 170            Assert.IsFalse(quests["0"].sections[0].tasks[0].justUnlocked);
 171        }
 72
 73        [Test]
 74        public void UpdateQuestProgressUnpinNotPinnableQuests()
 75        {
 176            pinnedQuests.Add("0");
 177            pinnedQuests.Add("1");
 178            questsController.UpdateQuestProgress(
 79                new QuestModel
 80                {
 81                    id = "0", status = QuestsLiterals.Status.COMPLETED, sections = new [] { new QuestSection { id = "0_0
 82                });
 183            questsController.UpdateQuestProgress(
 84                new QuestModel
 85                {
 86                    id = "1", status = QuestsLiterals.Status.BLOCKED, sections = new [] { new QuestSection { id = "1_0",
 87                });
 88
 189            Assert.IsFalse(pinnedQuests.Contains("0"));
 190            Assert.IsFalse(pinnedQuests.Contains("1"));
 191        }
 92
 93        [Test]
 94        public void UpdateQuestProgressProcessNewQuest()
 95        {
 196            bool newQuestReceived = false;
 197            bool questUpdatedReceived = false;
 198            bool rewardObtainedReceived = false;
 299            questsController.OnNewQuest += (questId) => newQuestReceived = true;
 1100            questsController.OnQuestUpdated += (questId, hasProgressed) => questUpdatedReceived = true;
 1101            questsController.OnRewardObtained += (questId, rewardId) => rewardObtainedReceived = true;
 102
 1103            questsController.UpdateQuestProgress(new QuestModel { id = "0", status = QuestsLiterals.Status.NOT_STARTED, 
 104
 1105            Assert.IsTrue(quests.ContainsKey("0"));
 1106            Assert.AreEqual(quests["0"].oldProgress, quests["0"].progress);
 1107            Assert.AreEqual(quests["0"].sections[0].tasks[0].oldProgress, quests["0"].sections[0].tasks[0].progress);
 1108            Assert.IsFalse(quests["0"].justProgressed);
 1109            Assert.IsFalse(quests["0"].sections[0].tasks[0].justProgressed);
 1110            Assert.IsFalse(quests["0"].sections[0].tasks[0].justUnlocked);
 1111            Assert.IsTrue(newQuestReceived);
 1112            Assert.IsFalse(questUpdatedReceived);
 1113            Assert.IsFalse(rewardObtainedReceived);
 1114        }
 115
 116        [Test]
 117        public void UpdateQuestProgressUpdateQuest()
 118        {
 1119            quests.Add("0", new QuestModel
 120            {
 121                id = "0", status = QuestsLiterals.Status.NOT_STARTED,
 122                sections = new [] { new QuestSection { id = "0_0", tasks = new [] { new QuestTask { id = "0_0_0" } } } }
 123                rewards = new [] { new QuestReward { id = "reward0", status = QuestsLiterals.RewardStatus.NOT_GIVEN } }
 124            });
 125
 1126            QuestModel progressedQuest = new QuestModel
 127            {
 128                id = "0", status = QuestsLiterals.Status.NOT_STARTED,
 129                sections = new []
 130                {
 131                    new QuestSection
 132                    {
 133                        id = "0_0",
 134                        progress = 0.5f,
 135                        tasks = new []
 136                        {
 137                            new QuestTask { id = "0_0_0", progress = 0.5f }
 138                        }
 139                    },
 140                },
 141                rewards = new [] { new QuestReward { id = "reward0", status = QuestsLiterals.RewardStatus.NOT_GIVEN } }
 142            };
 143
 1144            bool newQuestReceived = false;
 1145            bool questUpdatedReceived = false;
 1146            bool rewardObtainedReceived = false;
 1147            questsController.OnNewQuest += (questId) => newQuestReceived = true;
 1148            questsController.OnQuestUpdated += (questId, hasProgressed) =>
 149            {
 1150                questUpdatedReceived = true;
 151                //Check the progress flags are set propperly
 1152                Assert.AreEqual(0, quests["0"].oldProgress);
 1153                Assert.AreEqual(0.5f, quests["0"].progress);
 1154                Assert.AreEqual(0, quests["0"].sections[0].tasks[0].oldProgress);
 1155                Assert.AreEqual(0.5f, quests["0"].sections[0].tasks[0].progress);
 1156            };
 1157            questsController.OnRewardObtained += (questId, rewardId) => rewardObtainedReceived = true;
 158
 1159            questsController.UpdateQuestProgress(progressedQuest);
 160
 1161            Assert.IsFalse(newQuestReceived);
 1162            Assert.IsTrue(questUpdatedReceived);
 1163            Assert.IsFalse(rewardObtainedReceived);
 164
 165            //Check progress flags are reverted
 1166            Assert.AreEqual(quests["0"].oldProgress, quests["0"].progress);
 1167            Assert.AreEqual(quests["0"].sections[0].tasks[0].oldProgress, quests["0"].sections[0].tasks[0].progress);
 1168            Assert.IsFalse(quests["0"].justProgressed);
 1169            Assert.IsFalse(quests["0"].sections[0].tasks[0].justProgressed);
 1170            Assert.IsFalse(quests["0"].sections[0].tasks[0].justUnlocked);
 1171        }
 172
 173        [Test]
 174        public void UpdateQuestProgressUpdateQuest_Completed()
 175        {
 1176            quests.Add("0", new QuestModel
 177            {
 178                id = "0", status = QuestsLiterals.Status.NOT_STARTED,
 179                sections = new [] { new QuestSection { id = "0_0", tasks = new [] { new QuestTask { id = "0_0_0" } } } }
 180                rewards = new [] { new QuestReward { id = "reward0", status = QuestsLiterals.RewardStatus.NOT_GIVEN } }
 181            });
 182
 1183            QuestModel progressedQuest = new QuestModel
 184            {
 185                id = "0",
 186                status = QuestsLiterals.Status.COMPLETED,
 187                sections = new []
 188                {
 189                    new QuestSection
 190                    {
 191                        id = "0_0",
 192                        progress = 1f,
 193                        tasks = new []
 194                        {
 195                            new QuestTask { id = "0_0_0", progress = 1f, status = QuestsLiterals.Status.COMPLETED }
 196                        }
 197                    }
 198                },
 199                rewards = new [] { new QuestReward { id = "reward0", status = QuestsLiterals.RewardStatus.OK } }
 200            };
 201
 1202            bool newQuestReceived = false;
 1203            bool questUpdatedReceived = false;
 1204            bool rewardObtainedReceived = false;
 1205            questsController.OnNewQuest += (questId) => newQuestReceived = true;
 1206            questsController.OnQuestUpdated += (questId, hasProgressed) =>
 207            {
 1208                questUpdatedReceived = true;
 209                //Check the progress flags are set propperly
 1210                Assert.AreEqual(0, quests["0"].oldProgress);
 1211                Assert.AreEqual(1f, quests["0"].progress);
 1212                Assert.AreEqual(0, quests["0"].sections[0].tasks[0].oldProgress);
 1213                Assert.AreEqual(1f, quests["0"].sections[0].tasks[0].progress);
 1214            };
 1215            questsController.OnRewardObtained += (questId, rewardId) =>
 216            {
 1217                rewardObtainedReceived = true;
 218                // Check reward
 1219                Assert.AreEqual(questId, "0");
 1220                Assert.AreEqual(rewardId, "reward0");
 1221            };
 222
 1223            questsController.UpdateQuestProgress(progressedQuest);
 224
 1225            Assert.IsFalse(newQuestReceived);
 1226            Assert.IsTrue(questUpdatedReceived);
 1227            Assert.IsTrue(rewardObtainedReceived);
 228
 229            //Check progress flags are reverted
 1230            Assert.AreEqual(quests["0"].oldProgress, quests["0"].progress);
 1231            Assert.AreEqual(quests["0"].sections[0].tasks[0].oldProgress, quests["0"].sections[0].tasks[0].progress);
 1232            Assert.IsFalse(quests["0"].justProgressed);
 1233            Assert.IsFalse(quests["0"].sections[0].tasks[0].justProgressed);
 1234            Assert.IsFalse(quests["0"].sections[0].tasks[0].justUnlocked);
 1235        }
 236
 237        [TearDown]
 16238        public void TearDown() { DataStore.Clear(); }
 239    }
 240}