UserRepositoryTests.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using LibraryManagementSystem.Console.Database;
  2. using LibraryManagementSystem.Console.Models;
  3. using LibraryManagementSystem.Console.Repositories;
  4. using LibraryManagementSystem.Console.Utils;
  5. namespace LibraryManagementSystem.Tests;
  6. /// <summary>
  7. /// Тестирует CRUD операции пользователей.
  8. /// </summary>
  9. public class UserRepositoryTests
  10. {
  11. private readonly IUserRepository _repository;
  12. /// <summary>
  13. /// Инициализирует тестовый репозиторий.
  14. /// </summary>
  15. public UserRepositoryTests()
  16. {
  17. DatabaseManager databaseManager = new();
  18. _repository = new UserRepository(databaseManager);
  19. TestHelper.CleanupUsers();
  20. }
  21. /// <summary>
  22. /// Проверяет добавление пользователя.
  23. /// </summary>
  24. [Fact]
  25. public void Create_Should_Add_User()
  26. {
  27. // Arrange
  28. User user = new()
  29. {
  30. Username = "test_user",
  31. PasswordHash = PasswordHasher.HashPassword("12345"),
  32. Email = "test@test.com",
  33. };
  34. // Act
  35. int id = _repository.Create(user);
  36. User? createdUser = _repository.GetById(id);
  37. // Assert
  38. Assert.NotNull(createdUser);
  39. Assert.Equal("test_user", createdUser!.Username);
  40. }
  41. /// <summary>
  42. /// Проверяет получение всех пользователей.
  43. /// </summary>
  44. [Fact]
  45. public void GetAll_Should_Return_Users()
  46. {
  47. // Arrange
  48. User user = new()
  49. {
  50. Username = "reader",
  51. PasswordHash = PasswordHasher.HashPassword("12345"),
  52. Email = "reader@test.com",
  53. };
  54. _repository.Create(user);
  55. // Act
  56. var users = _repository.GetAll();
  57. // Assert
  58. Assert.NotEmpty(users);
  59. }
  60. /// <summary>
  61. /// Проверяет обновление пользователя.
  62. /// </summary>
  63. [Fact]
  64. public void Update_Should_Modify_User()
  65. {
  66. // Arrange
  67. User user = new()
  68. {
  69. Username = "before_update",
  70. PasswordHash = PasswordHasher.HashPassword("12345"),
  71. Email = "before@test.com",
  72. };
  73. int id = _repository.Create(user);
  74. User? existingUser = _repository.GetById(id);
  75. Assert.NotNull(existingUser);
  76. existingUser!.Username = "updated_user";
  77. existingUser.Email = "updated@test.com";
  78. // Act
  79. bool result = _repository.Update(existingUser);
  80. User? updatedUser = _repository.GetById(id);
  81. // Assert
  82. Assert.True(result);
  83. Assert.NotNull(updatedUser);
  84. Assert.Equal("updated_user", updatedUser!.Username);
  85. }
  86. /// <summary>
  87. /// Проверяет удаление пользователя.
  88. /// </summary>
  89. [Fact]
  90. public void Delete_Should_Remove_User()
  91. {
  92. // Arrange
  93. User user = new()
  94. {
  95. Username = "delete_me",
  96. PasswordHash = PasswordHasher.HashPassword("12345"),
  97. Email = "delete@test.com",
  98. };
  99. int id = _repository.Create(user);
  100. // Act
  101. bool deleted = _repository.Delete(id);
  102. User? deletedUser = _repository.GetById(id);
  103. // Assert
  104. Assert.True(deleted);
  105. Assert.Null(deletedUser);
  106. }
  107. }