mirror of
https://github.com/TheRealOwenRees/plantid-discord-bot.git
synced 2026-07-22 20:16:57 +00:00
updated tests
This commit is contained in:
@@ -73,7 +73,7 @@ jobs:
|
||||
# extract artifacts
|
||||
tar -xzf release.tar.gz
|
||||
# save metrics and stop the bot
|
||||
current_release/bin/plantid_discord_bot rpc "PlantidDiscordBot.Metrics.write()"
|
||||
current_release/bin/plantid_discord_bot rpc "PlantidDiscordBot.Metrics.backup()"
|
||||
current_release/bin/plantid_discord_bot stop || true
|
||||
# switch releases
|
||||
rm -rf old_release
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
**0.2.1**
|
||||
|
||||
- Removed `No alternatives found` text
|
||||
|
||||
**0.2.0**
|
||||
|
||||
- Implemented the ability to ID attachments without using application commands
|
||||
- Wording changes for plant database links
|
||||
- `Threat Status` changed to `Conservation Status`
|
||||
|
||||
**0.1.4**
|
||||
|
||||
- Added first and last request date to metrics
|
||||
|
||||
**0.1.3**
|
||||
|
||||
- Typo corrections in README.md
|
||||
- Metrics as state, written to disk every hour
|
||||
|
||||
**0.1.2**
|
||||
|
||||
- bug fixes around `Threat Status`, choosing to not display when no IUCU data is available
|
||||
|
||||
**0.1.1**
|
||||
|
||||
- removed logger backend code in favour of `LoggerWebhookBackend`
|
||||
|
||||
**0.1.0 - Initial Release**
|
||||
-41
@@ -1,41 +0,0 @@
|
||||
ARG ELIXIR="1.16.2"
|
||||
ARG ERLANG="26.0.2"
|
||||
ARG DEBIAN_VERSION="buster-20240513-slim"
|
||||
|
||||
# Step 1: Build release
|
||||
FROM hexpm/elixir:${ELIXIR}-erlang-${ERLANG}-debian-${DEBIAN_VERSION} AS build
|
||||
|
||||
WORKDIR /plantid_discord_bot
|
||||
|
||||
RUN MIX_ENV=prod
|
||||
|
||||
RUN mix local.hex --force && \
|
||||
mix local.rebar --force
|
||||
|
||||
COPY mix.exs mix.lock ./
|
||||
COPY config config
|
||||
COPY lib lib
|
||||
|
||||
RUN mix deps.get --only prod
|
||||
RUN MIX_ENV=prod mix release
|
||||
|
||||
# Step 2: Create app image
|
||||
FROM debian:${DEBIAN_VERSION}
|
||||
|
||||
WORKDIR /plantid_discord_bot
|
||||
|
||||
RUN apt-get update -y && apt-get install -y openssl locales
|
||||
|
||||
COPY \
|
||||
--from=build \
|
||||
--chown=nobody:root \
|
||||
/plantid_discord_bot/_build/prod/rel/plantid_discord_bot ./
|
||||
|
||||
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
|
||||
ENV LANG="en_US.UTF-8"
|
||||
ENV LANGUAGE="en_US:en"
|
||||
ENV LC_ALL="en_US.UTF-8"
|
||||
|
||||
EXPOSE 4321
|
||||
|
||||
CMD ["/plantid_discord_bot/bin/plantid_discord_bot", "start"]
|
||||
@@ -1,18 +0,0 @@
|
||||
services:
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: plantid_discord_bot
|
||||
environment:
|
||||
- MIX_ENV=prod
|
||||
- PLANTNET_API_KEY=${PLANTNET_API_KEY}
|
||||
- DISCORD_TOKEN=${DISCORD_TOKEN}
|
||||
- LOGS_DISCORD_WEBHOOK_URL=${LOGS_DISCORD_WEBHOOK_URL}
|
||||
ports:
|
||||
- "4321:4321"
|
||||
volumes:
|
||||
- appdata:/plantid_discord_bot
|
||||
|
||||
volumes:
|
||||
appdata:
|
||||
@@ -1,4 +1,7 @@
|
||||
defmodule PlantIdDiscordBot.Metrics do
|
||||
@moduledoc """
|
||||
API for managing metrics for the bot.
|
||||
"""
|
||||
alias PlantIdDiscordBot.Metrics.Requests
|
||||
alias PlantIdDiscordBot.RateLimiter
|
||||
|
||||
|
||||
+15
-13
@@ -2,25 +2,27 @@ defmodule PlantIdDiscordBot.MetricsTest do
|
||||
use ExUnit.Case
|
||||
doctest PlantIdDiscordBot.Metrics
|
||||
|
||||
alias PlantIdDiscordBot.Metrics
|
||||
|
||||
test "put multiple entries into state" do
|
||||
PlantIdDiscordBot.Metrics.reset()
|
||||
PlantIdDiscordBot.Metrics.put(123, "Test Guild 1")
|
||||
PlantIdDiscordBot.Metrics.put(321, "Test Guild 2")
|
||||
Metrics.Requests.reset()
|
||||
Metrics.increase_request_count(123, "Test Guild 1")
|
||||
Metrics.increase_request_count(321, "Test Guild 2")
|
||||
|
||||
keys =
|
||||
PlantIdDiscordBot.Metrics.get_all()
|
||||
Metrics.requests()
|
||||
|> Map.keys()
|
||||
|
||||
assert length(keys) == 2
|
||||
|
||||
%PlantIdDiscordBot.Metrics{
|
||||
%Metrics.Requests{
|
||||
guild_id: guild_id1,
|
||||
guild_name: guild_name1,
|
||||
first_request_at: first_request_at1,
|
||||
last_request_at: last_request_at1,
|
||||
total_requests: total_requests1
|
||||
} =
|
||||
PlantIdDiscordBot.Metrics.get(123)
|
||||
Metrics.requests(123)
|
||||
|
||||
assert guild_id1 == 123
|
||||
assert guild_name1 == "Test Guild 1"
|
||||
@@ -28,14 +30,14 @@ defmodule PlantIdDiscordBot.MetricsTest do
|
||||
assert %DateTime{} = last_request_at1
|
||||
assert total_requests1 == 1
|
||||
|
||||
%PlantIdDiscordBot.Metrics{
|
||||
%Metrics.Requests{
|
||||
guild_id: guild_id2,
|
||||
guild_name: guild_name2,
|
||||
first_request_at: first_request_at2,
|
||||
last_request_at: last_request_at2,
|
||||
total_requests: total_requests2
|
||||
} =
|
||||
PlantIdDiscordBot.Metrics.get(321)
|
||||
Metrics.requests(321)
|
||||
|
||||
assert guild_id2 == 321
|
||||
assert guild_name2 == "Test Guild 2"
|
||||
@@ -45,18 +47,18 @@ defmodule PlantIdDiscordBot.MetricsTest do
|
||||
end
|
||||
|
||||
test "update requests for a guild" do
|
||||
PlantIdDiscordBot.Metrics.reset()
|
||||
PlantIdDiscordBot.Metrics.put(123, "Test Guild 1")
|
||||
PlantIdDiscordBot.Metrics.put(123, "Test Guild 1")
|
||||
Metrics.Requests.reset()
|
||||
Metrics.increase_request_count(123, "Test Guild 1")
|
||||
Metrics.increase_request_count(123, "Test Guild 1")
|
||||
|
||||
%PlantIdDiscordBot.Metrics{
|
||||
%Metrics.Requests{
|
||||
guild_id: guild_id,
|
||||
guild_name: guild_name,
|
||||
first_request_at: first_request_at,
|
||||
last_request_at: last_request_at,
|
||||
total_requests: total_requests
|
||||
} =
|
||||
PlantIdDiscordBot.Metrics.get(123)
|
||||
Metrics.requests(123)
|
||||
|
||||
assert guild_id == 123
|
||||
assert guild_name == "Test Guild 1"
|
||||
|
||||
Reference in New Issue
Block a user