public async Task GetMemeTemplatesAsync() { IReadOnlyList <string> templates = await MemeGenService.GetMemeTemplatesAsync(); Assert.IsNotNull(templates); CollectionAssert.AllItemsAreNotNull(templates); CollectionAssert.AllItemsAreUnique(templates); CollectionAssert.IsOrdered(templates); }
public Task CreateMemeAsync(CommandContext ctx, [Description("Template.")] string template, [Description("Top Text.")] string topText, [Description("Bottom Text.")] string bottomText) { string url = MemeGenService.GenerateMeme(template, topText, bottomText); return(ctx.RespondAsync(embed: new DiscordEmbedBuilder { Title = "The meme you asked me to generate", Url = url, ImageUrl = url }.WithFooter("Powered by memegen.link").Build())); }
public Task CreateMemeAsync(CommandContext ctx, [Description("desc-meme-template")] string template, [Description("desc-meme-text-top")] string topText, [Description("desc-meme-text-bot")] string bottomText) { string url = MemeGenService.GenerateMemeUrl(template, topText, bottomText); return(ctx.RespondWithLocalizedEmbedAsync(emb => { emb.WithTitle(template); emb.WithColor(this.ModuleColor); emb.WithUrl(url); emb.WithImageUrl(url); emb.WithLocalizedFooter("fmt-powered-by", null, MemeGenService.Provider); })); }
public async Task TemplatesAsync(CommandContext ctx) { IReadOnlyList <string> templates = await MemeGenService.GetMemeTemplatesAsync(); if (templates == null) { throw new CommandFailedException("Failed to retrieve meme templates."); } await ctx.SendCollectionInPagesAsync( "Meme templates", templates, s => s, this.ModuleColor ).ConfigureAwait(false); }
public async Task TemplatesAsync(CommandContext ctx, [RemainingText, Description("desc-meme-template")] string?template = null) { if (string.IsNullOrWhiteSpace(template)) { IReadOnlyList <MemeTemplate> templates = await MemeGenService.GetMemeTemplatesAsync(); if (templates is null) { throw new CommandFailedException(ctx, "cmd-err-meme-template-fail"); } await ctx.PaginateAsync( "str-meme-templates", templates.OrderBy(t => t.Key), t => $"{Formatter.Bold(t.Name)}: {Formatter.MaskedUrl(t.Key, new Uri(t.Url))}", this.ModuleColor ); } else { MemeTemplate?t = await MemeGenService.GetMemeTemplateAsync(template); if (t is null) { throw new CommandFailedException(ctx, "cmd-err-meme-template-404"); } await ctx.RespondAsync(embed : new DiscordEmbedBuilder { Title = $"{t.Name}: {t.Key}", ImageUrl = t.Url, Color = this.ModuleColor, Url = t.Url, }.Build()); } }
public void GenerateMemeTest() { Assert.AreEqual( "http://memegen.link/tmp/top/bottom.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top", "bottom") ); Assert.AreEqual( "http://memegen.link/tmp/top~q/bottom.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top?", "bottom") ); Assert.AreEqual( "http://memegen.link/tmp/top/bottom~q.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top", "bottom?") ); Assert.AreEqual( "http://memegen.link/tmp/top~p/bottom.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top%", "bottom") ); Assert.AreEqual( "http://memegen.link/tmp/top/bottom~p.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top", "bottom%") ); Assert.AreEqual( "http://memegen.link/tmp/top~h/bottom.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top#", "bottom") ); Assert.AreEqual( "http://memegen.link/tmp/top/bottom~h.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top", "bottom#") ); Assert.AreEqual( "http://memegen.link/tmp/top~s/bottom.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top/", "bottom") ); Assert.AreEqual( "http://memegen.link/tmp/top/bottom~s.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top", "bottom/") ); Assert.AreEqual( "http://memegen.link/tmp/top~q/bottom.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top?", "bottom") ); Assert.AreEqual( "http://memegen.link/tmp/top-text/bottom.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top text", "bottom") ); Assert.AreEqual( "http://memegen.link/tmp/top--/bottom.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top-", "bottom") ); Assert.AreEqual( "http://memegen.link/tmp/top/bottom--.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top", "bottom-") ); Assert.AreEqual( "http://memegen.link/tmp/top__/bottom.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top_", "bottom") ); Assert.AreEqual( "http://memegen.link/tmp/top/bottom__.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top", "bottom_") ); Assert.AreEqual( "http://memegen.link/tmp/top''/bottom.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top\"", "bottom") ); Assert.AreEqual( "http://memegen.link/tmp/top/bottom__.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top", "bottom_") ); Assert.AreEqual( "http://memegen.link/tmp/top____/bottom.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top__", "bottom") ); Assert.AreEqual( "http://memegen.link/tmp/top/remove-multiple-space.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "top", "remove multiple space") ); Assert.AreEqual( "http://memegen.link/tmp/remove-multiple-space/bottom.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "remove multiple space", "bottom") ); Assert.AreEqual( "http://memegen.link/tmp/_/_.jpg?font=impact", MemeGenService.GenerateMeme("tmp", "", null) ); Assert.AreEqual( "http://memegen.link/tmp/_/_.jpg?font=impact", MemeGenService.GenerateMeme("tmp", null, "") ); Assert.AreEqual( "http://memegen.link/tmp/_/_.jpg?font=impact", MemeGenService.GenerateMeme("tmp", " ", null) ); Assert.AreEqual( "http://memegen.link/tmp/_/_.jpg?font=impact", MemeGenService.GenerateMeme("tmp", null, " ") ); }
public void GenerateMemeTest() { Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top", "bottom"), Is.EqualTo($"{ApiUrl}/buzz/top/bottom.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top?", "bottom"), Is.EqualTo($"{ApiUrl}/buzz/top~q/bottom.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top", "bottom?"), Is.EqualTo($"{ApiUrl}/buzz/top/bottom~q.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top%", "bottom"), Is.EqualTo($"{ApiUrl}/buzz/top~p/bottom.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top", "bottom%"), Is.EqualTo($"{ApiUrl}/buzz/top/bottom~p.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top#", "bottom"), Is.EqualTo($"{ApiUrl}/buzz/top~h/bottom.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top", "bottom#"), Is.EqualTo($"{ApiUrl}/buzz/top/bottom~h.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top/", "bottom"), Is.EqualTo($"{ApiUrl}/buzz/top~s/bottom.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top", "bottom/"), Is.EqualTo($"{ApiUrl}/buzz/top/bottom~s.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top?", "bottom"), Is.EqualTo($"{ApiUrl}/buzz/top~q/bottom.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top text", "bottom"), Is.EqualTo($"{ApiUrl}/buzz/top-text/bottom.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top-", "bottom"), Is.EqualTo($"{ApiUrl}/buzz/top--/bottom.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top", "bottom-"), Is.EqualTo($"{ApiUrl}/buzz/top/bottom--.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top_", "bottom"), Is.EqualTo($"{ApiUrl}/buzz/top__/bottom.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top", "bottom_"), Is.EqualTo($"{ApiUrl}/buzz/top/bottom__.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top\"", "bottom"), Is.EqualTo($"{ApiUrl}/buzz/top''/bottom.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("buzz", "top", "bottom_"), Is.EqualTo($"{ApiUrl}/buzz/top/bottom__.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("tmp", "top__", "bottom"), Is.EqualTo($"{ApiUrl}/tmp/top____/bottom.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("tmp", "top", "remove multiple space"), Is.EqualTo($"{ApiUrl}/tmp/top/remove-multiple-space.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("tmp", "remove multiple space", "bottom"), Is.EqualTo($"{ApiUrl}/tmp/remove-multiple-space/bottom.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("tmp", "", null), Is.EqualTo($"{ApiUrl}/tmp/_/_.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("tmp", null, ""), Is.EqualTo($"{ApiUrl}/tmp/_/_.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("tmp", " ", null), Is.EqualTo($"{ApiUrl}/tmp/_/_.jpg?font=impact") ); Assert.That( MemeGenService.GenerateMemeUrl("tmp", null, " "), Is.EqualTo($"{ApiUrl}/tmp/_/_.jpg?font=impact") ); }