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