Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /// <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);
        }