From 9ebca20dc6747f81c3fcde5d23424001e1906809 Mon Sep 17 00:00:00 2001 From: shibao Date: Mon, 4 Jul 2022 20:06:31 -0400 Subject: [PATCH] add error case for create_changeset --- lib/cannery/activity_log/shot_group.ex | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/cannery/activity_log/shot_group.ex b/lib/cannery/activity_log/shot_group.ex index 4355a7e..f81c1fb 100644 --- a/lib/cannery/activity_log/shot_group.ex +++ b/lib/cannery/activity_log/shot_group.ex @@ -38,7 +38,12 @@ defmodule Cannery.ActivityLog.ShotGroup do @type id :: UUID.t() @doc false - @spec create_changeset(new_shot_group(), User.t(), AmmoGroup.t(), attrs :: map()) :: + @spec create_changeset( + new_shot_group(), + User.t() | any(), + AmmoGroup.t() | any(), + attrs :: map() + ) :: Changeset.t(new_shot_group()) def create_changeset( shot_group, @@ -56,6 +61,14 @@ defmodule Cannery.ActivityLog.ShotGroup do |> validate_required([:count, :ammo_group_id, :user_id]) end + def create_changeset(shot_group, _invalid_user, _invalid_ammo_group, attrs) do + shot_group + |> cast(attrs, [:count, :notes, :date]) + |> validate_number(:count, greater_than: 0) + |> validate_required([:count, :ammo_group_id, :user_id]) + |> add_error(:invalid, dgettext("errors", "Please select a valid user and ammo group")) + end + defp validate_create_shot_group_count(changeset, %AmmoGroup{count: ammo_group_count}) do if changeset |> Changeset.get_field(:count) > ammo_group_count do error = dgettext("errors", "Count must be less than %{count}", count: ammo_group_count)