示例#1
0
        public async Task <Character> CreateAsync(CharacterCreateBindingModel model)
        {
            if (this.UserHasMaxRegiresteredCharacters(model.UserId))
            {
                throw new InvalidOperationException(ErrorConstants.MaximumRegisteredPlayers);
            }

            if (this.context.Characters.Any(ch => ch.Name == model.Name))
            {
                throw new InvalidOperationException(ErrorConstants.InvalidCharacterNameErrorMessage);
            }

            var character = new Character
            {
                Name     = model.Name,
                Level    = model.Level,
                UserId   = model.UserId,
                IsActive = true,
                ClassId  = this.GetClassId(model.Class),
                RoleId   = this.GetRoleId(model.Role),
                RankId   = this.GetRankId(GuildRanksConstants.Member)
            };

            await this.context.Characters.AddAsync(character);

            await this.context.SaveChangesAsync();

            return(character);
        }
        public async Task <IActionResult> CreateAsync(CharacterCreateBindingModel createModel)
        {
            var userId = this.userManager.GetUserId(this.User);

            createModel.UserId = userId;
            await this.characterService.CreateAsync(createModel);

            this.TempData["NewCharacter"] = "Thank you for registering new character!";
            return(this.RedirectToAction(nameof(Index)));
        }
示例#3
0
        public async Task CreateAsync_Should_Throw_If_User_Has_4_Registered_Characters()
        {
            using var context = await GetDatabaseAsync();

            var service = new CharacterService(context, null);

            var newCharacter = new CharacterCreateBindingModel
            {
                Class  = "Rogue",
                Level  = 50,
                Name   = "TestChar",
                Role   = "Damage",
                UserId = "TestUser1"
            };

            await service.CreateAsync(newCharacter);

            await Assert.ThrowsAsync <InvalidOperationException>(async() => await service.CreateAsync(newCharacter));
        }
示例#4
0
        public async Task UserHasMaxRegiresteredCharacters_Shuold_Return_True_When_User_Has_4_Characters()
        {
            using var context = await GetDatabaseAsync();

            var service = new CharacterService(context, null);

            var newCharacter = new CharacterCreateBindingModel
            {
                Class  = "Rogue",
                Level  = 50,
                Name   = "TestChar",
                Role   = "Damage",
                UserId = "TestUser1"
            };

            await service.CreateAsync(newCharacter);

            var expected = true;
            var actual   = service.UserHasMaxRegiresteredCharacters("TestUser1");

            Assert.Equal(expected, actual);
        }
示例#5
0
        public async Task CreateAsync_Should_Register_Character_In_Database()
        {
            using var context = await GetDatabaseAsync();

            var service = new CharacterService(context, null);

            var newCharacter = new CharacterCreateBindingModel
            {
                Class  = "Rogue",
                Level  = 50,
                Name   = "TestChar",
                Role   = "Damage",
                UserId = "TestUser1"
            };

            await service.CreateAsync(newCharacter);

            var expected = 4;
            var actual   = context.Characters.Count();

            Assert.Equal(expected, actual);
        }