Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: Organize code by use cases in persistence project #169

Merged
merged 3 commits into from
Oct 14, 2024
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 @@ -4,7 +4,6 @@ public class MariaDbRepositoryManager : IRepositoryManager
{
private readonly ServiceProvider _serviceProvider;
public IPlayerRepository PlayerRepository { get; }

public MariaDbRepositoryManager()
{
var services = new ServiceCollection();
Expand Down
27 changes: 27 additions & 0 deletions tests/Persistence.Tests/Players/Create.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
namespace Persistence.Tests.Players;

public class CreatePlayer
{
[TestCaseSource(typeof(RepositoryManagerTestCases))]
public void Create_WhenCalled_ShouldCreatePlayerAndSetAccountId(IRepositoryManager source)
{
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerInfo = new PlayerInfo();
playerInfo.SetName("Player1");
playerInfo.SetPassword("DSR8887$#");

// Act
playerRepository.Create(playerInfo);
PlayerInfo actual = playerRepository.GetOrDefault(playerInfo.Name);

// Asserts
actual.AccountId.Should().BeGreaterThan(0);
actual.Name.Should().Be(playerInfo.Name);
actual.Password.Should().Be(playerInfo.Password);
actual.RoleId.Should().Be(RoleId.Basic);
actual.RankId.Should().Be(RankId.Noob);
}
}
36 changes: 36 additions & 0 deletions tests/Persistence.Tests/Players/Exists.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
namespace Persistence.Tests.Players;

public class PlayerExists
{
[TestCaseSource(typeof(RepositoryManagerTestCases))]
public void Exists_WhenPlayerExists_ShouldReturnTrue(IRepositoryManager source)
{
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "moderator_player";

// Act
bool actual = playerRepository.Exists(playerName);

// Assert
actual.Should().BeTrue();
}

[TestCaseSource(typeof(RepositoryManagerTestCases))]
public void Exists_WhenPlayerDoesNotExist_ShouldReturnFalse(IRepositoryManager source)
{
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "NotFound";

// Act
bool actual = playerRepository.Exists(playerName);

// Assert
actual.Should().BeFalse();
}
}
40 changes: 40 additions & 0 deletions tests/Persistence.Tests/Players/GetOrDefault.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
namespace Persistence.Tests.Players;

public class GetPlayerOrDefault
{
[TestCaseSource(typeof(RepositoryManagerTestCases))]
public void GetOrDefault_WhenPlayerExists_ShouldReturnPlayerInfo(IRepositoryManager source)
{
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "moderator_player";

// Act
PlayerInfo actual = playerRepository.GetOrDefault(playerName);

// Asserts
actual.AccountId.Should().Be(2);
actual.Name.Should().Be("Moderator_Player");
actual.RoleId.Should().Be(RoleId.Moderator);
actual.RankId.Should().Be(RankId.Noob);
actual.SkinId.Should().Be(146);
}

[TestCaseSource(typeof(RepositoryManagerTestCases))]
public void GetOrDefault_WhenPlayerDoesNotExist_ShouldReturnNull(IRepositoryManager source)
{
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "NotFound";

// Act
PlayerInfo actual = playerRepository.GetOrDefault(playerName);

// Assert
actual.Should().BeNull();
}
}
Original file line number Diff line number Diff line change
@@ -1,105 +1,14 @@
namespace Persistence.Tests;
namespace Persistence.Tests.Players;

public class IPlayerRepositoryTests
public class UpdatePlayer
{
[TestCaseSource(typeof(RepositoryManagerTestCases))]
public void GetOrDefault_WhenPlayerExists_ShouldReturnPlayerInfo(IRepositoryManager source)
{
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
var playerName = "moderator_player";

// Act
PlayerInfo actual = playerRepository.GetOrDefault(playerName);

// Asserts
actual.AccountId.Should().Be(2);
actual.Name.Should().Be("Moderator_Player");
actual.RoleId.Should().Be(RoleId.Moderator);
actual.RankId.Should().Be(RankId.Noob);
actual.SkinId.Should().Be(146);
}

[TestCaseSource(typeof(RepositoryManagerTestCases))]
public void GetOrDefault_WhenPlayerDoesNotExist_ShouldReturnNull(IRepositoryManager source)
{
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
var playerName = "NotFound";

// Act
PlayerInfo actual = playerRepository.GetOrDefault(playerName);

// Assert
actual.Should().BeNull();
}

[TestCaseSource(typeof(RepositoryManagerTestCases))]
public void Exists_WhenPlayerExists_ShouldReturnTrue(IRepositoryManager source)
{
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
var playerName = "moderator_player";

// Act
bool actual = playerRepository.Exists(playerName);

// Assert
actual.Should().BeTrue();
}

[TestCaseSource(typeof(RepositoryManagerTestCases))]
public void Exists_WhenPlayerDoesNotExist_ShouldReturnFalse(IRepositoryManager source)
{
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
var playerName = "NotFound";

// Act
bool actual = playerRepository.Exists(playerName);

// Assert
actual.Should().BeFalse();
}

[TestCaseSource(typeof(RepositoryManagerTestCases))]
public void Create_WhenCalled_ShouldCreatePlayerAndSetAccountId(IRepositoryManager source)
{
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
var playerInfo = new PlayerInfo();
playerInfo.SetName("Player1");
playerInfo.SetPassword("DSR8887$#");

// Act
playerRepository.Create(playerInfo);
PlayerInfo actual = playerRepository.GetOrDefault(playerInfo.Name);

// Asserts
actual.AccountId.Should().BeGreaterThan(0);
actual.Name.Should().Be(playerInfo.Name);
actual.Password.Should().Be(playerInfo.Password);
actual.RoleId.Should().Be(RoleId.Basic);
actual.RankId.Should().Be(RankId.Noob);
}

[TestCaseSource(typeof(RepositoryManagerTestCases))]
public void ShouldUpdatePlayerName(IRepositoryManager source)
{
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var oldName = "Moderator_Player";
var newName = "Player1";
PlayerInfo playerInfo = playerRepository.GetOrDefault(oldName);
Expand All @@ -119,7 +28,7 @@ public void ShouldUpdatePlayerPassword(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
var expectedPassword = "D123456$";
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
Expand All @@ -139,7 +48,7 @@ public void ShouldUpdateTotalKills(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
int expectedTotalKills = 20;
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
Expand All @@ -159,7 +68,7 @@ public void ShouldUpdateTotalDeaths(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
int expectedTotalDeaths = 100;
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
Expand All @@ -179,7 +88,7 @@ public void ShouldUpdateMaxKillingSpree(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
int expectedKillingSpree = 25;
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
Expand All @@ -199,7 +108,7 @@ public void ShouldUpdateBroughtFlags(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
int expectedBroughtFlags = 2;
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
Expand All @@ -220,7 +129,7 @@ public void ShouldUpdateCapturedFlags(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
int expectedCapturedFlags = 2;
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
Expand All @@ -241,7 +150,7 @@ public void ShouldUpdateDroppedFlags(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
int expectedDroppedFlags = 2;
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
Expand All @@ -262,7 +171,7 @@ public void ShouldUpdateReturnedFlags(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
int expectedReturnedFlags = 2;
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
Expand All @@ -283,7 +192,7 @@ public void ShouldUpdateHeadShots(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
int expectedHeadShots = 2;
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
Expand All @@ -304,7 +213,7 @@ public void ShouldUpdateRole(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
RoleId expectedRoleId = RoleId.Admin;
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
Expand All @@ -324,7 +233,7 @@ public void ShouldUpdateSkin(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
int expectedSkinId = 100;
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
Expand All @@ -344,7 +253,7 @@ public void ShouldUpdateRank(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
RankId expectedRankId = RankId.GameMaster;
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
Expand All @@ -364,7 +273,7 @@ public void ShouldUpdateLastConnection(IRepositoryManager source)
// Arrange
using var repositoryManager = source;
repositoryManager.InitializeSeedData();
var playerRepository = repositoryManager.PlayerRepository;
IPlayerRepository playerRepository = repositoryManager.PlayerRepository;
var playerName = "Moderator_Player";
PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName);
playerInfo.SetLastConnection();
Expand Down
Loading