From de60e6e54c98b550b40f08d40469f9a0bd8c9c9f Mon Sep 17 00:00:00 2001 From: SimpleTest Date: Mon, 3 Aug 2026 23:37:59 +0300 Subject: [PATCH] Cover Play reviewer eligibility gates --- test/who_need_help/release_test.exs | 51 +++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/test/who_need_help/release_test.exs b/test/who_need_help/release_test.exs index 2ac776c..1e39baf 100644 --- a/test/who_need_help/release_test.exs +++ b/test/who_need_help/release_test.exs @@ -100,6 +100,57 @@ defmodule WhoNeedHelp.ReleaseTest do Release.prepare_play_review(reviewer.email, reviewer.email) end + test "rejects unconfirmed accounts and accounts without accepted terms", %{ + counterpart: counterpart + } do + unconfirmed = + unconfirmed_user_fixture(display_name: "Unconfirmed Play reviewer") + |> set_password() + + assert {:error, {:reviewer, :email_not_confirmed}} = + Release.play_review_readiness(unconfirmed.email, counterpart.email) + + reviewer = user_fixture(display_name: "Play reviewer without terms") |> set_password() + + {1, nil} = + Repo.update_all( + from(user in Accounts.User, where: user.id == ^reviewer.id), + set: [accepted_terms_at: nil] + ) + + assert {:error, {:reviewer, :terms_not_accepted}} = + Release.play_review_readiness(reviewer.email, counterpart.email) + end + + test "rejects restricted and suspended review accounts", %{ + reviewer: reviewer, + counterpart: counterpart + } do + restricted = + reviewer + |> Accounts.User.moderation_changeset(%{ + moderation_status: :restricted, + moderation_note: "Review account is not eligible" + }) + |> Repo.update!() + + assert {:error, {:reviewer, :account_not_active}} = + Release.play_review_readiness(restricted.email, counterpart.email) + + suspended = + counterpart + |> Accounts.User.moderation_changeset(%{ + moderation_status: :suspended, + moderation_note: "Review counterpart is not eligible" + }) + |> Repo.update!() + + active_reviewer = user_fixture(display_name: "Replacement reviewer") |> set_password() + + assert {:error, {:counterpart, :account_not_active}} = + Release.play_review_readiness(active_reviewer.email, suspended.email) + end + test "rejects staff accounts", %{counterpart: counterpart} do staff = staff_user_fixture([:support], display_name: "Staff reviewer") |> set_password()