public void IncreaseHealthByHealedAmountWithoutSurpassingMaximum(int startingHealth, int healedAmount, int expectedHealth)
        {
            var givenCharacter = new RpgCharacter(SomeId, startingHealth, SomeLevel);

            givenCharacter.Heal(healedAmount);
            givenCharacter.Health.Should().Be(expectedHealth);
        }
        public void DeadCharacterCannotBeHealed()
        {
            var givenCharacter = new RpgCharacter(SomeId, 0, SomeLevel);

            givenCharacter.Heal(100);
            givenCharacter.Health.Should().Be(0);
        }
        public void StartWithMaxHealthAndStartingLevel()
        {
            var character = new RpgCharacter();

            character.Health.Should().Be(RpgCharacter.MaxHealth);
            character.Level.Should().Be(RpgCharacter.StartingLevel);
        }
        public void ReduceHealthByDamageWithAMinimumOfZero(int startingHealth, int dealtDamage, int expectedHealth)
        {
            var givenCharacter = new RpgCharacter(SomeId, startingHealth, SomeLevel);

            givenCharacter.Damage(dealtDamage);
            givenCharacter.Health.Should().Be(expectedHealth);
        }
示例#5
0
        private async Task ThenGivenCharacterIsPersistedWithADifferentHealth(RpgCharacter character)
        {
            var record = await dbContext.RpgCharacters.SingleOrDefaultAsync(c => c.Id == character.Id &&
                                                                            c.Health == character.Health && c.Level == character.Level);

            record.Should().BeEquivalentTo(character);
        }
示例#6
0
        public async Task Save(RpgCharacter character)
        {
            var record = await context.RpgCharacters.SingleAsync(c => c.Id == character.Id);

            record.Health = character.Health;
            record.Level  = character.Level;
            await context.SaveChangesAsync();
        }
示例#7
0
 private RpgCharacterRecord ToRecord(RpgCharacter character)
 {
     return(new RpgCharacterRecord()
     {
         Id = character.Id,
         Health = character.Health,
         Level = character.Level
     });
 }
示例#8
0
        public async Task PersistTheGivenCharacterChanges()
        {
            var givenRecord = await GivenAnExistingCharacter();

            var changedCharacter = new RpgCharacter(givenRecord.Id, SomeOtherHealth, SomeOtherLevel);

            await repository.Save(changedCharacter);

            await ThenGivenCharacterIsPersistedWithADifferentHealth(changedCharacter);
        }
示例#9
0
        public async Task ReturnTheCharacterCorrespondingToTheRequestedId()
        {
            var repository        = Substitute.For <IRpgCharacterRepository>();
            var expectedCharacter = new RpgCharacter(SomeId, SomeHealth, SomeLevel);

            repository.GetById(SomeId).Returns(expectedCharacter);
            var handler = new GetRpgCharacterHandler(repository);

            var response = await handler.Handle(new GetRpgCharacterRequest(SomeId), CancellationToken.None);

            response.Character.Should().Be(expectedCharacter);
        }