Skip to content

Commit 50130e4

Browse files
committed
fix: exclude cancelled bounties and claims from listings
1 parent ea168f6 commit 50130e4

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

lib/algora/bounties/bounties.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -917,12 +917,14 @@ defmodule Algora.Bounties do
917917
|> join(:left, [t: t], r in assoc(t, :repository), as: :r)
918918
|> join(:left, [r: r], ro in assoc(r, :user), as: :ro)
919919
|> where([b], not is_nil(b.amount))
920+
|> where([b], b.status != :cancelled)
920921
|> apply_criteria(criteria)
921922
|> order_by([b], desc: b.amount, desc: b.inserted_at, desc: b.id)
922923
|> select([b, o: o, t: t, ro: ro, r: r], %{
923924
id: b.id,
924925
inserted_at: b.inserted_at,
925926
amount: b.amount,
927+
status: b.status,
926928
owner: %{
927929
id: o.id,
928930
name: o.name,
@@ -956,6 +958,7 @@ defmodule Algora.Bounties do
956958
join: user in assoc(c, :user),
957959
left_join: s in assoc(c, :source),
958960
where: t.id in ^ticket_ids,
961+
where: c.status != :cancelled,
959962
select_merge: %{user: user, source: s}
960963
)
961964
end

test/algora/bounties_test.exs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ defmodule Algora.BountiesTest do
1414
alias Algora.PSP
1515
alias Bounties.Tip
1616

17+
setup do
18+
repo_owner = insert!(:user)
19+
repo = insert!(:repository, %{user: repo_owner})
20+
ticket = insert!(:ticket, %{repository: repo})
21+
22+
%{ticket: ticket}
23+
end
24+
1725
describe "bounties" do
1826
test "create" do
1927
creator = insert!(:user)
@@ -369,4 +377,30 @@ defmodule Algora.BountiesTest do
369377
assert response == String.trim(expected_response)
370378
end
371379
end
380+
381+
describe "list_bounties/1" do
382+
test "does not include cancelled bounties", %{ticket: ticket} do
383+
insert!(:bounty, status: :open, ticket: ticket, owner: insert!(:user))
384+
insert!(:bounty, status: :paid, ticket: ticket, owner: insert!(:user))
385+
insert!(:bounty, status: :cancelled, ticket: ticket, owner: insert!(:user))
386+
387+
bounties = Bounties.list_bounties()
388+
assert Enum.any?(bounties, &(&1.status == :open))
389+
assert Enum.any?(bounties, &(&1.status == :paid))
390+
refute Enum.any?(bounties, &(&1.status == :cancelled))
391+
end
392+
end
393+
394+
describe "list_claims/1" do
395+
test "does not include cancelled claims", %{ticket: ticket} do
396+
insert!(:claim, status: :pending, target: ticket, user: insert!(:user))
397+
insert!(:claim, status: :approved, target: ticket, user: insert!(:user))
398+
insert!(:claim, status: :cancelled, target: ticket, user: insert!(:user))
399+
400+
claims = Bounties.list_claims([ticket.id])
401+
assert Enum.any?(claims, &(&1.status == :pending))
402+
assert Enum.any?(claims, &(&1.status == :approved))
403+
refute Enum.any?(claims, &(&1.status == :cancelled))
404+
end
405+
end
372406
end

test/support/factory.ex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,9 @@ defmodule Algora.Factory do
202202

203203
def bounty_factory do
204204
%Algora.Bounties.Bounty{
205-
id: Nanoid.generate()
205+
id: Nanoid.generate(),
206+
status: :open,
207+
amount: Money.new!(100, :USD)
206208
}
207209
end
208210

0 commit comments

Comments
 (0)