Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        public async Task <DungeonMasterDTO> PutDungeonMaster(int id, DungeonMasterDTO dungeonMaster)
        {
            if (id != dungeonMaster.Id)
            {
                return(null);
            }

            return(await _dungeonMaster.UpdateDungeonMaster(dungeonMaster));
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        /// <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);
        }
Exemplo n.º 12
0
        /// <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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
        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);
        }