diff --git a/AyCode.Database.Tests/AcDatabaseTestBase.cs b/AyCode.Database.Tests/AcDatabaseTestBase.cs new file mode 100644 index 0000000..1043528 --- /dev/null +++ b/AyCode.Database.Tests/AcDatabaseTestBase.cs @@ -0,0 +1,14 @@ +using AyCode.Database.DbContexts; + +namespace AyCode.Database.Tests +{ + public abstract class AcDatabaseTestBase : AcDatabaseTestModelBase where TDbContext : AcDbContextBase + { + [TestMethod] + public void DatabaseExistsTest() + { + var isConnected = Context.Database.CanConnect(); + Assert.IsTrue(isConnected); + } + } +} \ No newline at end of file diff --git a/AyCode.Database.Tests/AcDatabaseTestModelBase.cs b/AyCode.Database.Tests/AcDatabaseTestModelBase.cs new file mode 100644 index 0000000..97737d2 --- /dev/null +++ b/AyCode.Database.Tests/AcDatabaseTestModelBase.cs @@ -0,0 +1,23 @@ +using AyCode.Core.Tests; +using AyCode.Database.DataLayers; +using AyCode.Database.DbContexts; + +namespace AyCode.Database.Tests; + +public abstract class AcDatabaseTestModelBase : TestModelBase where TDal : IAcDalBase where TDbContext : AcDbContextBase +{ + protected TDal Dal; + protected AcDatabaseTestModelBase() + { + Dal = PooledDal.CreateDal(); + } +} + +public abstract class AcDatabaseTestModelBase : TestModelBase where TDbContext : AcDbContextBase +{ + protected TDbContext Context; + protected AcDatabaseTestModelBase() + { + Context = Activator.CreateInstance(); + } +} \ No newline at end of file diff --git a/AyCode.Database.Tests/DatabaseTestModelBase.cs b/AyCode.Database.Tests/DatabaseTestModelBase.cs deleted file mode 100644 index b9e7bc5..0000000 --- a/AyCode.Database.Tests/DatabaseTestModelBase.cs +++ /dev/null @@ -1,13 +0,0 @@ -using AyCode.Core.Tests; -using AyCode.Database.DataLayers; -using AyCode.Database.DbContexts; - -namespace AyCode.Database.Tests; - -public abstract class DatabaseTestModelBase : TestModelBase where TDbContext : AcDbContextBase -{ - protected DatabaseTestModelBase() - { - //var acDal = new acDal - } -} \ No newline at end of file diff --git a/AyCode.Database.Tests/DatabaseTests.cs b/AyCode.Database.Tests/DatabaseTests.cs deleted file mode 100644 index 8f287d8..0000000 --- a/AyCode.Database.Tests/DatabaseTests.cs +++ /dev/null @@ -1,13 +0,0 @@ -using AyCode.Database.DbContexts; - -namespace AyCode.Database.Tests -{ - [TestClass] - public abstract class DatabaseTests : DatabaseTestModelBase - { - [TestMethod] - public void TestMethod1() - { - } - } -} \ No newline at end of file diff --git a/AyCode.Database.Tests/Users/AcUserDalTestBase.cs b/AyCode.Database.Tests/Users/AcUserDalTestBase.cs new file mode 100644 index 0000000..4542468 --- /dev/null +++ b/AyCode.Database.Tests/Users/AcUserDalTestBase.cs @@ -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 : AcDatabaseTestModelBase + where TDal : AcUserDalBase + where TDbContext : AcDbContextBase, IAcUserDbContextBase + 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); + } + } +} diff --git a/AyCode.Database.Tests/Users/UserDbSetTest.cs b/AyCode.Database.Tests/Users/UserDbSetTest.cs deleted file mode 100644 index 7f9a2a9..0000000 --- a/AyCode.Database.Tests/Users/UserDbSetTest.cs +++ /dev/null @@ -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 : DatabaseTestModelBase - where TDbContext : AcDbContextBase, IAcUserDbContextBase - where TUser : class, IUserBase - where TUserToken : class, IUserTokenBase - - { - //AcUserDalBase - //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(); - // var user = _userDal.GetUserByEmail(email); - - // Assert.IsNotNull(user); - // Assert.AreEqual(email, user.EmailAddress); - //} - } -} diff --git a/AyCode.Database/DbContexts/AcDbContextBase.cs b/AyCode.Database/DbContexts/AcDbContextBase.cs index ddf4afd..5022ed8 100644 --- a/AyCode.Database/DbContexts/AcDbContextBase.cs +++ b/AyCode.Database/DbContexts/AcDbContextBase.cs @@ -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 options, string name) : base(options) + protected AcDbContextBase(DbContextOptions options, string name) : base(options) { Name = name; } diff --git a/AyCode.Database/DbContexts/Users/AcUserDbContextBase.cs b/AyCode.Database/DbContexts/Users/AcUserDbContextBase.cs index 2b20536..7bc256e 100644 --- a/AyCode.Database/DbContexts/Users/AcUserDbContextBase.cs +++ b/AyCode.Database/DbContexts/Users/AcUserDbContextBase.cs @@ -14,5 +14,15 @@ namespace AyCode.Database.DbContexts.Users { public required DbSet Users { get; set; } public required DbSet UserTokens { get; set; } + + protected AcUserDbContextBase() : this(string.Empty) + { } + + protected AcUserDbContextBase(string name) : base(name) + { } + + protected AcUserDbContextBase(DbContextOptions options, string name) : base(options, name) + { + } } } diff --git a/AyCode.Database/DbSets/Base/IDbSetBase.cs b/AyCode.Database/DbSets/Base/IDbSetBase.cs deleted file mode 100644 index bd4fea8..0000000 --- a/AyCode.Database/DbSets/Base/IDbSetBase.cs +++ /dev/null @@ -1,24 +0,0 @@ -using AyCode.Interfaces.Entities; -using Microsoft.EntityFrameworkCore; - -namespace AyCode.Database.DbSets.Base; - -public interface IDbSetGuidBase where TEntity : class, IEntityGuid -{ - DbSet Users { get; set; } -} - -public interface IDbSetIntBase where TEntity : class, IEntityInt -{ - DbSet Users { get; set; } -} - -public interface IDbSetBase where TEntity : class, IEntity -{ - DbSet Users { get; set; } -} - -public interface IDbSetBase where TEntity : class, IEntity -{ - DbSet Users { get; set; } -} \ No newline at end of file diff --git a/AyCode.Database/DbSets/Users/AcUserTokenDbSetExtensions.cs b/AyCode.Database/DbSets/Users/AcUserTokenDbSetExtensions.cs index 81d31aa..0a59abf 100644 --- a/AyCode.Database/DbSets/Users/AcUserTokenDbSetExtensions.cs +++ b/AyCode.Database/DbSets/Users/AcUserTokenDbSetExtensions.cs @@ -57,7 +57,7 @@ public static class AcUserTokenDbSetExtensions public static TUserToken? GetActiveUserToken(this IAcUserTokenDbSet 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(this IAcUserTokenDbSet ctx, Guid userId, string verificationToken) where TUserToken : class?, IUserTokenBase? + public static TUserToken? GetUserToken(this IAcUserTokenDbSet ctx, Guid userId, string verificationToken) where TUserToken : class, IUserTokenBase => ctx.UserTokens.SingleOrDefault(x => x.UserId == userId && x.Token == verificationToken); public static bool IsValidToken(this IAcUserTokenDbSet ctx, Guid userId, string verificationToken) where TUserToken : class, IUserTokenBase