using AyCode.Database.DataLayers.Users; using AyCode.Database.DbContexts; using AyCode.Database.DbContexts.Users; using AyCode.Database.Tests; using AyCode.Entities.Addresses; using AyCode.Entities.Profiles; using AyCode.Entities.Users; using AyCode.Interfaces.Addresses; using AyCode.Interfaces.Messages; using AyCode.Interfaces.Profiles; using AyCode.Interfaces.ServiceProviders; using AyCode.Interfaces.Users; namespace AyCode.Database.Tests.Users { public abstract class AcUserDalTestBase : AcDatabaseTestModelBase where TDal : AcUserDalBase where TDbContext : AcDbContextBase, IAcUserDbContextBase where TUser : class, IAcUser where TProfile : class, IAcProfile where TProfileAddress : class, IAcAddress where TUserToken : class, IAcUserTokenBase where TServiceProvider : class, IAcServiceProviderBase where TUserToServiceProvider : class, IAcUserToServiceProviderBase where TEmailMessage : class, IAcEmailMessageBase { protected TUser AcBase_GetUserById_ReturnsUser_WhenUserExists(string userIdString) { var userId = Guid.Parse(userIdString); var user = Dal.GetUserById(userId, false); Assert.IsNotNull(user, "User is null"); Assert.IsNotNull(user.Profile, "Profile is null"); Assert.IsNotNull(user.Profile.Address, "Profile.Address is null"); Assert.AreEqual(userId, user.Id); return user; } [TestMethod] [DataRow("2test@tiam.hu")] public virtual void AcBase_GetUserByEmail_ReturnsUser_WhenUserExists(string email) => AcBase_GetUserByEmail(email); // ReSharper disable once MemberCanBePrivate.Global protected TUser AcBase_GetUserByEmail(string email) { var user = Dal.GetUserByEmail(email, false); Assert.IsNotNull(user, "User is null"); Assert.IsNotNull(user.Profile, "Profile is null"); Assert.IsNotNull(user.Profile.Address, "Profile.Address is null"); Assert.AreEqual(email, user.EmailAddress); return user; } protected async Task AcBase_GetUserByEmailAsync_ReturnsUser_WhenUserExists(string email) { TUser? user = null; user = await Dal.GetUserByEmailAsync(email, false).ConfigureAwait(false); //user = await Dal.SessionAsync(ctx => ctx.Users.FirstOrDefault(x => x.EmailAddress == email)).ConfigureAwait(false); //await using (var ctx = Dal.Context) //{ // user = await ctx.Users.FirstOrDefaultAsync(x => x.EmailAddress == email).ConfigureAwait(false); //} Assert.IsNotNull(user, "User is null"); Assert.IsNotNull(user.Profile, "Profile is null"); Assert.IsNotNull(user.Profile.Address, "Profile.Address is null"); Assert.AreEqual(email, user.EmailAddress); return user; } } }