예제 #1
0
        public void All_WithData_ReturnsSameData()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_WithQuests")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new QuestsService(context, null);

                var quests = new List <Quest>
                {
                    new Quest()
                    {
                        Title = "1", QuestText = "1", CompletionCondition = "1"
                    },
                    new Quest()
                    {
                        Title = "2", QuestText = "2", CompletionCondition = "2"
                    },
                    new Quest()
                    {
                        Title = "3", QuestText = "3", CompletionCondition = "3"
                    }
                };

                context.Quests.AddRange(quests);
                context.SaveChanges();

                Assert.Equal(3, service.All().Count);
            }
        }
예제 #2
0
        public void ByName_WithQuest_ReturnsQuest()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "DbFor_ByName_WithQuest")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new QuestsService(context, null);

                var questTitle = "QuestTitle";

                var quest = new Quest()
                {
                    Title               = questTitle,
                    QuestText           = "TextForQuest",
                    CompletionCondition = "None"
                };

                context.Quests.Add(quest);
                context.SaveChanges();

                var questFromDb = service.ByName(questTitle);

                Assert.Equal(quest.Title, questFromDb.Title);
                Assert.Equal(quest.QuestText, questFromDb.QuestText);
                Assert.Equal(quest.CompletionCondition, questFromDb.CompletionCondition);
            }
        }
예제 #3
0
        public void ById_WithRace_ReturnsRace()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "DbFor_ById_WithRace")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new RacesService(context, null);

                var raceToAdd = new Race()
                {
                    Name        = "Race",
                    Description = "None"
                };

                context.Races.Add(raceToAdd);
                context.SaveChanges();

                var raceFromDb = service.ById(1);

                Assert.Equal(raceToAdd.Name, raceFromDb.Name);
                Assert.Equal(raceToAdd.Description, raceFromDb.Description);
            }
        }
예제 #4
0
        public void All_WithData_ReturnsSameData()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_WithItems")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new ItemsService(context);

                var items = new List <Item>
                {
                    new Item()
                    {
                        Name = "1", AcquiredFrom = "1", Usage = "1"
                    },
                    new Item()
                    {
                        Name = "2", AcquiredFrom = "2", Usage = "2"
                    },
                    new Item()
                    {
                        Name = "3", AcquiredFrom = "3", Usage = "3"
                    }
                };

                context.Items.AddRange(items);
                context.SaveChanges();

                Assert.Equal(3, service.All().Count);
            }
        }
예제 #5
0
        public void AddBossToDungeon_AddsData()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Dungeons_Db_ForAddBoss")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                context.Dungeons.Add(new Dungeon()
                {
                    Name = "DungeonForBoss"
                });
                context.SaveChanges();
            }

            using (var context = new GameInfoContext(options))
            {
                var service = new DungeonsService(context, null);

                var npc = new NPC()
                {
                    Name = "NPC"
                };
                var model = new AddBossToDungeonInputModel()
                {
                    DungeonId = 1
                };

                var result = service.AddBossToDungeon(model, npc);
                Assert.True(result);
            }
        }
예제 #6
0
        public bool AddBossToDungeon(AddBossToDungeonInputModel model, NPC NPCToAdd)
        {
            var dungeon = this.ById(model.DungeonId);

            if (dungeon == null)
            {
                return(false);
            }

            var npc = NPCToAdd;

            dungeon.Bosses.Add(npc);
            _db.SaveChanges();

            return(true);
        }
        public void All_WithData_ReturnsSameData()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_WithAchievements")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new AchievementsService(context, null);

                var achievements = new List <Achievement>
                {
                    new Achievement()
                    {
                        Name = "1", AcquisitionConditions = "1"
                    },
                    new Achievement()
                    {
                        Name = "2", AcquisitionConditions = "2"
                    },
                    new Achievement()
                    {
                        Name = "3", AcquisitionConditions = "3"
                    }
                };

                context.Achievements.AddRange(achievements);
                context.SaveChanges();

                Assert.Equal(3, service.All().Count);
            }
        }
        public void ByName_WithProfession_ReturnsProfession()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "ForByName_WithProfession")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new ProfessionsService(context);

                var professionName = "Prof Name";

                var profession = new Profession()
                {
                    Name = professionName
                };

                context.Professions.Add(profession);
                context.SaveChanges();

                var professionFromDb = service.ByName(professionName);

                Assert.Equal(profession.Name, professionFromDb.Name);
            }
        }
        public void ByName_WithAchievement_ReturnsAchievement()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_ForByName_WithAchievement")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new AchievementsService(context, null);

                var achievementName = "Redacted";

                var achievement = new Achievement()
                {
                    Name = achievementName,
                    AcquisitionConditions = "Achievement"
                };

                context.Achievements.Add(achievement);
                context.SaveChanges();

                var achievementFromDb = service.ByName(achievementName);

                Assert.Equal(achievement.Name, achievementFromDb.Name);
                Assert.Equal(achievement.AcquisitionConditions, achievementFromDb.AcquisitionConditions);
            }
        }
예제 #10
0
        public void All_WithData_ReturnsSameData()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_WithGuides")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new GuidesService(context);

                var guides = new List <Guide>
                {
                    new Guide()
                    {
                        Title = "1", Content = "1"
                    },
                    new Guide()
                    {
                        Title = "2", Content = "2"
                    },
                    new Guide()
                    {
                        Title = "3", Content = "3"
                    }
                };

                context.Guides.AddRange(guides);
                context.SaveChanges();

                Assert.Equal(3, service.All().Count);
            }
        }
예제 #11
0
        public void ById_WithGuide_ReturnsGuide()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_ForById_WithGuide")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new GuidesService(context);

                var guideToAdd = new Guide()
                {
                    Title   = "GuideTitle",
                    Content = "GuideContent"
                };

                context.Guides.Add(guideToAdd);
                context.SaveChanges();

                var guideFromDb = service.ById(1);

                Assert.Equal(guideToAdd.Title, guideFromDb.Title);
                Assert.Equal(guideToAdd.Content, guideFromDb.Content);
            }
        }
        public void All_WithData_ReturnsSameData()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_WithProfessions")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new ProfessionsService(context);

                var professions = new List <Profession>
                {
                    new Profession()
                    {
                        Name = "1",
                    },
                    new Profession()
                    {
                        Name = "2",
                    },
                    new Profession()
                    {
                        Name = "3",
                    }
                };

                context.Professions.AddRange(professions);
                context.SaveChanges();

                Assert.Equal(3, service.All().Count);
            }
        }
예제 #13
0
        public async Task RemoveItem_RemovesDataProperly()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Dungeons_Db_ForRemoveItem")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var dungeonName = "DungeonItemRemove";
                var item        = new Item()
                {
                    Name = "Item"
                };
                var dungeon = new Dungeon()
                {
                    Name    = dungeonName,
                    Rewards = new List <Item>()
                    {
                        item
                    }
                };

                context.Dungeons.Add(dungeon);
                context.SaveChanges();

                var service = new DungeonsService(context, null);

                await service.RemoveItem(dungeon, item);

                var dungeonFromDb = context.Dungeons.Include(x => x.Rewards).FirstOrDefault(x => x.Name == dungeonName);

                Assert.DoesNotContain(item, dungeonFromDb.Rewards);
            }
        }
예제 #14
0
        public void AddItemToDungeon_AddsData()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Dungeons_Db_ForAddItem")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                context.Dungeons.Add(new Dungeon()
                {
                    Name = "DungeonForItem"
                });
                context.SaveChanges();
            }

            using (var context = new GameInfoContext(options))
            {
                var service = new DungeonsService(context, null);

                var item = new Item()
                {
                    Name = "Item", AcquiredFrom = "None", Usage = "None"
                };
                var model = new AddItemToDungeonInputModel()
                {
                    DungeonId = 1
                };

                var result = service.AddItemToDungeon(model, item);
                Assert.True(result);
            }
        }
예제 #15
0
        public bool AddItemToNPC(AddItemToNPCInputModel model)
        {
            var npc = this.ById(model.NPCId);

            if (npc == null)
            {
                return(false);
            }

            var itemToAdd = _itemsService.ByName(model.ItemName);

            npc.Loot.Add(itemToAdd);
            _db.SaveChanges();

            return(true);
        }
예제 #16
0
        public async Task RemoveQuest_RemovesFromNPC()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_ForRemoveQuest_FromNPC")
                          .Options;

            var npc = new NPC()
            {
                Name = "NPC RemoveQuest"
            };
            var quest = new Quest()
            {
                Title = "To remove"
            };

            using (var context = new GameInfoContext(options))
            {
                npc.Quests.Add(quest);
                context.NPCs.Add(npc);
                context.SaveChanges();

                var service = new NPCsService(context, null);

                await service.RemoveQuest(npc, quest);

                var NPCFromDb = context.NPCs.First();

                Assert.True(NPCFromDb.Quests.Count == 0);
            }
        }
예제 #17
0
        public void All_WithData_ReturnsSameData()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_WithNPCs")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new NPCsService(context, null);

                var NPCs = new List <NPC>
                {
                    new NPC()
                    {
                        Name = "1"
                    },
                    new NPC()
                    {
                        Name = "2"
                    },
                    new NPC()
                    {
                        Name = "3"
                    }
                };

                context.NPCs.AddRange(NPCs);
                context.SaveChanges();

                Assert.Equal(3, service.All().Count);
            }
        }
예제 #18
0
        public void AddQuest_AddsToNPC()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_ForAddQuest_ToNPC")
                          .Options;

            var npc = new NPC()
            {
                Name = "NPC QuestAdd"
            };
            var quest = new Quest()
            {
                Title = "QuestTitle", CompletionCondition = "None"
            };

            using (var context = new GameInfoContext(options))
            {
                context.NPCs.Add(npc);
                context.Quests.Add(quest);
                context.SaveChanges();

                var model = new AddQuestToNPCInputModel()
                {
                    NPCId = 1
                };

                var service = new NPCsService(context, null);

                Assert.True(service.AddQuestToNPC(model, quest));
            }
        }
예제 #19
0
        public async Task RemoveItem_RemovesFromNPC()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_ForRemoveItem_FromNPC")
                          .Options;

            var npc = new NPC()
            {
                Name = "NPC RemoveItem"
            };
            var item = new Item()
            {
                Name = "Item to remove"
            };

            using (var context = new GameInfoContext(options))
            {
                npc.Loot.Add(item);
                context.NPCs.Add(npc);
                context.SaveChanges();

                var service = new NPCsService(context, null);

                await service.RemoveItem(npc, item);

                var NPCFromDb = context.NPCs.First();

                Assert.True(NPCFromDb.Loot.Count == 0);
            }
        }
예제 #20
0
        public void ByName_WithNPC_ReturnsNPC()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_ForByName_WithNPC")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new NPCsService(context, null);

                var NPCName = "NPC Name";

                var NPC = new NPC()
                {
                    Name = NPCName
                };

                context.NPCs.Add(NPC);
                context.SaveChanges();

                var NPCFromDb = service.ByName(NPCName);

                Assert.Equal(NPC.Name, NPCFromDb.Name);
            }
        }
예제 #21
0
        public void AddItem_AddsToNPC()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_ForAddItem_ToNPC")
                          .Options;

            var itemName = "Item Name";

            var npc = new NPC()
            {
                Name = "NPC Name"
            };
            var item = new Item()
            {
                Name = itemName, AcquiredFrom = "None", Usage = "None"
            };

            using (var context = new GameInfoContext(options))
            {
                context.NPCs.Add(npc);
                context.Items.Add(item);
                context.SaveChanges();

                var model = new AddItemToNPCInputModel()
                {
                    NPCId = 1, ItemName = itemName
                };

                var service = new NPCsService(context, new ItemsService(context));

                Assert.True(service.AddItemToNPC(model));
            }
        }
예제 #22
0
        public bool AddItemToAchievement(AddItemToAchievementInputModel model)
        {
            var achievement = this.ById(model.AchievementId);

            if (achievement == null)
            {
                return(false);
            }

            var itemToAdd = _itemsService.ByName(model.ItemName);

            achievement.Rewards.Add(itemToAdd);
            _db.SaveChanges();

            return(true);
        }
예제 #23
0
        public async Task RemoveBoss_RemovesDataProperly()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Dungeons_Db_ForRemoveBoss")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var dungeonName = "DungeonBossRemove";
                var npc         = new NPC()
                {
                    Name = "Boss"
                };
                var dungeon = new Dungeon()
                {
                    Name   = dungeonName,
                    Bosses = new List <NPC>()
                    {
                        npc
                    }
                };

                context.Dungeons.Add(dungeon);
                context.SaveChanges();

                var service = new DungeonsService(context, null);

                await service.RemoveBoss(dungeon, npc);

                var dungeonFromDb = context.Dungeons.Include(x => x.Bosses).FirstOrDefault(x => x.Name == dungeonName);

                Assert.DoesNotContain(npc, dungeonFromDb.Bosses);
            }
        }
예제 #24
0
        public void ByName_WithItem_ReturnsItem()
        {
            var options = new DbContextOptionsBuilder <GameInfoContext>()
                          .UseInMemoryDatabase(databaseName: "Db_ForByName_WithItem")
                          .Options;

            using (var context = new GameInfoContext(options))
            {
                var service = new ItemsService(context);

                var itemName = "Item Name";

                var item = new Item()
                {
                    Name         = itemName,
                    AcquiredFrom = "Random",
                    Usage        = "None"
                };

                context.Items.Add(item);
                context.SaveChanges();

                var itemFromDb = service.ByName(itemName);

                Assert.Equal(item.Name, itemFromDb.Name);
                Assert.Equal(item.AcquiredFrom, itemFromDb.AcquiredFrom);
                Assert.Equal(item.Usage, itemFromDb.Usage);
            }
        }
예제 #25
0
        public bool AddProfessionToRace(AddProfessionToRaceInputModel model)
        {
            var race = this.ById(model.RaceId);

            if (race == null)
            {
                return(false);
            }

            var professionToAdd = _professionsService.ByName(model.ProfessionName);

            race.Professions.Add(new RaceProfession {
                Race         = race,
                RaceId       = race.Id,
                Profession   = professionToAdd,
                ProfessionId = professionToAdd.Id
            });
            _db.SaveChanges();

            return(true);
        }
예제 #26
0
        public bool Delete(int id)
        {
            var quest = this.ById(id);

            if (quest != null)
            {
                _db.Quests.Remove(quest);
                _db.SaveChanges();
                return(true);
            }

            return(false);
        }
예제 #27
0
        public bool Delete(int id)
        {
            var item = this.ById(id);

            if (item != null)
            {
                _db.Items.Remove(item);
                _db.SaveChanges();
                return(true);
            }

            return(false);
        }
예제 #28
0
        public bool Delete(int id)
        {
            var guide = this.ById(id);

            if (guide != null)
            {
                _db.Guides.Remove(guide);
                _db.SaveChanges();
                return(true);
            }

            return(false);
        }
예제 #29
0
        public bool Delete(int id)
        {
            var profession = this.ById(id);

            if (profession != null)
            {
                _db.Professions.Remove(profession);
                _db.SaveChanges();
                return(true);
            }

            return(false);
        }
예제 #30
0
 public void Setup()
 {
     if (!_environment.IsDevelopment())
     {
         throw new System.Exception("Cannot seed a dev database in a non-development environmetn");
     }
     _context.Database.Migrate();
     if (_context.User.All(u => u.Id != 1))
     {
         _context.Add(new User
         {
             Username = "******",
             Password = "******" /*Password1*/
         });
     }
     _context.SaveChanges();
 }