public async Task CanDeleteParty() { DungeonMasterDTO newDm = new DungeonMasterDTO() { UserId = "test1", CampaignName = "Test Campaign", CampaignDesc = "Test Campaign Description", ExperienceLevel = "Medium", PersonalBio = "Test Personal Bio" }; var dmRepo = BuildDmDb(); newDm = await dmRepo.CreateDungeonMaster(newDm); PartyDTO newParty = new PartyDTO() { DungeonMasterId = newDm.Id, MaxSize = 4, Full = false }; var repo = BuildDb(); var create = await repo.CreateParty(newParty); Assert.NotNull(create); await repo.DeleteParty(newDm.Id); var result = await repo.GetPartyById(create.Id); Assert.Null(result); }
/// <summary> /// Create a new Dungeon Master with the provided information from the API request & /// Create Request Objects between the new DM and all active players in the database. /// </summary> /// <param name="dungeonMaster">Dungeon Master information from the API request</param> /// <returns>Newly created Dungeon Master</returns> public async Task <DungeonMasterDTO> CreateDungeonMaster(DungeonMasterDTO dungeonMasterDTO) { DungeonMaster dungeonMaster = DeconstructDTO(dungeonMasterDTO); _context.Entry(dungeonMaster).State = EntityState.Added; var result = await _context.SaveChangesAsync(); dungeonMasterDTO = await BuildDTO(dungeonMaster); dungeonMasterDTO.ActiveRequests = new List <RequestDTO>(); var players = await _context.Players.Where(x => x.PartyId == 1).ToListAsync(); if (players != null) { foreach (var player in players) { RequestDTO newReq = await _request.CreateRequest(player.Id, dungeonMaster.Id); dungeonMasterDTO.ActiveRequests.Add(newReq); } } PartyDTO newParty = new PartyDTO { DungeonMasterId = dungeonMasterDTO.Id, MaxSize = dungeonMasterDTO.PartySize, Full = false }; dungeonMasterDTO.Party = await _party.CreateParty(newParty); dungeonMasterDTO.Id = dungeonMaster.Id; return(dungeonMasterDTO); }
public async Task <DungeonMasterDTO> PutDungeonMaster(int id, DungeonMasterDTO dungeonMaster) { if (id != dungeonMaster.Id) { return(null); } return(await _dungeonMaster.UpdateDungeonMaster(dungeonMaster)); }
/// <summary> /// Update a specific Dungeon Master in the database /// </summary> /// <param name="dungeonMaster">Updated Dungeon Master information</param> /// <returns>Updated Dungeon Master</returns> public async Task <DungeonMasterDTO> UpdateDungeonMaster(DungeonMasterDTO dungeonMasterDTO) { DungeonMaster dungeonMaster = DeconstructDTO(dungeonMasterDTO); _context.Entry(dungeonMaster).State = EntityState.Modified; await _context.SaveChangesAsync(); return(dungeonMasterDTO); }
/// <summary> /// Get a specific Dungeon Master based on their ID /// </summary> /// <param name="dungeonMasterId">Dungeon Master Id to be found</param> /// <returns>Dungeon Master associated with the given id</returns> public async Task <DungeonMasterDTO> GetDungeonMasterById(int dungeonMasterId) { DungeonMaster dungeonMaster = await _context.DungeonMasters.FindAsync(dungeonMasterId); DungeonMasterDTO dmDTO = null; if (dungeonMaster != null) { dmDTO = await BuildDTO(dungeonMaster); } return(dmDTO); }
/// <summary> /// Get a specific Dungeon Master based on the UserID associated with them /// </summary> /// <param name="userId">User ID associated with Dungeon Master to get</param> /// <returns>Dungeon Master associated with the given userId</returns> public async Task <DungeonMasterDTO> GetDungeonMasterByUserId(string userId) { DungeonMaster dungeonMaster = await _context.DungeonMasters.Where(x => x.UserId == userId).FirstOrDefaultAsync(); DungeonMasterDTO dmDTO = null; if (dungeonMaster != null) { dmDTO = await BuildDTO(dungeonMaster); } return(dmDTO); }
public async Task CanGetAllDMs() { DungeonMasterDTO newDm = new DungeonMasterDTO() { UserId = "test1", CampaignName = "Test Campaign", CampaignDesc = "Test Campaign Description", ExperienceLevel = "Medium", PersonalBio = "Test Personal Bio" }; DungeonMasterDTO newDm2 = new DungeonMasterDTO() { UserId = "test2", CampaignName = "Test Campaign2", CampaignDesc = "Test Campaign Description2", ExperienceLevel = "High", PersonalBio = "Test Personal Bio2" }; DungeonMasterDTO newDm3 = new DungeonMasterDTO() { UserId = "test3", CampaignName = "Test Campaign3", CampaignDesc = "Test Campaign Description3", ExperienceLevel = "FirstTime", PersonalBio = "Test Personal Bio3" }; var repo = BuildDb(); await repo.CreateDungeonMaster(newDm); await repo.CreateDungeonMaster(newDm2); await repo.CreateDungeonMaster(newDm3); var result = await repo.GetAllDungeonMasters(); bool dmInList = false; foreach (var item in result) { if (item.UserId == "test2") { dmInList = true; } } Assert.NotEmpty(result); Assert.True(dmInList); }
public async Task CanSaveNewDM() { DungeonMasterDTO newDm = new DungeonMasterDTO() { UserId = "test1", CampaignName = "Test Campaign", CampaignDesc = "Test Campaign Description", ExperienceLevel = "Medium", PersonalBio = "Test Personal Bio" }; var repo = BuildDb(); var result = await repo.CreateDungeonMaster(newDm); Assert.NotNull(result); Assert.NotEqual(0, result.Id); Assert.Equal(newDm.CampaignName, result.CampaignName); }
public void CanDeconstructDTO() { var repo = BuildDb(); DungeonMasterDTO dungeonMasterDTO = new DungeonMasterDTO() { UserId = "test1", CampaignName = "Test Campaign", CampaignDesc = "Test Campaign Description", ExperienceLevel = "Medium", PersonalBio = "Test Personal Bio" }; DungeonMaster dungeonMaster = repo.DeconstructDTO(dungeonMasterDTO); Assert.NotNull(dungeonMasterDTO); Assert.Equal(dungeonMasterDTO.UserId, dungeonMaster.UserId); Assert.Equal(dungeonMasterDTO.PersonalBio, dungeonMaster.PersonalBio); }
public async Task <DungeonMasterDTO> PostDungeonMaster(DungeonMasterDTO dungeonMaster) { var userClaims = User.Claims; if (userClaims != null) { dungeonMaster.UserId = userClaims.FirstOrDefault(x => x.Type == "UserId").Value; dungeonMaster.UserName = userClaims.FirstOrDefault(x => x.Type == "UserName").Value; DungeonMasterDTO result = await _dungeonMaster.CreateDungeonMaster(dungeonMaster); if (result.Id != 0) { return(result); } } return(null); }
/// <summary> /// Deconstruct a DungeonMasterDTO into a DungeonMaster object /// </summary> /// <param name="dungeonMasterDTO">Dungeon Master DTO for deconstruction</param> /// <returns>DungeonMaster object from DTO</returns> public DungeonMaster DeconstructDTO(DungeonMasterDTO dungeonMasterDTO) { Enum.TryParse(dungeonMasterDTO.ExperienceLevel, out ExperienceLevel exp); DungeonMaster result = new DungeonMaster { Id = dungeonMasterDTO.Id, UserId = dungeonMasterDTO.UserId, UserName = dungeonMasterDTO.UserName, UserEmail = dungeonMasterDTO.UserEmail, CampaignName = dungeonMasterDTO.CampaignName, CampaignDesc = dungeonMasterDTO.CampaignDesc, ExperienceLevel = exp, PersonalBio = dungeonMasterDTO.PersonalBio }; return(result); }
/// <summary> /// Builds a Dungeon Master DTO from a Dungeon master object /// </summary> /// <param name="dungeonMaster">Dungeon Master to be converted to DTO</param> /// <returns>Dungeon Master DTO</returns> public async Task <DungeonMasterDTO> BuildDTO(DungeonMaster dungeonMaster) { DungeonMasterDTO result = new DungeonMasterDTO { Id = dungeonMaster.Id, UserEmail = dungeonMaster.UserEmail, UserId = dungeonMaster.UserId, UserName = dungeonMaster.UserName, ImageUrl = dungeonMaster.ImageUrl, CampaignName = dungeonMaster.CampaignName, CampaignDesc = dungeonMaster.CampaignDesc, ExperienceLevel = dungeonMaster.ExperienceLevel.ToString(), PersonalBio = dungeonMaster.PersonalBio, Party = await _party.GetPartyByDMId(dungeonMaster.Id), ActiveRequests = await _request.GetAllActiveUserRequests(dungeonMaster.UserId) }; return(result); }
public async Task CanGetDMByUserId() { DungeonMasterDTO newDm = new DungeonMasterDTO() { UserId = "test1", CampaignName = "Test Campaign", CampaignDesc = "Test Campaign Description", ExperienceLevel = "Medium", PersonalBio = "Test Personal Bio" }; DungeonMasterDTO newDm2 = new DungeonMasterDTO() { UserId = "test2", CampaignName = "Test Campaign2", CampaignDesc = "Test Campaign Description2", ExperienceLevel = "High", PersonalBio = "Test Personal Bio2" }; DungeonMasterDTO newDm3 = new DungeonMasterDTO() { UserId = "test3", CampaignName = "Test Campaign3", CampaignDesc = "Test Campaign Description3", ExperienceLevel = "FirstTime", PersonalBio = "Test Personal Bio3" }; var repo = BuildDb(); await repo.CreateDungeonMaster(newDm); newDm2 = await repo.CreateDungeonMaster(newDm2); await repo.CreateDungeonMaster(newDm3); var result = await repo.GetDungeonMasterByUserId("test2"); Assert.NotNull(result); Assert.NotEqual(0, result.Id); Assert.Equal(newDm2.Id, result.Id); Assert.Equal(newDm2.CampaignName, result.CampaignName); Assert.Equal(newDm2.CampaignDesc, result.CampaignDesc); }
public async Task CanDeleteDM() { DungeonMasterDTO newDm = new DungeonMasterDTO() { UserId = "test1", CampaignName = "Test Campaign", CampaignDesc = "Test Campaign Description", ExperienceLevel = "Medium", PersonalBio = "Test Personal Bio" }; var repo = BuildDb(); var create = await repo.CreateDungeonMaster(newDm); Assert.NotNull(create); await repo.DeleteDungeonMaster(create.Id); var result = await repo.GetDungeonMasterByUserId("test1"); Assert.Null(result); }
public async Task CanUpdateDM() { var repo = BuildDb(); DungeonMasterDTO dmUpdate = new DungeonMasterDTO() { Id = 1, UserId = "test1Update", CampaignName = "Test Campaign Update", CampaignDesc = "Test Campaign Description Update", ExperienceLevel = "Low", PersonalBio = "Test Personal Bio Update" }; var update = await repo.UpdateDungeonMaster(dmUpdate); Assert.NotNull(update); Assert.Equal(1, update.Id); Assert.Equal("test1Update", update.UserId); Assert.Equal("Test Campaign Description Update", update.CampaignDesc); }
public async Task CanDeleteSpecificRequest() { #region DataSeeding var playerRepo = BuildPlayerDb(); var dmRepo = BuildDMDb(); DungeonMasterDTO newDm = new DungeonMasterDTO() { UserId = "test1", CampaignName = "Test Campaign", CampaignDesc = "Test Campaign Description", ExperienceLevel = "Medium", PersonalBio = "Test Personal Bio" }; DungeonMasterDTO newDm2 = new DungeonMasterDTO() { UserId = "test2", CampaignName = "Test Campaign2", CampaignDesc = "Test Campaign Description2", ExperienceLevel = "High", PersonalBio = "Test Personal Bio2" }; PlayerDTO newPlayer = new PlayerDTO() { UserId = "test3", CharacterName = "Test1Name", Class = "Barbarian", Race = "Dragonborn", ExperienceLevel = "FirstTime", GoodAlignment = 50, LawAlignment = 50, PartyId = 1 }; PlayerDTO newPlayer2 = new PlayerDTO() { UserId = "test4", CharacterName = "Test2Name", Class = "Monk", Race = "HalfElf", ExperienceLevel = "High", GoodAlignment = 50, LawAlignment = 50, PartyId = 1 }; newPlayer = await playerRepo.CreatePlayer(newPlayer); newPlayer2 = await playerRepo.CreatePlayer(newPlayer2); newDm = await dmRepo.CreateDungeonMaster(newDm); newDm2 = await dmRepo.CreateDungeonMaster(newDm2); #endregion DataSeeding var repo = BuildDb(); RequestDTO req1 = await repo.CreateRequest(newPlayer.Id, newDm.Id); RequestDTO req2 = await repo.CreateRequest(newPlayer.Id, newDm2.Id); RequestDTO req3 = await repo.CreateRequest(newPlayer2.Id, newDm.Id); RequestDTO req4 = await repo.CreateRequest(newPlayer2.Id, newDm2.Id); // Requests get created when Players/DMs so there's actually two in DB when I force a 2nd above, this is not a production situation, in Production they are only ever created when Profiles are Created and Deleted when either Profile in the RequestDTO is. await repo.DeleteRequest(newPlayer.Id, newDm.Id); await repo.DeleteRequest(newPlayer.Id, newDm.Id); var result = await repo.GetAllActiveUserRequests(newPlayer.UserId); bool contained1 = false; bool contained2 = false; bool contained3 = false; bool contained4 = false; foreach (var item in result) { if (item.DungeonMasterId == newDm.Id && item.PlayerId == newPlayer.Id) { contained1 = true; } else if (item.DungeonMasterId == newDm2.Id && item.PlayerId == newPlayer.Id) { contained2 = true; } else if (item.DungeonMasterId == newDm.Id && item.PlayerId == newPlayer2.Id) { contained3 = true; } else if (item.DungeonMasterId == newDm2.Id && item.PlayerId == newPlayer2.Id) { contained4 = true; } } Assert.False(contained1); Assert.True(contained2); Assert.False(contained3); Assert.False(contained4); }
public async Task CanDeleteAllUserRequests() { #region DataSeeding var playerRepo = BuildPlayerDb(); var dmRepo = BuildDMDb(); DungeonMasterDTO newDm = new DungeonMasterDTO() { UserId = "test1", CampaignName = "Test Campaign", CampaignDesc = "Test Campaign Description", ExperienceLevel = "Medium", PersonalBio = "Test Personal Bio" }; DungeonMasterDTO newDm2 = new DungeonMasterDTO() { UserId = "test2", CampaignName = "Test Campaign2", CampaignDesc = "Test Campaign Description2", ExperienceLevel = "High", PersonalBio = "Test Personal Bio2" }; PlayerDTO newPlayer = new PlayerDTO() { UserId = "test3", CharacterName = "Test1Name", Class = "Barbarian", Race = "Dragonborn", ExperienceLevel = "FirstTime", GoodAlignment = 50, LawAlignment = 50, PartyId = 1 }; PlayerDTO newPlayer2 = new PlayerDTO() { UserId = "test4", CharacterName = "Test2Name", Class = "Monk", Race = "HalfElf", ExperienceLevel = "High", GoodAlignment = 50, LawAlignment = 50, PartyId = 1 }; newPlayer = await playerRepo.CreatePlayer(newPlayer); newPlayer2 = await playerRepo.CreatePlayer(newPlayer2); newDm = await dmRepo.CreateDungeonMaster(newDm); newDm2 = await dmRepo.CreateDungeonMaster(newDm2); #endregion DataSeeding var repo = BuildDb(); await repo.DeleteAllUserRequests(newPlayer.Id, "Player"); var result = await repo.GetAllActiveUserRequests(newPlayer.UserId); Assert.Empty(result); }
public async Task CanGetAllUserRequests() { #region DataSeeding var playerRepo = BuildPlayerDb(); var dmRepo = BuildDMDb(); DungeonMasterDTO newDm = new DungeonMasterDTO() { UserId = "test1", CampaignName = "Test Campaign", CampaignDesc = "Test Campaign Description", ExperienceLevel = "Medium", PersonalBio = "Test Personal Bio" }; DungeonMasterDTO newDm2 = new DungeonMasterDTO() { UserId = "test2", CampaignName = "Test Campaign2", CampaignDesc = "Test Campaign Description2", ExperienceLevel = "High", PersonalBio = "Test Personal Bio2" }; PlayerDTO newPlayer = new PlayerDTO() { UserId = "test3", CharacterName = "Test1Name", Class = "Barbarian", Race = "Dragonborn", ExperienceLevel = "FirstTime", GoodAlignment = 50, LawAlignment = 50, PartyId = 1 }; PlayerDTO newPlayer2 = new PlayerDTO() { UserId = "test4", CharacterName = "Test2Name", Class = "Monk", Race = "HalfElf", ExperienceLevel = "High", GoodAlignment = 50, LawAlignment = 50, PartyId = 1 }; newPlayer = await playerRepo.CreatePlayer(newPlayer); newPlayer2 = await playerRepo.CreatePlayer(newPlayer2); newDm = await dmRepo.CreateDungeonMaster(newDm); newDm2 = await dmRepo.CreateDungeonMaster(newDm2); #endregion DataSeeding var repo = BuildDb(); RequestDTO req1 = await repo.CreateRequest(newPlayer.Id, newDm.Id); RequestDTO req2 = await repo.CreateRequest(newPlayer.Id, newDm2.Id); RequestDTO req3 = await repo.CreateRequest(newPlayer2.Id, newDm.Id); RequestDTO req4 = await repo.CreateRequest(newPlayer2.Id, newDm2.Id); var result = await repo.GetAllUserRequests(newPlayer.UserId); bool contained1 = false; bool contained2 = false; bool contained3 = false; bool contained4 = false; foreach (var item in result) { if (item.DungeonMasterId == newDm.Id && item.PlayerId == newPlayer.Id) { contained1 = true; } else if (item.DungeonMasterId == newDm2.Id && item.PlayerId == newPlayer.Id) { contained2 = true; } else if (item.DungeonMasterId == newDm.Id && item.PlayerId == newPlayer2.Id) { contained3 = true; } else if (item.DungeonMasterId == newDm2.Id && item.PlayerId == newPlayer2.Id) { contained4 = true; } } Assert.True(contained1); Assert.True(contained2); Assert.False(contained3); Assert.False(contained4); }
public async Task CanGetAllParties() { DungeonMasterDTO newDm = new DungeonMasterDTO() { UserId = "test1", CampaignName = "Test Campaign", CampaignDesc = "Test Campaign Description", ExperienceLevel = "Medium", PersonalBio = "Test Personal Bio" }; DungeonMasterDTO newDm2 = new DungeonMasterDTO() { UserId = "test2", CampaignName = "Test Campaign2", CampaignDesc = "Test Campaign Description2", ExperienceLevel = "High", PersonalBio = "Test Personal Bio2" }; DungeonMasterDTO newDm3 = new DungeonMasterDTO() { UserId = "test3", CampaignName = "Test Campaign3", CampaignDesc = "Test Campaign Description3", ExperienceLevel = "FirstTime", PersonalBio = "Test Personal Bio3" }; var dmRepo = BuildDmDb(); newDm = await dmRepo.CreateDungeonMaster(newDm); newDm2 = await dmRepo.CreateDungeonMaster(newDm2); newDm3 = await dmRepo.CreateDungeonMaster(newDm3); PartyDTO newParty = new PartyDTO() { DungeonMasterId = newDm.Id, MaxSize = 4, Full = false }; PartyDTO newParty2 = new PartyDTO() { DungeonMasterId = newDm2.Id, MaxSize = 133, Full = false }; PartyDTO newParty3 = new PartyDTO() { DungeonMasterId = newDm3.Id, MaxSize = 8, Full = false }; var repo = BuildDb(); await repo.CreateParty(newParty); await repo.CreateParty(newParty2); await repo.CreateParty(newParty3); var result = await repo.GetAllParties(); bool partyInList = false; foreach (var item in result) { if (item.MaxSize == 133) { partyInList = true; } } Assert.NotEmpty(result); Assert.True(partyInList); }