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); }