Feature/projects (#18)

* add up to 5 attachments

* multiclause function event handler

* fix incorrect Cog calls

* add default param as "all" so we can start differentiating the types of identifications in the future - projects / diseases

* abstract message sending

* overwrite global application commands

* pass message from projects to message sending and id functions
This commit is contained in:
2025-12-08 13:17:18 +01:00
committed by GitHub
parent 0eddf04678
commit 3e6116423a
6 changed files with 223 additions and 77 deletions
+86 -1
View File
@@ -1,5 +1,90 @@
defmodule PlantIdDiscordBotTest.Cog do
use ExUnit.Case
use ExUnit.Case, async: true
doctest PlantIdDiscordBot.Cog.Info
doctest PlantIdDiscordBot.Cog.PlantNetMessage
alias PlantIdDiscordBot.Cog.PlantNetMessage
@plantnet_api_base_url Application.compile_env(:plantid_discord_bot, :plantnet_api_base_url)
@plantnet_api_key Application.compile_env(:plantid_discord_bot, :plantnet_api_key)
@image_filenames ["image1.jpg", "image2.jpg", "image3.jpg"]
describe "build_query_uri/2" do
test "all" do
uri = PlantNetMessage.build_query_uri(@image_filenames, "all")
test_uri =
@image_filenames
|> Enum.reduce(
URI.parse("#{@plantnet_api_base_url}/identify/all")
|> URI.append_query("api-key=#{@plantnet_api_key}"),
fn filename, acc ->
URI.append_query(acc, "images=#{filename}")
end
)
|> URI.append_query("nb-results=5")
|> URI.append_query("type=kt")
|> URI.to_string()
assert uri == test_uri
end
test "diseases" do
uri = PlantNetMessage.build_query_uri(@image_filenames, "diseases")
test_uri =
@image_filenames
|> Enum.reduce(
URI.parse("#{@plantnet_api_base_url}/diseases/identify")
|> URI.append_query("api-key=#{@plantnet_api_key}"),
fn filename, acc ->
URI.append_query(acc, "images=#{filename}")
end
)
|> URI.append_query("nb-results=5")
|> URI.append_query("type=kt")
|> URI.to_string()
assert uri == test_uri
end
test "projects" do
uri =
PlantNetMessage.build_query_uri(@image_filenames, %{name: "projects", id: "project-id"})
test_uri =
@image_filenames
|> Enum.reduce(
URI.parse("#{@plantnet_api_base_url}/identify/project-id")
|> URI.append_query("api-key=#{@plantnet_api_key}"),
fn filename, acc ->
URI.append_query(acc, "images=#{filename}")
end
)
|> URI.append_query("nb-results=5")
|> URI.append_query("type=kt")
|> URI.to_string()
assert uri == test_uri
end
test "default" do
uri = PlantNetMessage.build_query_uri(@image_filenames, "all")
test_uri =
@image_filenames
|> Enum.reduce(
URI.parse("#{@plantnet_api_base_url}/identify/all")
|> URI.append_query("api-key=#{@plantnet_api_key}"),
fn filename, acc ->
URI.append_query(acc, "images=#{filename}")
end
)
|> URI.append_query("nb-results=5")
|> URI.append_query("type=kt")
|> URI.to_string()
assert uri == test_uri
end
end
end