From 8da0f33faa1ec18050187fbdbf9489d187fa3060 Mon Sep 17 00:00:00 2001 From: Owen Date: Wed, 15 Jan 2025 21:56:45 +0100 Subject: [PATCH] basic error handling test --- config/dev.exs | 2 +- config/prod.exs | 2 +- config/test.exs | 1 + lib/mocks/nostrum_api.ex | 7 +++++++ lib/plantid_discord_bot/cogs/plantnet_message.ex | 10 +++++++--- test/error_handling_test.exs | 15 +++++++++++++-- test/test_helper.exs | 4 +++- 7 files changed, 33 insertions(+), 8 deletions(-) diff --git a/config/dev.exs b/config/dev.exs index c13ddff..fef4517 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -2,7 +2,7 @@ import Config config :plantid_discord_bot, api: Nostrum.Api, - guild: Nostrum.Cache.GuildCache, + guild: PlantIdDiscordBot.Guild, port: 4321 config :plantid_discord_bot, :environment, :dev diff --git a/config/prod.exs b/config/prod.exs index e3bca64..0d1e7f9 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -2,7 +2,7 @@ import Config config :plantid_discord_bot, api: Nostrum.Api, - guild: Nostrum.Cache.GuildCache, + guild: PlantIdDiscordBot.Guild, port: 4000 config :plantid_discord_bot, :environment, :prod diff --git a/config/test.exs b/config/test.exs index df7ec08..4adcfa4 100644 --- a/config/test.exs +++ b/config/test.exs @@ -9,4 +9,5 @@ config :plantid_discord_bot, :environment, :test config :logger, :console, format: "$time $metadata[$level] $message\n", + metadata: [:guild_id, :guild_name], level: :debug diff --git a/lib/mocks/nostrum_api.ex b/lib/mocks/nostrum_api.ex index 4ad4f0e..bee3487 100644 --- a/lib/mocks/nostrum_api.ex +++ b/lib/mocks/nostrum_api.ex @@ -3,6 +3,13 @@ defmodule PlantIdDiscordBotTest.Mocks.Nostrum.Api do Mocks the Nostrum.Api module. """ + # def create_message(_channel_id, content), do: {:ok, content} + + def create_message(_channel_id, content) do + send(self(), {:create_message, 123456, content}) + {:ok, content} + end + def create_interaction_response(_interaction, response), do: {:ok, response} def get_application_information() do diff --git a/lib/plantid_discord_bot/cogs/plantnet_message.ex b/lib/plantid_discord_bot/cogs/plantnet_message.ex index a86c1a6..cce68a9 100644 --- a/lib/plantid_discord_bot/cogs/plantnet_message.ex +++ b/lib/plantid_discord_bot/cogs/plantnet_message.ex @@ -7,7 +7,11 @@ defmodule PlantIdDiscordBot.Cog.PlantNetMessage do alias PlantIdDiscordBot.PlantNet.Parser alias PlantIdDiscordBot.FileServer.File - # @guild Application.compile_env(:plantid_discord_bot, :guild) + # mock modules + @api Application.compile_env(:plantid_discord_bot, :api) + @guild Application.compile_env(:plantid_discord_bot, :guild) + + # env vars @plantnet_api_base_url Application.compile_env(:plantid_discord_bot, :plantnet_api_base_url) @max_results Application.compile_env(:plantid_discord_bot, :max_results) @@ -35,10 +39,10 @@ defmodule PlantIdDiscordBot.Cog.PlantNetMessage do e -> Logger.error(Exception.format(:error, e, __STACKTRACE__), guild_id: message.guild_id, - guild_name: Guild.get_guild_name!(message.guild_id) + guild_name: @guild.get_guild_name!(message.guild_id) ) - Api.create_message(message.channel_id, + @api.create_message(message.channel_id, content: "An error has occured. Please try again later." ) diff --git a/test/error_handling_test.exs b/test/error_handling_test.exs index 2880088..aa6ba37 100644 --- a/test/error_handling_test.exs +++ b/test/error_handling_test.exs @@ -1,8 +1,19 @@ defmodule PlantIdDiscordBot.ErrorHandlingTest do use ExUnit.Case + import ExUnit.CaptureLog - test "do_identification/1 returns nil when an error occurs" do + @guild Application.compile_env(:plantid_discord_bot, :guild) + + test "do_identification/1 returns invokes logger on error" do message = PlantNetFixtures.Message.message() - PlantIdDiscordBot.Cog.PlantNetMessage.do_identification(message) + + log = capture_log(fn -> + PlantIdDiscordBot.Cog.PlantNetMessage.do_identification(message) + + assert_received {:create_message, 123456, content: "An error has occured. Please try again later."} + end) + + assert log =~ "guild_id=#{message.guild_id}" + assert log =~ "guild_name=#{@guild.get_guild_name!(message.guild_id)}" end end diff --git a/test/test_helper.exs b/test/test_helper.exs index 582b93e..b805285 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -2,7 +2,9 @@ ExUnit.start() defmodule PlantNetFixtures.Message do @message %{ - guild_id: 1_002_507_312_159_797_318 + channel_id: 1178600825380155412, + guild_id: 1_002_507_312_159_797_318, + attachments: [%{url: "http://invalid-url.com/image.jpg"}], } def message(), do: @message