< Summary

Class:AvatarModifierAreaShould
Assembly:AvatarModifiersTest
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/Avatar/AvatarModifiers/Tests/AvatarModifierAreaShould.cs
Covered lines:44
Uncovered lines:0
Coverable lines:44
Total lines:101
Line coverage:100% (44 of 44)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SetUp()0%550100%
NotApplyModifierIfNoAvatarDetected()0%330100%
ApplyModifierWhenDetectingAvatar()0%330100%
BehaveWhenTheModifiedItemIsRemoved()0%440100%
RemoveModifiersWhenMovingAway()0%440100%
RemoveModifiersWhenBeingDestroyed()0%440100%
PrepareGameObjectForModifierArea()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/Avatar/AvatarModifiers/Tests/AvatarModifierAreaShould.cs

#LineLine coverage
 1using DCL.Helpers;
 2using DCL.Models;
 3using System.Collections;
 4using UnityEngine;
 5using NSubstitute;
 6using UnityEngine.TestTools;
 7
 8public class AvatarModifierAreaShould : IntegrationTestSuite_Legacy
 9{
 10    private const string MOCK_MODIFIER_KEY = "MockModifier";
 11    private AvatarModifierArea avatarModifierArea;
 12    private AvatarModifier mockAvatarModifier;
 13
 14    protected override IEnumerator SetUp()
 15    {
 516        yield return base.SetUp();
 17
 518        var entity = TestHelpers.CreateSceneEntity(scene);
 519        AvatarModifierArea.Model model = new AvatarModifierArea.Model
 20        {
 21            area = new BoxTriggerArea { box = new Vector3(10, 10, 10) },
 22        };
 523        avatarModifierArea = TestHelpers.EntityComponentCreate<AvatarModifierArea, AvatarModifierArea.Model>(scene, enti
 524        yield return avatarModifierArea.routine;
 25
 526        model.modifiers = new[] { MOCK_MODIFIER_KEY };
 527        mockAvatarModifier = Substitute.For<AvatarModifier>();
 528        avatarModifierArea.modifiers.Add(MOCK_MODIFIER_KEY, mockAvatarModifier);
 29
 30        //now that the modifier has been added we trigger the Update again so it gets taken into account
 531        yield return TestHelpers.EntityComponentUpdate(avatarModifierArea, model);
 532    }
 33
 34    [UnityTest]
 35    public IEnumerator NotApplyModifierIfNoAvatarDetected()
 36    {
 137        yield return null;
 38
 139        mockAvatarModifier.DidNotReceiveWithAnyArgs().ApplyModifier(null);
 140    }
 41
 42    [UnityTest]
 43    public IEnumerator ApplyModifierWhenDetectingAvatar()
 44    {
 145        var fakeObject = PrepareGameObjectForModifierArea();
 146        yield return null;
 47
 148        mockAvatarModifier.Received().ApplyModifier(fakeObject);
 149    }
 50
 51    [UnityTest]
 52    public IEnumerator BehaveWhenTheModifiedItemIsRemoved()
 53    {
 154        var fakeObject = PrepareGameObjectForModifierArea();
 155        yield return null;
 56
 157        Object.Destroy(fakeObject);
 158        yield return null;
 159    }
 60
 61    [UnityTest]
 62    public IEnumerator RemoveModifiersWhenMovingAway()
 63    {
 164        var fakeObject = PrepareGameObjectForModifierArea();
 165        yield return null;
 66
 167        fakeObject.transform.position += Vector3.one * 100;
 168        yield return null;
 69
 170        mockAvatarModifier.Received().RemoveModifier(fakeObject);
 171    }
 72
 73    [UnityTest]
 74    public IEnumerator RemoveModifiersWhenBeingDestroyed()
 75    {
 176        var fakeObject = PrepareGameObjectForModifierArea();
 177        yield return null;
 78
 179        mockAvatarModifier.Received().ApplyModifier(fakeObject);
 180        fakeObject.SetActive(false);
 181        Object.Destroy(avatarModifierArea.gameObject);
 182        yield return null;
 183        mockAvatarModifier.Received().RemoveModifier(fakeObject);
 184    }
 85
 86    private GameObject PrepareGameObjectForModifierArea()
 87    {
 488        GameObject fakeObject = CreateTestGameObject("_FakeObject");
 89
 90        // ModifierArea presumes the object has a parent
 491        GameObject fakeParent = CreateTestGameObject("_FakeParent");
 492        fakeObject.transform.parent = fakeParent.transform;
 93
 494        var boxCollider = fakeObject.AddComponent<BoxCollider>();
 495        boxCollider.size = new Vector3(3, 3, 3);
 496        fakeObject.layer = LayerMask.NameToLayer(BoxTriggerArea.AVATAR_TRIGGER_LAYER);
 497        fakeObject.transform.position = avatarModifierArea.transform.position;
 98
 499        return fakeParent;
 100    }
 101}