166 lines
6.3 KiB
C#
166 lines
6.3 KiB
C#
using AyCode.Database.DataLayers;
|
|
using AyCode.Database.Tests;
|
|
using AyCode.Database.Tests.Users;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using Moq;
|
|
using Newtonsoft.Json;
|
|
using System.Text.Json.Serialization;
|
|
using System.Text.Json;
|
|
using TIAM.Database.DataLayers.Users;
|
|
using TIAM.Database.DbContexts.Users;
|
|
using TIAM.Entities.Users;
|
|
|
|
namespace TIAM.Database.Test
|
|
{
|
|
[TestClass]
|
|
public class UserDalTests : AcUserDalTestBase<UserDal, UserDbContext, User, UserToken>
|
|
{
|
|
private Mock<UserDbContext> _mockContext;
|
|
|
|
[TestInitialize]
|
|
public void TestInitialize()
|
|
{
|
|
//var options = new DbContextOptionsBuilder<UserDbContext>()
|
|
// .UseInMemoryDatabase(databaseName: "UserDatabase")
|
|
// .Options;
|
|
|
|
//_mockContext = new Mock<UserDbContext>(options);
|
|
|
|
//var mockSet = new Mock<DbSet<User>>();
|
|
//_mockContext.Setup(c => c.Users).Returns(mockSet.Object);
|
|
|
|
//_userDal = new UserDal(_mockContext.Object);
|
|
}
|
|
|
|
[TestMethod]
|
|
[DataRow("540271F6-C604-4C16-8160-D5A7CAFEDF00")]
|
|
public override void GetUserById_ReturnsUser_WhenUserExists(string userIdString)
|
|
=> base.GetUserById_ReturnsUser_WhenUserExists(userIdString);
|
|
|
|
[TestMethod]
|
|
[DataRow("test@tiam.hu")]
|
|
public override void GetUserByEmail_ReturnsUser_WhenUserExists(string email)
|
|
=> base.GetUserByEmail_ReturnsUser_WhenUserExists(email);
|
|
|
|
[TestMethod]
|
|
[DataRow("test@tiam.hu")]
|
|
public override Task GetUserByEmailAsync_ReturnsUser_WhenUserExists(string email)
|
|
=> base.GetUserByEmailAsync_ReturnsUser_WhenUserExists(email);
|
|
|
|
[TestMethod]
|
|
[DataRow("540271F6-C604-4C16-8160-D5A7CAFEDF00")]
|
|
public void SerializeUser_ReturnDeserializedUser_WhenUserAndRelationsExists(string userIdString)
|
|
{
|
|
var userId = Guid.Parse(userIdString);
|
|
var user = Dal.GetUserById(userId);
|
|
|
|
JsonSerializerSettings options = new()
|
|
{
|
|
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
|
//NullValueHandling = NullValueHandling.Ignore
|
|
};
|
|
|
|
var serializedUser = JsonConvert.SerializeObject(user, options);
|
|
user = JsonConvert.DeserializeObject<User>(serializedUser);
|
|
|
|
Assert.IsNotNull(user);
|
|
Assert.IsNotNull(user.UserProductMappings);
|
|
//Assert.IsNotNull(user.UserProductMappings.FirstOrDefault()?.Product);
|
|
}
|
|
|
|
//[TestMethod]
|
|
//[DataRow("test@tiam.hu")]
|
|
//public async Task GetUserByEmailAsync_ReturnsUser_WhenUserExists(string email)
|
|
//{
|
|
// // Arrange
|
|
// var user = new User { EmailAddress = email };
|
|
// var users = new[] { user }.AsQueryable();
|
|
|
|
// var mockSet = new Mock<DbSet<User>>();
|
|
// mockSet.As<IQueryable<User>>().Setup(m => m.Provider).Returns(users.Provider);
|
|
// mockSet.As<IQueryable<User>>().Setup(m => m.Expression).Returns(users.Expression);
|
|
// mockSet.As<IQueryable<User>>().Setup(m => m.ElementType).Returns(users.ElementType);
|
|
// mockSet.As<IQueryable<User>>().Setup(m => m.GetEnumerator()).Returns(users.GetEnumerator());
|
|
|
|
// _mockContext.Setup(c => c.Users).Returns(mockSet.Object);
|
|
|
|
// // Act
|
|
// var result = await _userDal.GetUserByEmailAsync(email);
|
|
|
|
// // Assert
|
|
// Assert.IsNotNull(result);
|
|
// Assert.AreEqual(email, result.EmailAddress);
|
|
//}
|
|
|
|
//[TestMethod]
|
|
//[DataRow("TEST@TEST.COM")]
|
|
//public async Task GetUserByEmailAsync_ReturnsNull_WhenUserDoesNotExist(string email)
|
|
//{
|
|
// // Arrange
|
|
// var users = new User[0].AsQueryable();
|
|
|
|
// var mockSet = new Mock<DbSet<User>>();
|
|
// mockSet.As<IQueryable<User>>().Setup(m => m.Provider).Returns(users.Provider);
|
|
// mockSet.As<IQueryable<User>>().Setup(m => m.Expression).Returns(users.Expression);
|
|
// mockSet.As<IQueryable<User>>().Setup(m => m.ElementType).Returns(users.ElementType);
|
|
// mockSet.As<IQueryable<User>>().Setup(m => m.GetEnumerator()).Returns(users.GetEnumerator());
|
|
|
|
// _mockContext.Setup(c => c.Users).Returns(mockSet.Object);
|
|
|
|
// // Act
|
|
// var result = await _userDal.GetUserByEmailAsync(email);
|
|
|
|
// // Assert
|
|
// Assert.IsNull(result);
|
|
//}
|
|
|
|
//[TestMethod]
|
|
//[DataRow("TEST@TEST.COM", "+1234567890", "password")]
|
|
//public async Task CreateUserAsync_ShouldReturnTrue_WhenUserIsCreated(string email, string phoneNumbr, string password)
|
|
//{
|
|
// // Arrange
|
|
// var user = new User
|
|
// {
|
|
// Id = Guid.NewGuid(),
|
|
// EmailAddress = email,
|
|
// PhoneNumber = phoneNumbr,
|
|
// Password = password
|
|
// };
|
|
|
|
// var mockSet = new Mock<DbSet<User>>();
|
|
// _mockContext.Setup(x => x.Users).Returns(mockSet.Object);
|
|
// _mockContext.Setup(x => x.Users.Add(user)).Returns(() => null);
|
|
|
|
// _mockContext.Setup(x => x.SaveChangesAsync(It.IsAny<CancellationToken>()))
|
|
// .ReturnsAsync(1)
|
|
// .Verifiable();
|
|
|
|
// // Act
|
|
// var result = await _userDal.CreateUserAsync(user);
|
|
|
|
// // Assert
|
|
// Assert.IsTrue(result);
|
|
//}
|
|
|
|
//[TestMethod]
|
|
//[DataRow("TEST@TEST.COM", "+1234567890", "password")]
|
|
//public async Task UpdateUserAsync_ShouldUpdateUser(string email, string phoneNumbr, string password)
|
|
//{
|
|
// // Arrange
|
|
// var user = new User(Guid.NewGuid(), email, phoneNumbr, password);
|
|
// _mockContext.Object.Users.Add(user);
|
|
// await _mockContext.Object.SaveChangesAsync();
|
|
|
|
// // Act
|
|
// user.EmailAddress = email;
|
|
// var result = await _userDal.UpdateUserAsync(user);
|
|
|
|
// // Assert
|
|
// Assert.IsTrue(result);
|
|
// var updatedUser = _mockContext.Object.Users.Single(u => u.EmailAddress == user.EmailAddress);
|
|
// Assert.AreEqual(email, updatedUser.EmailAddress);
|
|
//}
|
|
}
|
|
} |