public void ToggleModifier(Character character, CharacterModifier modifier)
        {
            if (!modifier.Reusable)
            {
                throw new CharacterModifierNotReusableException(modifier.Id);
            }

            modifier.IsActive = !modifier.IsActive;
            if (modifier.IsActive)
            {
                modifier.CurrentCombatCount  = modifier.CombatCount;
                modifier.CurrentLapCount     = modifier.LapCount;
                modifier.CurrentTimeDuration = modifier.TimeDuration;

                character.AddHistoryEntry(_characterHistoryUtil.CreateLogActiveModifier(character.Id, modifier.Id));
            }
            else
            {
                character.AddHistoryEntry(_characterHistoryUtil.CreateLogDisableModifier(character.Id, modifier.Id));
            }
        }
        public void ToggleModifier_ShouldLogInCharacterHistory_WhenActivated()
        {
            const int characterId         = 8;
            const int characterModifierId = 12;
            var       character           = new Character {
                Id = characterId
            };
            var characterHistoryEntry = new CharacterHistoryEntry();
            var characterModifier     = new CharacterModifier
            {
                Id       = characterModifierId,
                IsActive = false,
                Reusable = true,
            };

            _characterHistoryUtil.CreateLogActiveModifier(characterId, characterModifierId)
            .Returns(characterHistoryEntry);

            _util.ToggleModifier(character, characterModifier);

            character.HistoryEntries.Should().Contain(characterHistoryEntry);
        }