Jelajahi Sumber

Add qdr.qdr.app.qlbrc.base.Tests

Dalibor Votruba 3 tahun lalu
induk
melakukan
dc005aef13

+ 3 - 1
Common/qdr.app.qlbrc.common/Entities/Base/QlbrcEntityTenantWithId.cs

@@ -1,9 +1,11 @@
-using Quadarax.Application.QLiberace.Base.Entities.Base;
+using System.ComponentModel.DataAnnotations.Schema;
+using Quadarax.Application.QLiberace.Base.Entities.Base;
 
 namespace Quadarax.Application.QLiberace.Common.Entities.Base
 {
     public abstract class QlbrcEntityTenantWithId : QlbrcEntityTrackedWithId, ITenant
     {
+        [ForeignKey("FK_Tenant_Id")]
         public long TenantId { get; protected set; }
     }
 }

+ 6 - 2
Common/qdr.app.qlbrc.common/Entities/Base/QlbrcEntityTrackedWithId.cs

@@ -1,11 +1,15 @@
-using Quadarax.Application.QLiberace.Base.Entities.Base;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
 
 namespace Quadarax.Application.QLiberace.Common.Entities.Base
 {
     public abstract class QlbrcEntityTrackedWithId : QlbrcEntityWithId, ITracked
     {
+        [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
+        [Required]
         public DateTime Created { get; protected set; }
         public DateTime? Modified { get; protected set;}
-        public string Modifier { get; protected set;}
+        [MaxLength(100)]
+        public string? Modifier { get; protected set;}
     }
 }

+ 8 - 2
Common/qdr.app.qlbrc.common/Entities/Base/QlbrcEntityTrackedWithoutId.cs

@@ -1,9 +1,15 @@
-namespace Quadarax.Application.QLiberace.Common.Entities.Base
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+
+namespace Quadarax.Application.QLiberace.Common.Entities.Base
 {
     public abstract class QlbrcEntityTrackedWithoutId: QlbrcEntityWithId, ITracked
     {
+        [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
+        [Required]
         public DateTime Created { get; protected set; }
         public DateTime? Modified { get; protected set;}
-        public string Modifier { get; protected set;}
+        [MaxLength(100)]
+        public string? Modifier { get; protected set;}
     }
 }

+ 6 - 2
Common/qdr.app.qlbrc.common/Entities/Base/QlbrcEntityWithId.cs

@@ -1,9 +1,13 @@
-using Quadarax.Foundation.Core.Data.Entity;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Quadarax.Foundation.Core.Data.Entity;
 
 
 namespace Quadarax.Application.QLiberace.Common.Entities.Base;
 
 public abstract  class QlbrcEntityWithId : Entity<long>, IIdentifier
 {
-
+    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+    [Key]
+    public override long Id { get; set; }
 }

+ 29 - 27
Common/qdr.fnd.core.data/Entity/Entity.cs

@@ -1,27 +1,29 @@
-using System;
-using System.Text;
-using Quadarax.Foundation.Core.Data.Interface.Entity;
-
-namespace Quadarax.Foundation.Core.Data.Entity
-{
-    public abstract class Entity<TKey> : IDao<TKey> where TKey : IEquatable<TKey>
-    {
-        #region *** Properties ***
-
-        public virtual TKey Id { get; set; }
-
-        #endregion
-
-        #region *** Public Overrides ***
-
-        public override string ToString()
-        {
-            var sb = new StringBuilder();
-            sb.Append("Entity=").Append(GetType().Name).Append(";Id=").Append(Id);
-            return sb.ToString();
-        }
-
-        #endregion
-    }
-
-}
+using System;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text;
+using Quadarax.Foundation.Core.Data.Interface.Entity;
+
+namespace Quadarax.Foundation.Core.Data.Entity
+{
+    public abstract class Entity<TKey> : IDao<TKey> where TKey : IEquatable<TKey>
+    {
+        #region *** Properties ***
+        [Key]
+        public virtual TKey Id { get; set; }
+
+        #endregion
+
+        #region *** Public Overrides ***
+
+        public override string ToString()
+        {
+            var sb = new StringBuilder();
+            sb.Append("Entity=").Append(GetType().Name).Append(";Id=").Append(Id);
+            return sb.ToString();
+        }
+
+        #endregion
+    }
+
+}

+ 1 - 1
Modules/qdr.app.qlbrc.base/Entities/Interfaces/IStructSetting.cs

@@ -2,7 +2,7 @@
 
 public interface IStructSetting
 {
-    long ParentId { get; set; }
+    long? ParentId { get; set; }
     int SequenceNo { get; set; }
     string ModuleCode { get; set; }
     string Code { get; set; }

+ 20 - 3
Modules/qdr.app.qlbrc.base/Entities/Setting.cs

@@ -1,23 +1,40 @@
 using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
 using Quadarax.Application.QLiberace.Base.Entities.Interfaces;
 using Quadarax.Application.QLiberace.Common.Entities.Base;
 using System.ComponentModel.DataAnnotations.Schema;
-using Quadarax.Foundation.Core.Reflection;
-
+using Microsoft.EntityFrameworkCore;
+using Quadarax.Foundation.Core.Reflection;
 namespace Quadarax.Application.QLiberace.Base.Entities;
 
 [Table(Constants.Modules.Base.TblSetting,Schema = Constants.Modules.Base.Schema)]
+[Index("ModuleCode","Code", Name="IDX_CODE_MODULECODE", IsUnique = true )]
 public class Setting : QlbrcEntityTrackedWithoutId, IStructSetting
 {
     #region *** Properties ***
-    public long ParentId { get; set; }
+    [ForeignKey("FK_Setting_Parent_Id")]
+    public long? ParentId { get; set; }
+    [Required]
+    [DefaultValue(0)]
     public int SequenceNo { get; set; }
+    [MaxLength(10)]
+    [Required(AllowEmptyStrings = false)]
     public string ModuleCode { get; set; }
+    [MaxLength(100)]
+    [Required(AllowEmptyStrings = false)]
     public string Code { get; set; }
+
+    [MaxLength(500)]
     public string? Description { get; set; }
 
+    [MaxLength(500)]
+    [Required(AllowEmptyStrings = false)]
     public string ValueTypeQualified { get; set; }
+    [MaxLength(5000)]
+    [Required]
     public string? Value { get; set; }
+    [Required]
+    [DefaultValue(false)]
     public bool IsEnabled { get; set; }
     #endregion
 

+ 9 - 1
Modules/qdr.app.qlbrc.base/Entities/Tenant.cs

@@ -1,15 +1,23 @@
-using Quadarax.Application.QLiberace.Base.Entities.Interfaces;
+using Microsoft.EntityFrameworkCore;
+using Quadarax.Application.QLiberace.Base.Entities.Interfaces;
 using Quadarax.Application.QLiberace.Common.Entities.Base;
+using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations.Schema;
 
 namespace Quadarax.Application.QLiberace.Base.Entities
 {
     [Table(Constants.Modules.Base.TblTenant,Schema = Constants.Modules.Base.Schema)]
+    [Index("Code", Name="IDX_TENANT_CODE", IsUnique = true )]
     public class Tenant : QlbrcEntityTrackedWithId, IStructTenant
     {
+        [MaxLength(20)]
+        [Required(AllowEmptyStrings =false)]
         public string Code { get; set; }
+        [MaxLength(100)]
+        [Required(AllowEmptyStrings =false)]
         public string Name { get; set; }
         public DateTime? LastAccess { get; set; }
+        [Required]
         public bool IsLocked { get; set; }
     }
 }

+ 10 - 1
Modules/qdr.app.qlbrc.base/Entities/User.cs

@@ -1,13 +1,22 @@
-using Quadarax.Application.QLiberace.Base.Entities.Interfaces;
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+using Quadarax.Application.QLiberace.Base.Entities.Interfaces;
 using Quadarax.Application.QLiberace.Common.Entities.Base;
 using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
 
 namespace Quadarax.Application.QLiberace.Base.Entities
 {
     [Table(Constants.Modules.Base.TblUser,Schema = Constants.Modules.Base.Schema)]
+    [Index("LoginName", Name="IDX_LOGIN_NAME", IsUnique = true )]
     public class User : QlbrcEntityTrackedWithId, IStructUser
     {
+        [MaxLength(100)]
+        [Required(AllowEmptyStrings = false)]
         public string LoginName { get; set; }
+
+        [Required]
+        [DefaultValue(false)]
         public bool IsLocked { get; set; }
     }
 }

+ 23 - 0
Tests/qdr.app.qlbrc.base.Tests/Entities/SettingTest.cs

@@ -0,0 +1,23 @@
+namespace Quadarax.Application.QLiberace.Base.Tests.Entities
+{
+    [TestFixture(Category = "Dao")]
+    public class SettingTest
+    {
+        [SetUp]
+        public void Setup()
+        {
+        }
+
+        [Test]
+        public void HasPKOK()
+        {
+            Assert.Pass();
+        }
+
+        [Test]
+        public void HasTrackedOK()
+        {
+            Assert.Pass();
+        }
+    }
+}

+ 1 - 0
Tests/qdr.app.qlbrc.base.Tests/Usings.cs

@@ -0,0 +1 @@
+global using NUnit.Framework;

+ 25 - 0
Tests/qdr.app.qlbrc.base.Tests/qdr.app.qlbrc.base.Tests.csproj

@@ -0,0 +1,25 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+
+    <IsPackable>false</IsPackable>
+
+    <RootNamespace>Quadarax.Application.QLiberace.Base.Tests</RootNamespace>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
+    <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
+    <PackageReference Include="NUnit.Analyzers" Version="3.3.0" />
+    <PackageReference Include="coverlet.collector" Version="3.1.2" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="Repositories\" />
+  </ItemGroup>
+
+</Project>

+ 8 - 1
qdr.app.qlbrc.sln

@@ -33,7 +33,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{6B02BEE0
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{D8C71782-99B7-49FA-BF63-F40D8232B8DE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "qdr.app.qlbrc.common.Tests", "Tests\qdr.app.qlbrc.common.Tests\qdr.app.qlbrc.common.Tests.csproj", "{653F7A49-07B8-4AE5-80FC-E559F38718CF}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "qdr.app.qlbrc.common.Tests", "Tests\qdr.app.qlbrc.common.Tests\qdr.app.qlbrc.common.Tests.csproj", "{653F7A49-07B8-4AE5-80FC-E559F38718CF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "qdr.app.qlbrc.base.Tests", "Tests\qdr.app.qlbrc.base.Tests\qdr.app.qlbrc.base.Tests.csproj", "{3F99AB71-EB24-47D4-BBB6-755ED785D0FE}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -85,6 +87,10 @@ Global
 		{653F7A49-07B8-4AE5-80FC-E559F38718CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{653F7A49-07B8-4AE5-80FC-E559F38718CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{653F7A49-07B8-4AE5-80FC-E559F38718CF}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3F99AB71-EB24-47D4-BBB6-755ED785D0FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3F99AB71-EB24-47D4-BBB6-755ED785D0FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3F99AB71-EB24-47D4-BBB6-755ED785D0FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3F99AB71-EB24-47D4-BBB6-755ED785D0FE}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -103,6 +109,7 @@ Global
 		{6B02BEE0-E272-4AD5-B61D-69713331842B} = {24170366-2A73-4C1E-86D6-DA3C987D304E}
 		{D8C71782-99B7-49FA-BF63-F40D8232B8DE} = {52B118CE-E47C-475C-8177-FC49F0FC8FE8}
 		{653F7A49-07B8-4AE5-80FC-E559F38718CF} = {D8C71782-99B7-49FA-BF63-F40D8232B8DE}
+		{3F99AB71-EB24-47D4-BBB6-755ED785D0FE} = {D8C71782-99B7-49FA-BF63-F40D8232B8DE}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {AB5693A0-BE22-4D85-997A-EC8F74FE9B10}