diff --git a/TIAM.Database.Test/UserDalTests.cs b/TIAM.Database.Test/UserDalTests.cs index 39ec144c..b8969acd 100644 --- a/TIAM.Database.Test/UserDalTests.cs +++ b/TIAM.Database.Test/UserDalTests.cs @@ -5,6 +5,9 @@ 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; @@ -46,7 +49,26 @@ namespace TIAM.Database.Test 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(serializedUser); + + Assert.IsNotNull(user); + Assert.IsNotNull(user.UserProductMappings); + //Assert.IsNotNull(user.UserProductMappings.FirstOrDefault()?.Product); + } //[TestMethod] //[DataRow("test@tiam.hu")] diff --git a/TIAM.Database/DbContexts/DbContextBase.cs b/TIAM.Database/DbContexts/DbContextBase.cs index bbecead5..b884bc06 100644 --- a/TIAM.Database/DbContexts/DbContextBase.cs +++ b/TIAM.Database/DbContexts/DbContextBase.cs @@ -29,6 +29,7 @@ namespace TIAM.Database.DbContexts { base.OnConfiguring(optionsBuilder); + optionsBuilder.UseLazyLoadingProxies(false); optionsBuilder.EnableDetailedErrors(true); //optionsBuilder.UseSqlServer(Configuration.GetConnectionString("DeveloperDbConnection")); diff --git a/TIAM.Database/DbContexts/Users/UserDbContext.cs b/TIAM.Database/DbContexts/Users/UserDbContext.cs index b7560bd4..b0dba871 100644 --- a/TIAM.Database/DbContexts/Users/UserDbContext.cs +++ b/TIAM.Database/DbContexts/Users/UserDbContext.cs @@ -51,6 +51,7 @@ namespace TIAM.Database.DbContexts.Users base.OnModelCreating(modelBuilder); new UserEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); + new UserProductMappingEntityTypeDefaultConfiguration().Configure(modelBuilder.Entity()); } } } diff --git a/TIAM.Entities/Users/User.cs b/TIAM.Entities/Users/User.cs index bb22b638..cee29d06 100644 --- a/TIAM.Entities/Users/User.cs +++ b/TIAM.Entities/Users/User.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -13,7 +14,7 @@ namespace TIAM.Entities.Users //public virtual List Products { get; } = new(); //public virtual ServiceProvider ServiceProvider { get; set; } = new(); - public virtual List UserProductMappings { get; } = new(); + public virtual List UserProductMappings { get; set; } = new(); public User() { } public User(string email, string password) : this(Guid.NewGuid(), email, password) { }