From a4419471fbc055372fcd763558dadbd64fdd5ff1 Mon Sep 17 00:00:00 2001 From: MrDave1999 Date: Mon, 14 Oct 2024 16:16:19 -0500 Subject: [PATCH 1/3] cleanup: Remove 'IPlayerRepositoryTests.cs' file --- .../IPlayerRepositoryTests.cs | 379 ------------------ 1 file changed, 379 deletions(-) delete mode 100644 tests/Persistence.Tests/IPlayerRepositoryTests.cs diff --git a/tests/Persistence.Tests/IPlayerRepositoryTests.cs b/tests/Persistence.Tests/IPlayerRepositoryTests.cs deleted file mode 100644 index 65194c0..0000000 --- a/tests/Persistence.Tests/IPlayerRepositoryTests.cs +++ /dev/null @@ -1,379 +0,0 @@ -namespace Persistence.Tests; - -public class IPlayerRepositoryTests -{ - [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; - var oldName = "Moderator_Player"; - var newName = "Player1"; - PlayerInfo playerInfo = playerRepository.GetOrDefault(oldName); - playerInfo.SetName(newName); - - // Act - playerRepository.UpdateName(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(newName); - - // Assert - actual.Name.Should().Be(newName); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdatePlayerPassword(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - var expectedPassword = "D123456$"; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.SetPassword(expectedPassword); - - // Act - playerRepository.UpdatePassword(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.Password.Should().Be(expectedPassword); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdateTotalKills(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - int expectedTotalKills = 20; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.SetTotalKills(expectedTotalKills); - - // Act - playerRepository.UpdateTotalKills(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.TotalKills.Should().Be(expectedTotalKills); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdateTotalDeaths(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - int expectedTotalDeaths = 100; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.SetTotalDeaths(expectedTotalDeaths); - - // Act - playerRepository.UpdateTotalDeaths(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.TotalDeaths.Should().Be(expectedTotalDeaths); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdateMaxKillingSpree(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - int expectedKillingSpree = 25; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.SetMaxKillingSpree(expectedKillingSpree); - - // Act - playerRepository.UpdateMaxKillingSpree(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.MaxKillingSpree.Should().Be(expectedKillingSpree); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdateBroughtFlags(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - int expectedBroughtFlags = 2; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.AddBroughtFlags(); - playerInfo.AddBroughtFlags(); - - // Act - playerRepository.UpdateBroughtFlags(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.BroughtFlags.Should().Be(expectedBroughtFlags); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdateCapturedFlags(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - int expectedCapturedFlags = 2; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.AddCapturedFlags(); - playerInfo.AddCapturedFlags(); - - // Act - playerRepository.UpdateCapturedFlags(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.CapturedFlags.Should().Be(expectedCapturedFlags); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdateDroppedFlags(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - int expectedDroppedFlags = 2; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.AddDroppedFlags(); - playerInfo.AddDroppedFlags(); - - // Act - playerRepository.UpdateDroppedFlags(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.DroppedFlags.Should().Be(expectedDroppedFlags); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdateReturnedFlags(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - int expectedReturnedFlags = 2; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.AddReturnedFlags(); - playerInfo.AddReturnedFlags(); - - // Act - playerRepository.UpdateReturnedFlags(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.ReturnedFlags.Should().Be(expectedReturnedFlags); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdateHeadShots(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - int expectedHeadShots = 2; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.AddHeadShots(); - playerInfo.AddHeadShots(); - - // Act - playerRepository.UpdateHeadShots(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.HeadShots.Should().Be(expectedHeadShots); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdateRole(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - RoleId expectedRoleId = RoleId.Admin; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.SetRole(expectedRoleId); - - // Act - playerRepository.UpdateRole(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.RoleId.Should().Be(expectedRoleId); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdateSkin(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - int expectedSkinId = 100; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.SetSkin(expectedSkinId); - - // Act - playerRepository.UpdateSkin(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.SkinId.Should().Be(expectedSkinId); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdateRank(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - RankId expectedRankId = RankId.GameMaster; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.SetRank(expectedRankId); - - // Act - playerRepository.UpdateRank(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.RankId.Should().Be(expectedRankId); - } - - [TestCaseSource(typeof(RepositoryManagerTestCases))] - public void ShouldUpdateLastConnection(IRepositoryManager source) - { - // Arrange - using var repositoryManager = source; - repositoryManager.InitializeSeedData(); - var playerRepository = repositoryManager.PlayerRepository; - var playerName = "Moderator_Player"; - PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); - playerInfo.SetLastConnection(); - - // Act - playerRepository.UpdateLastConnection(playerInfo); - PlayerInfo actual = playerRepository.GetOrDefault(playerName); - - // Assert - actual.LastConnection.Should().BeSameDateAs(playerInfo.LastConnection); - } -} From e6c174691659513aebb17d1470e5a43153dcebdc Mon Sep 17 00:00:00 2001 From: MrDave1999 Date: Mon, 14 Oct 2024 16:16:40 -0500 Subject: [PATCH 2/3] style: remove space --- .../Common/DatabaseProviders/MariaDbRepositoryManager.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Persistence.Tests/Common/DatabaseProviders/MariaDbRepositoryManager.cs b/tests/Persistence.Tests/Common/DatabaseProviders/MariaDbRepositoryManager.cs index 6ecf9d3..54ead0e 100644 --- a/tests/Persistence.Tests/Common/DatabaseProviders/MariaDbRepositoryManager.cs +++ b/tests/Persistence.Tests/Common/DatabaseProviders/MariaDbRepositoryManager.cs @@ -4,7 +4,6 @@ public class MariaDbRepositoryManager : IRepositoryManager { private readonly ServiceProvider _serviceProvider; public IPlayerRepository PlayerRepository { get; } - public MariaDbRepositoryManager() { var services = new ServiceCollection(); From 60b719734b7dd8780f0d9c53c986e743742a7d78 Mon Sep 17 00:00:00 2001 From: MrDave1999 Date: Mon, 14 Oct 2024 16:20:20 -0500 Subject: [PATCH 3/3] test: Organize code by use cases --- tests/Persistence.Tests/Players/Create.cs | 27 ++ tests/Persistence.Tests/Players/Exists.cs | 36 +++ .../Persistence.Tests/Players/GetOrDefault.cs | 40 +++ tests/Persistence.Tests/Players/Update.cs | 288 ++++++++++++++++++ 4 files changed, 391 insertions(+) create mode 100644 tests/Persistence.Tests/Players/Create.cs create mode 100644 tests/Persistence.Tests/Players/Exists.cs create mode 100644 tests/Persistence.Tests/Players/GetOrDefault.cs create mode 100644 tests/Persistence.Tests/Players/Update.cs diff --git a/tests/Persistence.Tests/Players/Create.cs b/tests/Persistence.Tests/Players/Create.cs new file mode 100644 index 0000000..f727adb --- /dev/null +++ b/tests/Persistence.Tests/Players/Create.cs @@ -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); + } +} diff --git a/tests/Persistence.Tests/Players/Exists.cs b/tests/Persistence.Tests/Players/Exists.cs new file mode 100644 index 0000000..26fc03c --- /dev/null +++ b/tests/Persistence.Tests/Players/Exists.cs @@ -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(); + } +} diff --git a/tests/Persistence.Tests/Players/GetOrDefault.cs b/tests/Persistence.Tests/Players/GetOrDefault.cs new file mode 100644 index 0000000..2ec2166 --- /dev/null +++ b/tests/Persistence.Tests/Players/GetOrDefault.cs @@ -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(); + } +} diff --git a/tests/Persistence.Tests/Players/Update.cs b/tests/Persistence.Tests/Players/Update.cs new file mode 100644 index 0000000..cd99681 --- /dev/null +++ b/tests/Persistence.Tests/Players/Update.cs @@ -0,0 +1,288 @@ +namespace Persistence.Tests.Players; + +public class UpdatePlayer +{ + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdatePlayerName(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var oldName = "Moderator_Player"; + var newName = "Player1"; + PlayerInfo playerInfo = playerRepository.GetOrDefault(oldName); + playerInfo.SetName(newName); + + // Act + playerRepository.UpdateName(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(newName); + + // Assert + actual.Name.Should().Be(newName); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdatePlayerPassword(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + var expectedPassword = "D123456$"; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.SetPassword(expectedPassword); + + // Act + playerRepository.UpdatePassword(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.Password.Should().Be(expectedPassword); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdateTotalKills(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + int expectedTotalKills = 20; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.SetTotalKills(expectedTotalKills); + + // Act + playerRepository.UpdateTotalKills(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.TotalKills.Should().Be(expectedTotalKills); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdateTotalDeaths(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + int expectedTotalDeaths = 100; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.SetTotalDeaths(expectedTotalDeaths); + + // Act + playerRepository.UpdateTotalDeaths(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.TotalDeaths.Should().Be(expectedTotalDeaths); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdateMaxKillingSpree(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + int expectedKillingSpree = 25; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.SetMaxKillingSpree(expectedKillingSpree); + + // Act + playerRepository.UpdateMaxKillingSpree(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.MaxKillingSpree.Should().Be(expectedKillingSpree); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdateBroughtFlags(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + int expectedBroughtFlags = 2; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.AddBroughtFlags(); + playerInfo.AddBroughtFlags(); + + // Act + playerRepository.UpdateBroughtFlags(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.BroughtFlags.Should().Be(expectedBroughtFlags); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdateCapturedFlags(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + int expectedCapturedFlags = 2; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.AddCapturedFlags(); + playerInfo.AddCapturedFlags(); + + // Act + playerRepository.UpdateCapturedFlags(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.CapturedFlags.Should().Be(expectedCapturedFlags); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdateDroppedFlags(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + int expectedDroppedFlags = 2; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.AddDroppedFlags(); + playerInfo.AddDroppedFlags(); + + // Act + playerRepository.UpdateDroppedFlags(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.DroppedFlags.Should().Be(expectedDroppedFlags); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdateReturnedFlags(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + int expectedReturnedFlags = 2; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.AddReturnedFlags(); + playerInfo.AddReturnedFlags(); + + // Act + playerRepository.UpdateReturnedFlags(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.ReturnedFlags.Should().Be(expectedReturnedFlags); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdateHeadShots(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + int expectedHeadShots = 2; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.AddHeadShots(); + playerInfo.AddHeadShots(); + + // Act + playerRepository.UpdateHeadShots(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.HeadShots.Should().Be(expectedHeadShots); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdateRole(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + RoleId expectedRoleId = RoleId.Admin; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.SetRole(expectedRoleId); + + // Act + playerRepository.UpdateRole(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.RoleId.Should().Be(expectedRoleId); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdateSkin(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + int expectedSkinId = 100; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.SetSkin(expectedSkinId); + + // Act + playerRepository.UpdateSkin(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.SkinId.Should().Be(expectedSkinId); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdateRank(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + RankId expectedRankId = RankId.GameMaster; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.SetRank(expectedRankId); + + // Act + playerRepository.UpdateRank(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.RankId.Should().Be(expectedRankId); + } + + [TestCaseSource(typeof(RepositoryManagerTestCases))] + public void ShouldUpdateLastConnection(IRepositoryManager source) + { + // Arrange + using var repositoryManager = source; + repositoryManager.InitializeSeedData(); + IPlayerRepository playerRepository = repositoryManager.PlayerRepository; + var playerName = "Moderator_Player"; + PlayerInfo playerInfo = playerRepository.GetOrDefault(playerName); + playerInfo.SetLastConnection(); + + // Act + playerRepository.UpdateLastConnection(playerInfo); + PlayerInfo actual = playerRepository.GetOrDefault(playerName); + + // Assert + actual.LastConnection.Should().BeSameDateAs(playerInfo.LastConnection); + } +}