public void LearnSkillTest() { var ganger = new Ganger() { GangerId = "1" }; var skill = new Skill() { SkillId = 1 }; _mockGangerProvider.Setup(gp => gp.CanLearnSkill(It.IsAny <string>(), It.IsAny <string>())) .Returns(true); _mockSkillManager.Setup(sm => sm.GetRandomSkillByType(It.IsAny <SkillType>())) .Returns(skill); var gangerSkill = _gangerManager.LearnSkill(ganger, "advancementId", SkillType.Agility); _mockGangerProvider.Verify(gp => gp.AddGangerSkill( It.Is <string>(g => g == ganger.GangerId), It.Is <int>(s => s == skill.SkillId)), Times.Once); _mockGangerProvider.Verify(gp => gp.RemoveGangerAdvancement( It.Is <string>(g => g == ganger.GangerId), It.Is <string>(s => s == "advancementId")), Times.Once); Assert.IsTrue(ganger.Skills.Contains(skill)); Assert.AreEqual(ganger.GangerId, gangerSkill.GangerId); Assert.AreEqual(skill.SkillId, gangerSkill.SkillId); }
/// <summary> /// Skill up gangers. Requires user interaction, so happens after post game is processed. /// </summary> /// <param name="skillUpRequest">Skill up request</param> /// <returns>List of ganger skills.</returns> public IEnumerable <GangerSkill> SkillUpGangers(GangSkillUpRequest skillUpRequest) { var response = new List <GangerSkill>(); foreach (var request in skillUpRequest.GangerSkillUpRequests) { var ganger = _gangerManager.GetGanger(request.GangerId); response.Add(_gangerManager.LearnSkill(ganger, request.AdvancementId, request.SkillCategory)); } return(response); }