public void Test_CalculateShopDiscount_ReturnsCorrectValue_WhenCalledWithAnInt(int reputation, int expectedResult)
        {
            //Arrange

            //Act
            var ret = itemService.CalculateShopDiscount(reputation);

            //Assert
            Assert.AreEqual(expectedResult, ret);
        }
예제 #2
0
        public IActionResult Shop(int partyId, int characterId, bool insufficentFunds = false)
        {
            if (insufficentFunds)
            {
                ViewData["InsufficentFunds"] = "Character doesn't have enough gold";
            }

            using (var gloomhavenTrackerContext = (GloomhavenTrackerContext)provider.GetService(typeof(GloomhavenTrackerContext)))
            {
                var reputation = gloomhavenTrackerContext.Characters.Include(x => x.Party).Single(x => x.Id == characterId && x.PartyId == partyId).Party.Reputation;
                var listOfAvailableItemsForCharacter = gloomhavenTrackerContext.Items.Include(x => x.CharacterItems)
                                                       .Include(x => x.PartyItems)
                                                       .Where(x => (x.CharacterItems.Any(x => x.CharacterId != characterId) || x.CharacterItems.Count == 0) && x.Available)
                                                       .ToList();

                var viewModel = new ShopViewModel()
                {
                    CharacterId   = characterId,
                    Items         = itemService.GetItemsWithAdjustedAmounts(listOfAvailableItemsForCharacter, partyId),
                    PartyDiscount = itemService.CalculateShopDiscount(reputation)
                };
                return(View(viewModel));
            }
        }