-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGuildMemberRepositoryTests.cs
More file actions
118 lines (99 loc) · 3.54 KB
/
GuildMemberRepositoryTests.cs
File metadata and controls
118 lines (99 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
using BaseBotService.Data.Interfaces;
using BaseBotService.Data.Models;
using BaseBotService.Data.Repositories;
using LiteDB;
namespace BaseBotService.Tests.Data.Repositories;
[TestFixture]
public class GuildMemberRepositoryTests
{
private ILiteCollection<GuildMemberHC> _guildMembers;
private ILiteCollection<GuildHC> _guilds;
private IGuildMemberRepository _repository;
[SetUp]
public void SetUp()
{
LiteDatabase db = FakeDataHelper.GetTestDatabase();
_guildMembers = db.GetCollection<GuildMemberHC>();
_guilds = db.GetCollection<GuildHC>();
_repository = new GuildMemberRepository(_guildMembers);
}
[Test]
public void GetUser_ShouldReturnCorrectUser()
{
// Arrange
var guild = FakeDataHelper.GuildFaker.Generate();
var guildMember = guild.Members[0];
_guildMembers.Insert(guildMember);
// Act
var result = _repository.GetUser(guildMember.GuildId, guildMember.MemberId);
// Assert
result.ShouldNotBeNull();
result.MemberId.ShouldBe(guildMember.MemberId);
result.GuildId.ShouldBe(guildMember.GuildId);
}
[Test]
public void AddUser_ShouldAddNewUser()
{
// Arrange
var guild = FakeDataHelper.GuildFaker.Generate();
var newUser = guild.Members[0];
_guilds.Insert(guild);
// Act
_repository.AddUser(newUser);
// Assert
var result = _guildMembers
.FindOne(u => u.MemberId == newUser.MemberId && u.GuildId == newUser.GuildId);
result.ShouldNotBeNull();
result.MemberId.ShouldBe(newUser.MemberId);
result.GuildId.ShouldBe(newUser.GuildId);
}
[Test]
public void UpdateUser_ShouldUpdateExistingUser()
{
// Arrange
var existingUser = FakeDataHelper.GuildFaker.Generate().Members[0];
_guildMembers.Insert(existingUser);
existingUser.ActivityPoints++;
// Act
var updateResult = _repository.UpdateUser(existingUser);
// Assert
updateResult.ShouldBeTrue();
var updatedUser = _guildMembers.FindOne(u => u.MemberId == existingUser.MemberId && u.GuildId == existingUser.GuildId);
updatedUser.ShouldNotBeNull();
updatedUser.ActivityPoints.ShouldBe(existingUser.ActivityPoints);
}
[Test]
public void DeleteUser_ShouldDeleteExistingUser()
{
// Arrange
var existingUser = FakeDataHelper.GuildFaker.Generate().Members[0];
_guildMembers.Insert(existingUser);
// Act
var deleteResult = _repository.DeleteUser(existingUser.GuildId, existingUser.MemberId);
// Assert
deleteResult.ShouldBeTrue();
var deletedUser = _guildMembers.FindOne(u => u.MemberId == existingUser.MemberId && u.GuildId == existingUser.GuildId);
deletedUser.ShouldBeNull();
}
[Test]
public void GetTopUsers_ShouldReturnOrderedLimitedList()
{
// Arrange
var guild = FakeDataHelper.GuildFaker.Generate();
_guilds.Insert(guild);
foreach (var member in guild.Members)
{
_guildMembers.Insert(member);
}
int limit = Math.Min(3, guild.Members.Count);
// Act
var result = _repository.GetTopUsers(guild.GuildId, limit).ToList();
// Assert
result.Count.ShouldBe(limit);
var expected = guild.Members
.OrderByDescending(m => m.ActivityPoints)
.Take(limit)
.Select(m => m.MemberId);
result.Select(r => r.MemberId).ShouldBe(expected);
}
}