mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-02-16 10:42:08 +00:00
216 lines
6.7 KiB
C#
216 lines
6.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using DataAccessLayer;
|
|
using DataAccessLayer.Entities;
|
|
using Xunit;
|
|
|
|
namespace DALTests
|
|
{
|
|
public class UserAccountRepositoryTests
|
|
{
|
|
private readonly IUserAccountRepository _repository;
|
|
|
|
public UserAccountRepositoryTests()
|
|
{
|
|
_repository = new UserAccountRepository();
|
|
}
|
|
|
|
[Fact]
|
|
public void Add_ShouldInsertUserAccount()
|
|
{
|
|
|
|
// Arrange
|
|
var userAccount = new UserAccount
|
|
{
|
|
UserAccountID = Guid.NewGuid(),
|
|
Username = "testuser",
|
|
FirstName = "Test",
|
|
LastName = "User",
|
|
Email = "testuser@example.com",
|
|
CreatedAt = DateTime.UtcNow,
|
|
DateOfBirth = new DateTime(1990, 1, 1),
|
|
};
|
|
|
|
// Act
|
|
_repository.Add(userAccount);
|
|
var retrievedUser = _repository.GetById(userAccount.UserAccountID);
|
|
|
|
// Assert
|
|
Assert.NotNull(retrievedUser);
|
|
Assert.Equal(userAccount.Username, retrievedUser.Username);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetById_ShouldReturnUserAccount()
|
|
{
|
|
// Arrange
|
|
var userId = Guid.NewGuid();
|
|
var userAccount = new UserAccount
|
|
{
|
|
UserAccountID = userId,
|
|
Username = "existinguser",
|
|
FirstName = "Existing",
|
|
LastName = "User",
|
|
Email = "existinguser@example.com",
|
|
CreatedAt = DateTime.UtcNow,
|
|
DateOfBirth = new DateTime(1985, 5, 15),
|
|
};
|
|
_repository.Add(userAccount);
|
|
|
|
// Act
|
|
var retrievedUser = _repository.GetById(userId);
|
|
|
|
// Assert
|
|
Assert.NotNull(retrievedUser);
|
|
Assert.Equal(userId, retrievedUser.UserAccountID);
|
|
}
|
|
|
|
[Fact]
|
|
public void Update_ShouldModifyUserAccount()
|
|
{
|
|
// Arrange
|
|
var userAccount = new UserAccount
|
|
{
|
|
UserAccountID = Guid.NewGuid(),
|
|
Username = "updatableuser",
|
|
FirstName = "Updatable",
|
|
LastName = "User",
|
|
Email = "updatableuser@example.com",
|
|
CreatedAt = DateTime.UtcNow,
|
|
DateOfBirth = new DateTime(1992, 3, 10),
|
|
};
|
|
_repository.Add(userAccount);
|
|
|
|
// Act
|
|
userAccount.FirstName = "Updated";
|
|
_repository.Update(userAccount);
|
|
var updatedUser = _repository.GetById(userAccount.UserAccountID);
|
|
|
|
// Assert
|
|
Assert.NotNull(updatedUser);
|
|
Assert.Equal("Updated", updatedUser.FirstName);
|
|
}
|
|
|
|
[Fact]
|
|
public void Delete_ShouldRemoveUserAccount()
|
|
{
|
|
// Arrange
|
|
var userAccount = new UserAccount
|
|
{
|
|
UserAccountID = Guid.NewGuid(),
|
|
Username = "deletableuser",
|
|
FirstName = "Deletable",
|
|
LastName = "User",
|
|
Email = "deletableuser@example.com",
|
|
CreatedAt = DateTime.UtcNow,
|
|
DateOfBirth = new DateTime(1995, 7, 20),
|
|
};
|
|
_repository.Add(userAccount);
|
|
|
|
// Act
|
|
_repository.Delete(userAccount.UserAccountID);
|
|
var deletedUser = _repository.GetById(userAccount.UserAccountID);
|
|
|
|
// Assert
|
|
Assert.Null(deletedUser);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetAll_ShouldReturnAllUserAccounts()
|
|
{
|
|
// Arrange
|
|
var user1 = new UserAccount
|
|
{
|
|
UserAccountID = Guid.NewGuid(),
|
|
Username = "user1",
|
|
FirstName = "User",
|
|
LastName = "One",
|
|
Email = "user1@example.com",
|
|
CreatedAt = DateTime.UtcNow,
|
|
DateOfBirth = new DateTime(1990, 1, 1),
|
|
};
|
|
var user2 = new UserAccount
|
|
{
|
|
UserAccountID = Guid.NewGuid(),
|
|
Username = "user2",
|
|
FirstName = "User",
|
|
LastName = "Two",
|
|
Email = "user2@example.com",
|
|
CreatedAt = DateTime.UtcNow,
|
|
DateOfBirth = new DateTime(1992, 2, 2),
|
|
};
|
|
_repository.Add(user1);
|
|
_repository.Add(user2);
|
|
|
|
// Act
|
|
var allUsers = _repository.GetAll(null, null);
|
|
|
|
// Assert
|
|
Assert.NotNull(allUsers);
|
|
Assert.True(allUsers.Count() >= 2);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetAll_WithPagination_ShouldRespectLimit()
|
|
{
|
|
// Arrange
|
|
var users = new List<UserAccount>
|
|
{
|
|
new UserAccount
|
|
{
|
|
UserAccountID = Guid.NewGuid(),
|
|
Username = $"pageuser_{Guid.NewGuid():N}",
|
|
FirstName = "Page",
|
|
LastName = "User",
|
|
Email = $"pageuser_{Guid.NewGuid():N}@example.com",
|
|
CreatedAt = DateTime.UtcNow,
|
|
DateOfBirth = new DateTime(1991, 4, 4),
|
|
},
|
|
new UserAccount
|
|
{
|
|
UserAccountID = Guid.NewGuid(),
|
|
Username = $"pageuser_{Guid.NewGuid():N}",
|
|
FirstName = "Page",
|
|
LastName = "User",
|
|
Email = $"pageuser_{Guid.NewGuid():N}@example.com",
|
|
CreatedAt = DateTime.UtcNow,
|
|
DateOfBirth = new DateTime(1992, 5, 5),
|
|
},
|
|
new UserAccount
|
|
{
|
|
UserAccountID = Guid.NewGuid(),
|
|
Username = $"pageuser_{Guid.NewGuid():N}",
|
|
FirstName = "Page",
|
|
LastName = "User",
|
|
Email = $"pageuser_{Guid.NewGuid():N}@example.com",
|
|
CreatedAt = DateTime.UtcNow,
|
|
DateOfBirth = new DateTime(1993, 6, 6),
|
|
}
|
|
};
|
|
|
|
foreach (var user in users)
|
|
{
|
|
_repository.Add(user);
|
|
}
|
|
|
|
// Act
|
|
var page = _repository.GetAll(2, 0).ToList();
|
|
|
|
// Assert
|
|
Assert.Equal(2, page.Count);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetAll_WithPagination_ShouldValidateArguments()
|
|
{
|
|
Assert.Throws<ArgumentOutOfRangeException>(
|
|
() => _repository.GetAll(0, 0).ToList()
|
|
);
|
|
Assert.Throws<ArgumentOutOfRangeException>(
|
|
() => _repository.GetAll(1, -1).ToList()
|
|
);
|
|
}
|
|
}
|
|
}
|