DatabaseTestBase fix; refactoring, improvements, fixes, etc...
This commit is contained in:
parent
782d8ece5a
commit
715ac0fa5b
|
|
@ -0,0 +1,14 @@
|
|||
using AyCode.Database.DbContexts;
|
||||
|
||||
namespace AyCode.Database.Tests
|
||||
{
|
||||
public abstract class AcDatabaseTestBase<TDbContext> : AcDatabaseTestModelBase<TDbContext> where TDbContext : AcDbContextBase
|
||||
{
|
||||
[TestMethod]
|
||||
public void DatabaseExistsTest()
|
||||
{
|
||||
var isConnected = Context.Database.CanConnect();
|
||||
Assert.IsTrue(isConnected);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
using AyCode.Core.Tests;
|
||||
using AyCode.Database.DataLayers;
|
||||
using AyCode.Database.DbContexts;
|
||||
|
||||
namespace AyCode.Database.Tests;
|
||||
|
||||
public abstract class AcDatabaseTestModelBase<TDal, TDbContext> : TestModelBase where TDal : IAcDalBase<TDbContext> where TDbContext : AcDbContextBase
|
||||
{
|
||||
protected TDal Dal;
|
||||
protected AcDatabaseTestModelBase()
|
||||
{
|
||||
Dal = PooledDal.CreateDal<TDal>();
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class AcDatabaseTestModelBase<TDbContext> : TestModelBase where TDbContext : AcDbContextBase
|
||||
{
|
||||
protected TDbContext Context;
|
||||
protected AcDatabaseTestModelBase()
|
||||
{
|
||||
Context = Activator.CreateInstance<TDbContext>();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
using AyCode.Core.Tests;
|
||||
using AyCode.Database.DataLayers;
|
||||
using AyCode.Database.DbContexts;
|
||||
|
||||
namespace AyCode.Database.Tests;
|
||||
|
||||
public abstract class DatabaseTestModelBase<TDbContext> : TestModelBase where TDbContext : AcDbContextBase
|
||||
{
|
||||
protected DatabaseTestModelBase()
|
||||
{
|
||||
//var acDal = new acDal
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
using AyCode.Database.DbContexts;
|
||||
|
||||
namespace AyCode.Database.Tests
|
||||
{
|
||||
[TestClass]
|
||||
public abstract class DatabaseTests : DatabaseTestModelBase<AcDbContextBase>
|
||||
{
|
||||
[TestMethod]
|
||||
public void TestMethod1()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
using AyCode.Database.DataLayers.Users;
|
||||
using AyCode.Database.DbContexts;
|
||||
using AyCode.Database.DbContexts.Users;
|
||||
using AyCode.Interfaces.Users;
|
||||
|
||||
namespace AyCode.Database.Tests.Users
|
||||
{
|
||||
public abstract class AcUserDalTestBase<TDal, TDbContext, TUser, TUserToken> : AcDatabaseTestModelBase<TDal, TDbContext>
|
||||
where TDal : AcUserDalBase<TDbContext, TUser, TUserToken>
|
||||
where TDbContext : AcDbContextBase, IAcUserDbContextBase<TUser, TUserToken>
|
||||
where TUser : class, IUserBase
|
||||
where TUserToken : class, IUserTokenBase
|
||||
|
||||
{
|
||||
[TestMethod]
|
||||
[DataRow("540271F6-C604-4C16-8160-D5A7CAFEDF00")]
|
||||
public void GetUserById_ReturnsUser_WhenUserExists(string userIdString)
|
||||
{
|
||||
var userId = Guid.Parse(userIdString);
|
||||
var user = Dal.GetUserById(userId);
|
||||
|
||||
Assert.IsNotNull(user, "User is null");
|
||||
Assert.AreEqual(userId, user.Id);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[DataRow("test@tiam.hu")]
|
||||
public void GetUserByEmail_ReturnsUser_WhenUserExists(string email)
|
||||
{
|
||||
var user = Dal.GetUserByEmail(email);
|
||||
|
||||
Assert.IsNotNull(user, "User is null");
|
||||
Assert.AreEqual(email, user.EmailAddress);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[DataRow("test@tiam.hu")]
|
||||
public async Task GetUserByEmailAsync_ReturnsUser_WhenUserExists(string email)
|
||||
{
|
||||
TUser? user = null;
|
||||
|
||||
user = await Dal.GetUserByEmailAsync(email).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.AreEqual(email, user.EmailAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using AyCode.Database.DbContexts;
|
||||
using AyCode.Database.DbContexts.Users;
|
||||
using AyCode.Interfaces.Users;
|
||||
|
||||
namespace AyCode.Database.Tests.Users
|
||||
{
|
||||
[TestClass]
|
||||
public abstract class UserDbSetTest<TDbContext, TUser, TUserToken> : DatabaseTestModelBase<TDbContext>
|
||||
where TDbContext : AcDbContextBase, IAcUserDbContextBase<TUser, TUserToken>
|
||||
where TUser : class, IUserBase
|
||||
where TUserToken : class, IUserTokenBase
|
||||
|
||||
{
|
||||
//AcUserDalBase<UserDbContext, User, UserTokenBase>
|
||||
//private UserDal _userDal;
|
||||
|
||||
[TestInitialize]
|
||||
public void Setup()
|
||||
{
|
||||
}
|
||||
|
||||
[TestCleanup]
|
||||
public void TearDown()
|
||||
{
|
||||
}
|
||||
|
||||
//[TestMethod]
|
||||
//[DataRow("test@tiam.hu")]
|
||||
//public void GetUserByEmail_ReturnsUser_WhenUserExists(string email)
|
||||
//{
|
||||
// //var userDal = PooledDal.CreateDal<UserDal>();
|
||||
// var user = _userDal.GetUserByEmail(email);
|
||||
|
||||
// Assert.IsNotNull(user);
|
||||
// Assert.AreEqual(email, user.EmailAddress);
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,23 +5,23 @@ using AyCode.Interfaces.TimeStampInfo;
|
|||
|
||||
namespace AyCode.Database.DbContexts;
|
||||
|
||||
public class AcDbContextBase : DbContext
|
||||
public abstract class AcDbContextBase : DbContext
|
||||
{
|
||||
public string Name { get; set; }
|
||||
|
||||
public Guid SessionId { get; protected set; } = Guid.NewGuid();
|
||||
|
||||
public AcDbContextBase()
|
||||
protected AcDbContextBase()
|
||||
{
|
||||
//DbInterception.Add(new UtcDateTimeDbCommandInterceptor());
|
||||
}
|
||||
|
||||
public AcDbContextBase(string name) : this()
|
||||
protected AcDbContextBase(string name) : this()
|
||||
{
|
||||
Name = name;
|
||||
}
|
||||
|
||||
public AcDbContextBase(DbContextOptions<DbContext> options, string name) : base(options)
|
||||
protected AcDbContextBase(DbContextOptions<DbContext> options, string name) : base(options)
|
||||
{
|
||||
Name = name;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,5 +14,15 @@ namespace AyCode.Database.DbContexts.Users
|
|||
{
|
||||
public required DbSet<TUser> Users { get; set; }
|
||||
public required DbSet<TUserToken> UserTokens { get; set; }
|
||||
|
||||
protected AcUserDbContextBase() : this(string.Empty)
|
||||
{ }
|
||||
|
||||
protected AcUserDbContextBase(string name) : base(name)
|
||||
{ }
|
||||
|
||||
protected AcUserDbContextBase(DbContextOptions<DbContext> options, string name) : base(options, name)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
using AyCode.Interfaces.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace AyCode.Database.DbSets.Base;
|
||||
|
||||
public interface IDbSetGuidBase<TEntity> where TEntity : class, IEntityGuid
|
||||
{
|
||||
DbSet<TEntity> Users { get; set; }
|
||||
}
|
||||
|
||||
public interface IDbSetIntBase<TEntity> where TEntity : class, IEntityInt
|
||||
{
|
||||
DbSet<TEntity> Users { get; set; }
|
||||
}
|
||||
|
||||
public interface IDbSetBase<TEntity, TPkey> where TEntity : class, IEntity<TPkey>
|
||||
{
|
||||
DbSet<TEntity> Users { get; set; }
|
||||
}
|
||||
|
||||
public interface IDbSetBase<TEntity> where TEntity : class, IEntity
|
||||
{
|
||||
DbSet<TEntity> Users { get; set; }
|
||||
}
|
||||
|
|
@ -57,7 +57,7 @@ public static class AcUserTokenDbSetExtensions
|
|||
public static TUserToken? GetActiveUserToken<TUserToken>(this IAcUserTokenDbSet<TUserToken> ctx, Guid userId) where TUserToken : class, IUserTokenBase
|
||||
=> ctx.UserTokens.SingleOrDefault(x => x.UserId == userId && x.IsActive && (x.TokenExpiration == null || x.TokenExpiration > DateTime.UtcNow));
|
||||
|
||||
public static TUserToken? GetUserToken<TUserToken>(this IAcUserTokenDbSet<TUserToken> ctx, Guid userId, string verificationToken) where TUserToken : class?, IUserTokenBase?
|
||||
public static TUserToken? GetUserToken<TUserToken>(this IAcUserTokenDbSet<TUserToken> ctx, Guid userId, string verificationToken) where TUserToken : class, IUserTokenBase
|
||||
=> ctx.UserTokens.SingleOrDefault(x => x.UserId == userId && x.Token == verificationToken);
|
||||
|
||||
public static bool IsValidToken<TUserToken>(this IAcUserTokenDbSet<TUserToken> ctx, Guid userId, string verificationToken) where TUserToken : class, IUserTokenBase
|
||||
|
|
|
|||
Loading…
Reference in New Issue