public async Task SetupAsync() { await TestHelpers.ResetAsync().ConfigureAwait(false); Broadcaster.Reset(); _session = await TestHelpers.Instance.GenerateSessionAsync().ConfigureAwait(false); _bazaarHttpClient = new Mock <IBazaarHttpClient>(); _itemInstanceDao = new Mock <IDao <IItemInstanceDto?, Guid> >(); _itemProvider = new Mock <IItemProvider>(); _cbuyPacketHandler = new CBuyPacketHandler(_bazaarHttpClient.Object, _itemProvider.Object, Logger, _itemInstanceDao.Object); _bazaarHttpClient.Setup(b => b.GetBazaarLinkAsync(0)).ReturnsAsync( new BazaarLink { SellerName = "test", BazaarItem = new BazaarItemDto { Price = 50, Amount = 1 }, ItemInstance = new ItemInstanceDto { ItemVNum = 1012, Amount = 1 } }); _bazaarHttpClient.Setup(b => b.GetBazaarLinkAsync(2)).ReturnsAsync( new BazaarLink { SellerName = _session !.Character.Name, BazaarItem = new BazaarItemDto { Price = 60, Amount = 1 }, ItemInstance = new ItemInstanceDto { ItemVNum = 1012 } });
public LanguageKey AddBazaar([FromBody] BazaarRequest bazaarRequest) { var items = _holder.BazaarItems.Values.Where(o => o.BazaarItem !.SellerId == bazaarRequest.CharacterId); if (items.Count() > 10 * (bazaarRequest.HasMedal ? 10 : 1) - 1) { return(LanguageKey.LIMIT_EXCEEDED); } var item = _itemInstanceDao.FirstOrDefault(s => s.Id == bazaarRequest.ItemInstanceId); if ((item == null) || (item.Amount < bazaarRequest.Amount) || (bazaarRequest.Amount < 0) || (bazaarRequest.Price < 0)) { throw new ArgumentException(); } Guid itemId; if (item.Amount == bazaarRequest.Amount) { itemId = item.Id; } else { itemId = item.Id; item.Amount -= bazaarRequest.Amount; _itemInstanceDao.InsertOrUpdate(ref item); item.Id = Guid.NewGuid(); } _itemInstanceDao.InsertOrUpdate(ref item); var bazaarItem = new BazaarItemDto { Amount = bazaarRequest.Amount, DateStart = SystemTime.Now(), Duration = bazaarRequest.Duration, IsPackage = bazaarRequest.IsPackage, MedalUsed = bazaarRequest.HasMedal, Price = bazaarRequest.Price, SellerId = bazaarRequest.CharacterId, ItemInstanceId = item.Id }; _bazaarItemDao.InsertOrUpdate(ref bazaarItem); _holder.BazaarItems.TryAdd(bazaarItem.BazaarItemId, new BazaarLink { BazaarItem = bazaarItem, SellerName = bazaarRequest.CharacterName, ItemInstance = item.Adapt <ItemInstanceDto>() }); return(LanguageKey.OBJECT_IN_BAZAAR); }