From 0b656b4d24673e32165935adff55589d17c8e74d Mon Sep 17 00:00:00 2001 From: Owen Date: Tue, 31 Dec 2024 21:40:45 +0100 Subject: [PATCH] parsed message paragragh spacing fixes --- lib/plantnet/parser.ex | 14 +++----------- test/plantnet/parser_test.exs | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/lib/plantnet/parser.ex b/lib/plantnet/parser.ex index d9757aa..d5b75a5 100644 --- a/lib/plantnet/parser.ex +++ b/lib/plantnet/parser.ex @@ -82,15 +82,7 @@ defmodule PlantIdDiscordBot.PlantNet.Parser do best_result_iucn_category = best_result["iucn"]["category"] score = round(best_result["score"] * 100) |> Integer.to_string() - """ - My best guess is **#{best_guess_name}** with a confidence of **#{score}%**. Common names include **#{Enum.join(best_result["species"]["commonNames"], ", ")}**. - - [GBIF](<#{best_result["gbif_url"]}>) | [PFAF](<#{best_result["pfaf_url"]}>) | [POWO](<#{best_result["powo_url"]}>) - - #{if best_result_iucn_category, do: "Threat status: #{best_result_iucn_category}", else: ""} - - #{get_alternatives(other_results)} - """ + "My best guess is **#{best_guess_name}** with a confidence of **#{score}%**. Common names include **#{Enum.join(best_result["species"]["commonNames"], ", ")}**.\n\n[GBIF](<#{best_result["gbif_url"]}>) | [PFAF](<#{best_result["pfaf_url"]}>) | [POWO](<#{best_result["powo_url"]}>)#{if best_result_iucn_category, do: "\n\nThreat status: #{best_result_iucn_category}"}#{get_alternatives(other_results)}" end @spec generate_gbif_url(map()) :: map() @@ -122,13 +114,13 @@ defmodule PlantIdDiscordBot.PlantNet.Parser do defp get_alternatives(data) do if length(data) === 0 do - "No alternatives found." + "\n\nNo alternatives found." else alternatives = Enum.map(data, & &1["species"]["scientificNameWithoutAuthor"]) |> Enum.join(", ") - "Alternatives include **#{alternatives}**." + "\n\nAlternatives include **#{alternatives}**." end end end diff --git a/test/plantnet/parser_test.exs b/test/plantnet/parser_test.exs index b2715b0..01576b3 100644 --- a/test/plantnet/parser_test.exs +++ b/test/plantnet/parser_test.exs @@ -34,4 +34,24 @@ defmodule PlantIdDiscordBotTest.PlantNet.Parser do refute String.contains?(message, "Threat status: ") end + + describe "message paragraph spacing" do + test "iucn data plus alternatives" do + message = + PlantNetFixtures.parsed_response_with_urls() + |> Parser.generate_response_message() + + assert message == + "My best guess is **Prunus cerasifera** with a confidence of **88%**. Common names include **Cherry plum, myrobalan, Cherry Plum, Purple-leaf Plum**.\n\n[GBIF]() | [PFAF]() | [POWO]()\n\nThreat status: DD\n\nAlternatives include **Prunus × cistena**." + end + + test "no iucn data" do + message = + PlantNetFixtures.parsed_response_with_urls_no_iucn() + |> Parser.generate_response_message() + + assert message == + "My best guess is **Prunus cerasifera** with a confidence of **88%**. Common names include **Cherry plum, myrobalan, Cherry Plum, Purple-leaf Plum**.\n\n[GBIF]() | [PFAF]() | [POWO]()\n\nAlternatives include **Prunus × cistena**." + end + end end