public void TotalDealScraped() { //Given Hotukdeals hotukdeals = scraper.Hotukdeal(); //When //Then Assert.Equal(20, hotukdeals.Total); }
public void RssFeedItem() { Hotukdeals hotukdeals = hotUKDealRss.Hotukdeal(); Deal deal = hotukdeals.deals[0]; String firstItemName = deal.Name; string link = deal.Link; // check if the first deal is similar to one to rss // Assert.Equal("1,000 free audiobooks @ Open Culture",firstItemName); // Assert.Equal("https://www.hotukdeals.com/deals/1000-free-audiobooks-3490202", link); // Assert.Equal("£100.64", deal.Price); // Assert.Equal("Amazon", deal.MerchantName); // Assert.Equal("https://images.hotukdeals.com/threads/thread_list_big/default/3490255_1.jpg", deal.ImageLink); }
public void RssFeedCount() { Hotukdeals hotukdeals = hotUKDealRss.Hotukdeal(); int totalDeal = hotukdeals.Total; Assert.Equal(20, totalDeal); Deal deal = new DealBuilder() .Name("UnitTest") .Build(); hotukdeals.addDeal(deal); totalDeal = hotukdeals.Total; Assert.Equal(21, totalDeal); }
private async Task PostDeals(Hotukdeals hotukdeals, SocketTextChannel channel) { foreach (Deal deal in hotukdeals.deals) { var embed = new EmbedBuilder() { Title = deal.Name, Url = deal.DirectLink, Description = $"{deal.Description}...[Read More]({deal.Link})", Color = Color.Green, ThumbnailUrl = deal.ImageLink, Footer = new EmbedFooterBuilder() .WithText($"{deal.MadeHot} - {deal.MerchantName}") .WithIconUrl(deal.CategoryImage), }; embed.AddField("Price", deal.Price, true); try{ embed.AddField("Hot Meter", deal.HotMeter, true); embed.AddField("Comments", deal.Comments, true); } catch (ArgumentException secondaryInfo) { embed.AddField("Category ", deal.Category, true); embed.AddField("Merchant", deal.MerchantName, true); embed.Footer = new EmbedFooterBuilder() .WithText($"{deal.PostedDate}"); // Console.WriteLine(nameof(secondaryInfo) + " doesnt exist"); } await Task.Delay(2000); await channel.SendMessageAsync(embed : embed.Build()); } }
private async Task processHotUkDeal(ulong channelID, Hotukdeals hotukdeal) { System.Console.WriteLine("loop"); var channel = (SocketTextChannel)_client.GetChannel(channelID); var messages = (IReadOnlyCollection <IMessage>) await channel.GetMessagesAsync(30).FlattenAsync(); // await channel.DeleteMessagesAsync(messages); if (messages.Count != 0) { // returns the object tassk from ascyncron Hotukdeals dealsNotPosted = filterExpiredDeal(messages, hotukdeal).Result; await PostDeals(dealsNotPosted, channel); } else { await PostDeals(hotukdeal, channel); } }
private async Task <Hotukdeals> filterExpiredDeal(IReadOnlyCollection <IMessage> messages, Hotukdeals hotukdeals) { bool dealExist = false; // check all messages sent in the channel foreach (var message in messages) { // all messages were sent as embeds before, only need to check titles foreach (var embed in message.Embeds) { var title = embed.Title; // check the altest deals scraped and comapre foreach (var deal in hotukdeals.deals) { //System.Console.WriteLine(title); var name = deal.Name; // if the deal exist, just ignore it and break out loop if (title.Equals(name)) { dealExist = true; hotukdeals.removeDeal(deal); break; } else { dealExist = false; } } // if it no longer exist on the hotukdeal, means the deal expired so free to delete message if (!dealExist) { // delete the message as it's not needed await Task.Delay(2000); await message.DeleteAsync(); } } } // return all the deals that were not posted return(hotukdeals); }