Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public async Task AddAsync_PersistsKarmaDocument()
[Fact]
public async Task GetCurrentNetKarmaAsync_WithMixedKarma_ReturnsCorrectNetScore()
{
// 2× PozzyPoz = 2, 3× NeggyNeg = +3 → net = +1
// 2× PozzyPoz = +2, 3× NeggyNeg = -3 → net = -1
await _sut.AddAsync(MakeKarma("alice", "x", KarmaType.PozzyPoz));
await _sut.AddAsync(MakeKarma("alice", "x", KarmaType.PozzyPoz));
await _sut.AddAsync(MakeKarma("alice", "x", KarmaType.NeggyNeg));
Expand All @@ -46,7 +46,7 @@ public async Task GetCurrentNetKarmaAsync_WithMixedKarma_ReturnsCorrectNetScore(

var net = await _sut.GetCurrentNetKarmaAsync("alice");

net.ShouldBe(1);
net.ShouldBe(-1);
}

[Fact]
Expand All @@ -56,7 +56,7 @@ public async Task GetCurrentNetKarmaAsync_IsCaseInsensitive()

var net = await _sut.GetCurrentNetKarmaAsync("bob");

net.ShouldBe(1);
net.ShouldBe(-1);
}

[Fact]
Expand Down Expand Up @@ -120,12 +120,12 @@ public async Task GetKarmaReasonsAsync_ExcludesExpiredEntries()
[Fact]
public async Task GetLeaderBoardAsync_ReturnsCorrectOrderAndSize()
{
// net_karma: PozzyPoz → 1, NeggyNeg → +1
// net_karma: PozzyPoz → +1, NeggyNeg → -1
// Leader board is sorted Descending by net_karma
await AddKarmaMultiple("leader-a", KarmaType.NeggyNeg, 5); // net +5
await AddKarmaMultiple("leader-b", KarmaType.NeggyNeg, 3); // net +3
await AddKarmaMultiple("leader-c", KarmaType.NeggyNeg, 1); // net +1
await AddKarmaMultiple("leader-d", KarmaType.PozzyPoz, 2); // net –2 (should not appear in top 3)
await AddKarmaMultiple("leader-a", KarmaType.PozzyPoz, 5); // net +5
await AddKarmaMultiple("leader-b", KarmaType.PozzyPoz, 3); // net +3
await AddKarmaMultiple("leader-c", KarmaType.PozzyPoz, 1); // net +1
await AddKarmaMultiple("leader-d", KarmaType.NeggyNeg, 2); // net –2 (should not appear in top 3)

var board = await _sut.GetLeaderBoardAsync();

Expand All @@ -142,10 +142,10 @@ public async Task GetLeaderBoardAsync_ReturnsCorrectOrderAndSize()
public async Task GetLoserBoardAsync_ReturnsCorrectOrderAndSize()
{
// Loser board is sorted Ascending by net_karma
await AddKarmaMultiple("loser-a", KarmaType.PozzyPoz, 5); // net –5
await AddKarmaMultiple("loser-b", KarmaType.PozzyPoz, 3); // net –3
await AddKarmaMultiple("loser-c", KarmaType.PozzyPoz, 1); // net –1
await AddKarmaMultiple("loser-d", KarmaType.NeggyNeg, 2); // net +2 (should not appear in top 3)
await AddKarmaMultiple("loser-a", KarmaType.NeggyNeg, 5); // net –5
await AddKarmaMultiple("loser-b", KarmaType.NeggyNeg, 3); // net –3
await AddKarmaMultiple("loser-c", KarmaType.NeggyNeg, 1); // net –1
await AddKarmaMultiple("loser-d", KarmaType.PozzyPoz, 2); // net +2 (should not appear in top 3)

var board = await _sut.GetLoserBoardAsync();

Expand All @@ -161,10 +161,10 @@ public async Task GetLoserBoardAsync_ReturnsCorrectOrderAndSize()
[Fact]
public async Task GetLeaderBoardAsync_DefaultSizeIsThree()
{
await AddKarmaMultiple("rank-1", KarmaType.NeggyNeg, 4);
await AddKarmaMultiple("rank-2", KarmaType.NeggyNeg, 3);
await AddKarmaMultiple("rank-3", KarmaType.NeggyNeg, 2);
await AddKarmaMultiple("rank-4", KarmaType.NeggyNeg, 1);
await AddKarmaMultiple("rank-1", KarmaType.PozzyPoz, 4);
await AddKarmaMultiple("rank-2", KarmaType.PozzyPoz, 3);
await AddKarmaMultiple("rank-3", KarmaType.PozzyPoz, 2);
await AddKarmaMultiple("rank-4", KarmaType.PozzyPoz, 1);

var board = await _sut.GetLeaderBoardAsync();

Expand Down
2 changes: 1 addition & 1 deletion Bottomly/Repositories/KarmaRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ private async Task<IReadOnlyList<KarmaScore>> GetNetKarmaAggregateAsync(
"net_karma", new BsonDocument("$cond", new BsonArray
{
new BsonDocument("$eq", new BsonArray { "$karma_type", nameof(KarmaType.PozzyPoz) }),
-1, 1
1, -1
})
},
{ "awarded", "$awarded" }
Expand Down
Loading