| | 1 | | using DCL; |
| | 2 | | using DCL.Controllers; |
| | 3 | | using DCL.Helpers; |
| | 4 | | using DCL.Models; |
| | 5 | | using DCL.QuestsController; |
| | 6 | | using NSubstitute; |
| | 7 | | using System.Collections; |
| | 8 | | using System.Collections.Generic; |
| | 9 | | using Tests; |
| | 10 | | using UnityEngine.TestTools; |
| | 11 | |
|
| | 12 | | public class QuestTrackingInfoShould : IntegrationTestSuite |
| | 13 | | { |
| | 14 | | private ParcelScene scene; |
| | 15 | | private IQuestsController mockQuestController; |
| | 16 | |
|
| | 17 | | protected override WorldRuntimeContext CreateRuntimeContext() |
| | 18 | | { |
| 4 | 19 | | return DCL.Tests.WorldRuntimeContextFactory.CreateWithCustomMocks |
| | 20 | | ( |
| | 21 | | sceneController: new SceneController(), |
| | 22 | | state: new WorldState(), |
| | 23 | | componentFactory: new RuntimeComponentFactory() |
| | 24 | | ); |
| | 25 | | } |
| | 26 | |
|
| | 27 | | [UnitySetUp] |
| | 28 | | protected override IEnumerator SetUp() |
| | 29 | | { |
| 4 | 30 | | yield return base.SetUp(); |
| 4 | 31 | | scene = Environment.i.world.sceneController.CreateTestScene() as ParcelScene; |
| 4 | 32 | | mockQuestController = Substitute.For<IQuestsController>(); |
| 4 | 33 | | QuestsController.i = mockQuestController; |
| 4 | 34 | | } |
| | 35 | |
|
| | 36 | | [UnityTest] |
| | 37 | | public IEnumerator InitializeEmpty() |
| | 38 | | { |
| 1 | 39 | | IDCLEntity entity = TestHelpers.CreateSceneEntity(scene); |
| 1 | 40 | | QuestTrackingInfo questTrackingInfo = TestHelpers.EntityComponentCreate<QuestTrackingInfo, QuestModel>(scene, en |
| 1 | 41 | | yield return questTrackingInfo.routine; |
| 1 | 42 | | mockQuestController.DidNotReceiveWithAnyArgs().UpdateQuestProgress(new QuestModel()); |
| 1 | 43 | | mockQuestController.DidNotReceiveWithAnyArgs().InitializeQuests(new List<QuestModel>()); |
| 1 | 44 | | } |
| | 45 | |
|
| | 46 | | [UnityTest] |
| | 47 | | public IEnumerator AddQuests() |
| | 48 | | { |
| 1 | 49 | | IDCLEntity entity = TestHelpers.CreateSceneEntity(scene); |
| 1 | 50 | | QuestTrackingInfo questTrackingInfo = TestHelpers.EntityComponentCreate<QuestTrackingInfo, QuestModel>(scene, en |
| 1 | 51 | | yield return questTrackingInfo.routine; |
| 1 | 52 | | QuestModel quest = new QuestModel |
| | 53 | | { |
| | 54 | | id = "questId" |
| | 55 | | }; |
| 1 | 56 | | questTrackingInfo.UpdateFromModel(quest); |
| 1 | 57 | | mockQuestController.Received().UpdateQuestProgress(quest); |
| 1 | 58 | | } |
| | 59 | |
|
| | 60 | | [UnityTest] |
| | 61 | | public IEnumerator RemovePreviousQuest() |
| | 62 | | { |
| 1 | 63 | | IDCLEntity entity = TestHelpers.CreateSceneEntity(scene); |
| 1 | 64 | | QuestTrackingInfo questTrackingInfo = TestHelpers.EntityComponentCreate<QuestTrackingInfo, QuestModel>(scene, en |
| 1 | 65 | | yield return questTrackingInfo.routine; |
| 1 | 66 | | QuestModel quest = new QuestModel |
| | 67 | | { |
| | 68 | | id = "questId" |
| | 69 | | }; |
| 1 | 70 | | questTrackingInfo.UpdateFromModel(quest); |
| | 71 | |
|
| 1 | 72 | | QuestModel quest2 = new QuestModel |
| | 73 | | { |
| | 74 | | id = "questId2" |
| | 75 | | }; |
| 1 | 76 | | questTrackingInfo.UpdateFromModel(quest2); |
| | 77 | |
|
| 1 | 78 | | mockQuestController.Received().RemoveQuest(quest); |
| 1 | 79 | | } |
| | 80 | |
|
| | 81 | | [UnityTest] |
| | 82 | | public IEnumerator RemovePreviousQuestOnDestroy() |
| | 83 | | { |
| 1 | 84 | | IDCLEntity entity = TestHelpers.CreateSceneEntity(scene); |
| 1 | 85 | | QuestTrackingInfo questTrackingInfo = TestHelpers.EntityComponentCreate<QuestTrackingInfo, QuestModel>(scene, en |
| 1 | 86 | | yield return questTrackingInfo.routine; |
| 1 | 87 | | QuestModel quest = new QuestModel |
| | 88 | | { |
| | 89 | | id = "questId" |
| | 90 | | }; |
| 1 | 91 | | questTrackingInfo.UpdateFromModel(quest); |
| 1 | 92 | | TestHelpers.RemoveSceneEntity(scene, entity); |
| | 93 | |
|
| 1 | 94 | | yield return null; // Needed for Unity to call OnDestroy |
| | 95 | |
|
| 1 | 96 | | mockQuestController.Received().RemoveQuest(quest); |
| 1 | 97 | | } |
| | 98 | | } |