refactoring, improvements, fixes, etc...

This commit is contained in:
jozsef.b@aycode.com 2024-05-01 08:08:14 +02:00
parent 5cc7ff9529
commit 93482b5ba6
25 changed files with 417 additions and 16 deletions

View File

@ -0,0 +1,39 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.3.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.3.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AyCode.Core.Server\AyCode.Core.Server.csproj" />
<ProjectReference Include="..\AyCode.Core.Tests\AyCode.Core.Tests.csproj" />
<ProjectReference Include="..\AyCode.Core\AyCode.Core.csproj" />
<ProjectReference Include="..\AyCode.Entities.Server\AyCode.Entities.Server.csproj" />
<ProjectReference Include="..\AyCode.Entities\AyCode.Entities.csproj" />
<ProjectReference Include="..\AyCode.Interfaces.Server\AyCode.Interfaces.Server.csproj" />
<ProjectReference Include="..\AyCode.Interfaces\AyCode.Interfaces.csproj" />
</ItemGroup>
<ItemGroup>
<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,18 @@
using System.Runtime.CompilerServices;
using AyCode.Entities.Addresses;
using AyCode.Interfaces.Addresses;
using AyCode.Interfaces.Addresses.Dtos;
[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
namespace AyCode.Core.Tests.Internal.Entities;
/// <summary>
/// DON'T USE!!!
/// </summary>
public class Address : AcAddress, IAcAddress, IAcAddressDtoBase
{
}

View File

@ -0,0 +1,17 @@
using System.Runtime.CompilerServices;
using AyCode.Entities.ServiceProviders;
[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
namespace AyCode.Core.Tests.Internal.Entities;
/// <summary>
/// DON'T USE!!!
/// </summary>
public class Company : AcServiceProvider<User, UserToCompany>
{
}

View File

@ -0,0 +1,17 @@
using System.Runtime.CompilerServices;
using AyCode.Entities.Messages;
[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
namespace AyCode.Core.Tests.Internal.Entities;
/// <summary>
/// DON'T USE!!!
/// </summary>
public class EmailMessage : AcEmailMessage<EmailRecipient>
{
}

View File

@ -0,0 +1,17 @@
using AyCode.Entities.Messages;
namespace AyCode.Core.Tests.Internal.Entities;
/// <summary>
/// DON'T USE!!!
/// </summary>
public class EmailRecipient : AcEmailRecipient<EmailMessage>
{
public EmailRecipient()
{
}
public EmailRecipient(Guid id, Guid recipientId, Guid emailMessageId, string emailAddress) : base(id, recipientId, emailMessageId, emailAddress)
{
}
}

View File

@ -0,0 +1,17 @@
using System.Runtime.CompilerServices;
using AyCode.Entities.Profiles;
[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
namespace AyCode.Core.Tests.Internal.Entities;
/// <summary>
/// DON'T USE!!!
/// </summary>
public class Profile : AcProfile<Address>
{
}

View File

@ -0,0 +1,17 @@
using System.Runtime.CompilerServices;
using AyCode.Entities.Users;
[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
namespace AyCode.Core.Tests.Internal.Entities;
/// <summary>
/// DON'T USE!!!
/// </summary>
public class User : AcUser<Profile, Company, UserToCompany, Address>
{
}

View File

@ -0,0 +1,17 @@
using System.Runtime.CompilerServices;
using AyCode.Entities.Users;
[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
namespace AyCode.Core.Tests.Internal.Entities;
/// <summary>
/// DON'T USE!!!
/// </summary>
public class UserToCompany: AcUserToServiceProvider<User, Company>
{
}

View File

@ -0,0 +1,17 @@
using System.Runtime.CompilerServices;
using AyCode.Entities.Users;
[assembly: InternalsVisibleTo("AyCode.Database.Tests")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals")]
[assembly: InternalsVisibleTo("AyCode.Database.Tests.Users.Internals.UserDbContext")]
namespace AyCode.Core.Tests.Internal.Entities;
/// <summary>
/// DON'T USE!!!
/// </summary>
public class UserToken : AcUserTokenBase
{
}

View File

@ -21,4 +21,13 @@
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AyCode.Core.Server\AyCode.Core.Server.csproj" />
<ProjectReference Include="..\AyCode.Core\AyCode.Core.csproj" />
<ProjectReference Include="..\AyCode.Entities.Server\AyCode.Entities.Server.csproj" />
<ProjectReference Include="..\AyCode.Entities\AyCode.Entities.csproj" />
<ProjectReference Include="..\AyCode.Interfaces.Server\AyCode.Interfaces.Server.csproj" />
<ProjectReference Include="..\AyCode.Interfaces\AyCode.Interfaces.csproj" />
</ItemGroup>
</Project>

View File

@ -35,6 +35,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AyCode.Services.Server", "A
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AyCode.Services.Server.Tests", "AyCode.Services.Server.Tests\AyCode.Services.Server.Tests.csproj", "{9AC9AF60-280A-4871-A7FA-69AB4D0C858A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AyCode.Core.Tests.Internal", "AyCode.Core.Tests.Internal\AyCode.Core.Tests.Internal.csproj", "{DE2DD6A4-A906-4BA6-8AAA-2A0433DF523F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AyCode.Database.Tests.Internal", "AyCode.Database.Tests.Internal\AyCode.Database.Tests.Internal.csproj", "{73261A8C-FB41-4C4C-90D4-ED5EEC991413}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -102,6 +106,14 @@ Global
{9AC9AF60-280A-4871-A7FA-69AB4D0C858A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9AC9AF60-280A-4871-A7FA-69AB4D0C858A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9AC9AF60-280A-4871-A7FA-69AB4D0C858A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE2DD6A4-A906-4BA6-8AAA-2A0433DF523F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE2DD6A4-A906-4BA6-8AAA-2A0433DF523F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE2DD6A4-A906-4BA6-8AAA-2A0433DF523F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE2DD6A4-A906-4BA6-8AAA-2A0433DF523F}.Release|Any CPU.Build.0 = Release|Any CPU
{73261A8C-FB41-4C4C-90D4-ED5EEC991413}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{73261A8C-FB41-4C4C-90D4-ED5EEC991413}.Debug|Any CPU.Build.0 = Debug|Any CPU
{73261A8C-FB41-4C4C-90D4-ED5EEC991413}.Release|Any CPU.ActiveCfg = Release|Any CPU
{73261A8C-FB41-4C4C-90D4-ED5EEC991413}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -0,0 +1,43 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.3.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.3.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AyCode.Core.Server\AyCode.Core.Server.csproj" />
<ProjectReference Include="..\AyCode.Core.Tests.Internal\AyCode.Core.Tests.Internal.csproj" />
<ProjectReference Include="..\AyCode.Core.Tests\AyCode.Core.Tests.csproj" />
<ProjectReference Include="..\AyCode.Core\AyCode.Core.csproj" />
<ProjectReference Include="..\AyCode.Database.Tests\AyCode.Database.Tests.csproj" />
<ProjectReference Include="..\AyCode.Database\AyCode.Database.csproj" />
<ProjectReference Include="..\AyCode.Entities.Server\AyCode.Entities.Server.csproj" />
<ProjectReference Include="..\AyCode.Entities\AyCode.Entities.csproj" />
<ProjectReference Include="..\AyCode.Interfaces.Server\AyCode.Interfaces.Server.csproj" />
<ProjectReference Include="..\AyCode.Interfaces\AyCode.Interfaces.csproj" />
<ProjectReference Include="..\AyCode.Models.Server\AyCode.Models.Server.csproj" />
<ProjectReference Include="..\AyCode.Models\AyCode.Models.csproj" />
</ItemGroup>
<ItemGroup>
<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,22 @@
using AyCode.Database.DbContexts;
namespace AyCode.Database.Tests.Internal
{
[TestClass]
public class DatabaseTestBase : AcDatabaseTestBase<AcDbContextBase>
{
[TestInitialize]
public void Setup()
{
}
[TestCleanup]
public void TearDown()
{
}
[TestMethod]
public override void DatabaseExistsTest() => base.DatabaseExistsTest();
}
}

View File

@ -0,0 +1,12 @@
using AyCode.Core.Tests.Internal.Entities;
using AyCode.Database.DataLayers.Users;
namespace AyCode.Database.Tests.Internal.Users;
/// <summary>
/// DON'T USE!!!
/// </summary>
public sealed class UserDal : AcUserDalBase<UserDbContext, User, Profile, UserToken, Company, UserToCompany, Address, EmailMessage>
{
}

View File

@ -0,0 +1,16 @@
using AyCode.Core.Tests.Internal.Entities;
using AyCode.Database.Tests.Users;
namespace AyCode.Database.Tests.Internal.Users;
/// <summary>
/// DON'T USE!!!
/// </summary>
[TestClass]
public sealed class UserDalTests : AcUserDalTestBase<UserDal, UserDbContext, User, Profile, UserToken, Company, UserToCompany, Address, EmailMessage>
{
[TestMethod]
[DataRow("test@tiam.hu")]
public override void AcBase_GetUserByEmail_ReturnsUser_WhenUserExists(string email)
=> base.AcBase_GetUserByEmail_ReturnsUser_WhenUserExists(email);
}

View File

@ -0,0 +1,51 @@
using AyCode.Core.Tests.Internal.Entities;
using AyCode.Database.DbContexts.Users;
using Microsoft.EntityFrameworkCore;
namespace AyCode.Database.Tests.Internal.Users;
/// <summary>
/// DON'T USE!!!
/// </summary>
public sealed class UserDbContext : AcUserDbContextBase<User, Profile, UserToken, Company, UserToCompany, Address, EmailMessage>
{
public UserDbContext() //: this(string.Empty)
{
}
public UserDbContext(DbContextOptions<UserDbContext> options) //: this(string.Empty)
{
}
public UserDbContext(string name) : base(name)
{
}
public UserDbContext(DbContextOptions<DbContext> options, string name) : base(options, name)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseLazyLoadingProxies(true);
optionsBuilder.EnableDetailedErrors(true);
//optionsBuilder.UseSqlServer(Configuration.GetConnectionString("DeveloperDbConnection"));
var connString = "Data Source=185.51.190.197;Initial Catalog=TIAM_DEV;Trusted_Connection=false;Encrypt=false;TrustServerCertificate=True;Connect Timeout=200;User ID=Anata_Development_Team;Password=v6f_?xNfg9N1;MultipleActiveResultSets=true";
optionsBuilder.UseSqlServer(connString);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//new UserEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity<User>());
//new ProfileEntityTypeConfigurations().Configure(modelBuilder.Entity<Profile>());
//new EmailMessageEntityTypeDefaultConfigurations().Configure(modelBuilder.Entity<EmailMessage>());
}
}

View File

@ -5,7 +5,7 @@ namespace AyCode.Database.Tests
public abstract class AcDatabaseTestBase<TDbContext> : AcDatabaseTestModelBase<TDbContext> where TDbContext : AcDbContextBase
{
[TestMethod]
public void DatabaseExistsTest()
public virtual void DatabaseExistsTest()
{
var isConnected = Context.Database.CanConnect();
Assert.IsTrue(isConnected);

View File

@ -10,6 +10,17 @@
</PropertyGroup>
<ItemGroup>
<None Remove="appsettings.json" />
</ItemGroup>
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.4" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
@ -30,6 +41,8 @@
<ProjectReference Include="..\AyCode.Entities\AyCode.Entities.csproj" />
<ProjectReference Include="..\AyCode.Interfaces.Server\AyCode.Interfaces.Server.csproj" />
<ProjectReference Include="..\AyCode.Interfaces\AyCode.Interfaces.csproj" />
<ProjectReference Include="..\AyCode.Models.Server\AyCode.Models.Server.csproj" />
<ProjectReference Include="..\AyCode.Models\AyCode.Models.csproj" />
</ItemGroup>
<ItemGroup>

View File

@ -1,22 +1,28 @@
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<TDal, TDbContext, TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress> : AcDatabaseTestModelBase<TDal, TDbContext>
where TDal : AcUserDalBase<TDbContext, TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TDbContext : AcDbContextBase, IAcUserDbContextBase<TUser, TProfile, TUserToken,TServiceProvider, TUserToServiceProvider, TProfileAddress>
public abstract class AcUserDalTestBase<TDal, TDbContext, TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage> : AcDatabaseTestModelBase<TDal, TDbContext>
where TDal : AcUserDalBase<TDbContext, TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage>
where TDbContext : AcDbContextBase, IAcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage>
where TUser : class, IAcUser<TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TProfile : class, IAcProfile<TProfileAddress>
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)
{
@ -32,7 +38,12 @@ namespace AyCode.Database.Tests.Users
return user;
}
protected TUser AcBase_GetUserByEmail_ReturnsUser_WhenUserExists(string email)
[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);

View File

@ -0,0 +1,22 @@
{
"ConnectionStrings": {
"DeveloperDbConnection": "Data Source=185.51.190.197;Initial Catalog=TIAM_DEV;Trusted_Connection=False;Connect Timeout=200;User ID=Anata_Development_Team;Password=v6f_?xNfg9N1;MultipleActiveResultSets=true"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"JWT": {
"Key": "Cee4400-rDMFkVvHPufyLDSzbfu2grgRhpepos299IhTLOXsljkcpt3yUR4RRjPQ",
"Issuer": "http://localhost:5000",
"Audience": "http://localhost:5000"
},
"SendGrid": {
//"Key": "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"
"Key": "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"
}
}

View File

@ -13,19 +13,21 @@ using AyCode.Core.Consts;
using AyCode.Core.Helpers;
using AyCode.Database.DbSets.Users;
using AyCode.Interfaces.Addresses;
using AyCode.Interfaces.Messages;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.ServiceProviders;
namespace AyCode.Database.DataLayers.Users
{
public abstract class AcUserDalBase<TDbContext, TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress> : AcDalBase<TDbContext>
where TDbContext : AcDbContextBase, IAcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress>
public abstract class AcUserDalBase<TDbContext, TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage> : AcDalBase<TDbContext>
where TDbContext : AcDbContextBase, IAcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage>
where TUser : class, IAcUser<TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TProfile : class, IAcProfile<TProfileAddress>
where TUserToken : class, IAcUserTokenBase
where TServiceProvider : class, IAcServiceProviderBase
where TUserToServiceProvider : class, IAcUserToServiceProviderBase
where TProfileAddress : class, IAcAddress
where TEmailMessage : class, IAcEmailMessageBase
{
public TUser? GetUserById(Guid userId, bool onlyConfirmed) => Session(x => x.GetUserById(userId, onlyConfirmed));
public Task<TUser?> GetUserByIdAsync(Guid userId, bool onlyConfirmed) => SessionAsync(x => x.GetUserById(userId, onlyConfirmed));

View File

@ -1,4 +1,5 @@
using AyCode.Interfaces.Addresses;
using AyCode.Interfaces.Messages;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.ServiceProviders;
using AyCode.Interfaces.Users;
@ -6,18 +7,20 @@ using Microsoft.EntityFrameworkCore;
namespace AyCode.Database.DbContexts.Users
{
public abstract class AcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress> : AcDbContextBase, IAcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress>
public abstract class AcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage> : AcDbContextBase, IAcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage>
where TUser : class, IAcUser<TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TProfile : class, IAcProfile<TProfileAddress>
where TUserToken : class, IAcUserTokenBase
where TServiceProvider : class, IAcServiceProviderBase
where TUserToServiceProvider : class, IAcUserToServiceProviderBase
where TProfileAddress : class, IAcAddress
where TEmailMessage : class, IAcEmailMessageBase
{
public required DbSet<TUser> Users { get; set; }
public required DbSet<TUserToken> UserTokens { get; set; }
public DbSet<TProfileAddress> Addresses { get; set; }
public DbSet<TProfile> Profiles { get; set; }
public DbSet<TEmailMessage> EmailMessages { get; set; }
protected AcUserDbContextBase() : this(string.Empty)

View File

@ -1,15 +1,19 @@
using AyCode.Database.DbSets.Addresses;
using AyCode.Database.DbSets.Messages;
using AyCode.Database.DbSets.Profiles;
using AyCode.Database.DbSets.Users;
using AyCode.Interfaces.Addresses;
using AyCode.Interfaces.Messages;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.ServiceProviders;
using AyCode.Interfaces.Users;
namespace AyCode.Database.DbContexts.Users;
public interface IAcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress>
: IAcUserDbSet<TUser, TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>, IAcUserTokenDbSet<TUserToken>, IAcAddressDbSetBase<TProfileAddress>, IAcProfileDbSetBase<TProfile>
public interface IAcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage>
: IAcUserDbSet<TUser, TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>, IAcUserTokenDbSet<TUserToken>,
IAcAddressDbSetBase<TProfileAddress>, IAcProfileDbSetBase<TProfile>,
IAcEmailMessageDbSet<TEmailMessage>
where TUser : class, IAcUser<TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TProfile : class, IAcProfile<TProfileAddress>
@ -17,5 +21,6 @@ public interface IAcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvi
where TServiceProvider : class, IAcServiceProviderBase
where TUserToServiceProvider : class, IAcUserToServiceProviderBase
where TProfileAddress : class, IAcAddress
where TEmailMessage : class, IAcEmailMessageBase
{
}

View File

@ -3,6 +3,7 @@ using AyCode.Database.DbContexts.Users;
using AyCode.Database.DbContexts;
using AyCode.Database.Tests;
using AyCode.Interfaces.Addresses;
using AyCode.Interfaces.Messages;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.Server.Logins;
using AyCode.Interfaces.ServiceProviders;
@ -10,9 +11,9 @@ using AyCode.Interfaces.Users;
namespace AyCode.Services.Server.Tests.LoginServices
{
public abstract class AcLoginServiceServerTestBase<TDal, TDbContext, TLoginServiceServer, TResultLoggedInModel, TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress> : AcDatabaseTestModelBase<TDal, TDbContext>
where TDal : AcUserDalBase<TDbContext, TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TDbContext : AcDbContextBase, IAcUserDbContextBase<TUser, TProfile, TUserToken,TServiceProvider, TUserToServiceProvider, TProfileAddress>
public abstract class AcLoginServiceServerTestBase<TDal, TDbContext, TLoginServiceServer, TResultLoggedInModel, TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage> : AcDatabaseTestModelBase<TDal, TDbContext>
where TDal : AcUserDalBase<TDbContext, TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage>
where TDbContext : AcDbContextBase, IAcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage>
where TLoginServiceServer : class, IAcLoginServiceServer<TResultLoggedInModel, TUser, TUserToken, TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TResultLoggedInModel: class, IAcLoggedInModelBase<TUser, TUserToken, TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TUser : class, IAcUser<TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>
@ -21,6 +22,7 @@ namespace AyCode.Services.Server.Tests.LoginServices
where TUserToken : class, IAcUserTokenBase
where TServiceProvider : class, IAcServiceProviderBase
where TUserToServiceProvider : class, IAcUserToServiceProviderBase
where TEmailMessage : class, IAcEmailMessageBase
{
public TUser RegisterUserTest()
{

View File

@ -20,24 +20,26 @@ using AyCode.Core.Consts;
using AyCode.Core.Extensions;
using AyCode.Database.DataLayers.Users;
using AyCode.Database.DbContexts.Users;
using AyCode.Interfaces.Messages;
using AyCode.Models.Server.Logins;
using AyCode.Utils.Extensions;
using Microsoft.Extensions.Configuration;
namespace AyCode.Services.Server.Logins;
public class AcLoginServiceServer<TResultLoggedInModel, TDal, TDbContext, TUser, TUserToken, TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>(TDal userDal, IConfiguration configuration)
public class AcLoginServiceServer<TResultLoggedInModel, TDal, TDbContext, TUser, TUserToken, TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage>(TDal userDal, IConfiguration configuration)
: AcLoginServiceBase<TUser, TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>, IAcLoginServiceServer<TResultLoggedInModel, TUser, TUserToken, TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TResultLoggedInModel : class, IAcLoggedInModelBase<TUser, TUserToken, TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TDal : AcUserDalBase<TDbContext, TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TDbContext : AcDbContextBase, IAcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TDal : AcUserDalBase<TDbContext, TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage>
where TDbContext : AcDbContextBase, IAcUserDbContextBase<TUser, TProfile, TUserToken, TServiceProvider, TUserToServiceProvider, TProfileAddress, TEmailMessage>
where TUser : class, IAcUser<TProfile, TServiceProvider, TUserToServiceProvider, TProfileAddress>
where TUserToken : class, IAcUserTokenBase
where TProfile : class, IAcProfile<TProfileAddress>
where TServiceProvider : class, IAcServiceProviderBase
where TUserToServiceProvider : class, IAcUserToServiceProviderBase
where TProfileAddress : class, IAcAddress
where TEmailMessage : class, IAcEmailMessageBase
{
public TResultLoggedInModel? LoggedInModel { get; private set; }
public override TUser? LoggedInUser => LoggedInModel?.LoggedInUser;