< Summary

Class:DCL.Quests.QuestCompletedComponentView
Assembly:Quests
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/Quests/QuestCompletedHUD/QuestCompletedComponentView.cs
Covered lines:30
Uncovered lines:7
Coverable lines:37
Total lines:93
Line coverage:81% (30 of 37)
Covered branches:0
Total branches:0
Covered methods:6
Total methods:7
Method coverage:85.7% (6 of 7)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
QuestCompletedComponentView()0%110100%
Awake()0%110100%
RefreshControl()0%2100%
SetTitle(...)0%110100%
SetIsGuest(...)0%110100%
SetRewards(...)0%6.026091.3%
SetVisible(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/Quests/QuestCompletedHUD/QuestCompletedComponentView.cs

#LineLine coverage
 1using MainScripts.DCL.Helpers.Utils;
 2using System;
 3using System.Collections.Generic;
 4using TMPro;
 5using UIComponents.Scripts.Components;
 6using UnityEngine;
 7using UnityEngine.UI;
 8
 9namespace DCL.Quests
 10{
 11    public class QuestCompletedComponentView : BaseComponentView<QuestCompletedComponentModel>, IQuestCompletedComponent
 12    {
 13        private const int MAX_REWARDS_COUNT = 3;
 14
 15        [SerializeField] internal GameObject rewardsSection;
 16        [SerializeField] internal GameObject rewardsNotification;
 17        [SerializeField] internal TMP_Text questTitle;
 18        [SerializeField] internal Transform rewardsContainer;
 19        [SerializeField] private Button confirmButton;
 20        [SerializeField] internal GameObject guestSection;
 21        [SerializeField] internal GameObject container;
 22
 23        [SerializeField] internal QuestRewardComponentView rewardPrefab;
 24
 25        public event Action OnConfirmed;
 26
 27        private UnityObjectPool<QuestRewardComponentView> rewardsPool;
 628        private List<QuestRewardComponentView> usedRewards = new ();
 29
 30        public override void Awake()
 31        {
 532            rewardsPool = new UnityObjectPool<QuestRewardComponentView>(rewardPrefab, rewardsContainer);
 533            rewardsPool.Prewarm(MAX_REWARDS_COUNT);
 534            confirmButton.onClick.RemoveAllListeners();
 535            confirmButton.onClick.AddListener(()=>
 36            {
 037                SetVisible(false);
 038                OnConfirmed?.Invoke();
 039            });
 540            SetVisible(false);
 541        }
 42
 43        public override void RefreshControl()
 44        {
 045            SetTitle(model.title);
 046            SetRewards(model.rewards);
 047        }
 48
 49        public void SetTitle(string title)
 50        {
 151            model.title = title;
 152            questTitle.text = title;
 153        }
 54
 55        public void SetIsGuest(bool isGuest)
 56        {
 257            guestSection.SetActive(isGuest);
 258            rewardsNotification.SetActive(false);
 259        }
 60
 61        public void SetRewards(List<QuestRewardComponentModel> rewardsList)
 62        {
 263            model.rewards = rewardsList;
 64
 1665            for (var i = 0; i < rewardsContainer.childCount; i++)
 666                Destroy(rewardsContainer.GetChild(i));
 67
 268            if (rewardsList == null || rewardsList.Count == 0)
 69            {
 170                rewardsSection.SetActive(false);
 171                guestSection.SetActive(false);
 172                rewardsNotification.SetActive(false);
 173                return;
 74            }
 75
 176            rewardsSection.SetActive(true);
 177            rewardsNotification.SetActive(true);
 78
 279            foreach (var pooledReward in usedRewards)
 080                rewardsPool.Release(pooledReward);
 81
 682            foreach (var rewardModel in rewardsList)
 83            {
 284                QuestRewardComponentView pooledReward = rewardsPool.Get();
 285                pooledReward.SetModel(rewardModel);
 286                usedRewards.Add(pooledReward);
 87            }
 188        }
 89
 90        public void SetVisible(bool isVisible) =>
 591            container.SetActive(isVisible);
 92    }
 93}