using Microsoft.AspNetCore.Mvc; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; using System.Linq; using System.Text; using WalkingTec.Mvvm.Core; using wtmProject.Controllers; using wtmProject.ViewModel._Admin.FrameworkOutRecordVMs; using wtmProject.Model; using wtmProject.DataAccess; namespace wtmProject.Test { [TestClass] public class FrameworkOutRecordApiTest { private FrameworkOutRecordController _controller; private string _seed; public FrameworkOutRecordApiTest() { _seed = Guid.NewGuid().ToString(); _controller = MockController.CreateApi(new DataContext(_seed, DBTypeEnum.Memory), "user"); } [TestMethod] public void SearchTest() { ContentResult rv = _controller.Search(new FrameworkOutRecordSearcher()) as ContentResult; Assert.IsTrue(string.IsNullOrEmpty(rv.Content)==false); } [TestMethod] public void CreateTest() { FrameworkOutRecordVM vm = _controller.Wtm.CreateVM(); FrameworkOutRecord v = new FrameworkOutRecord(); v.UserId = AddFrameworkUser(); v.City = "j0OPsRXQCpbhtIWMRDSYfRri2Z3MsN4MyMb83lWWeKqpa2ishxdrF0xvnfrtXDlxboGeXzLWFChf1rYzprYJ0zmBurnwNCt7ORdAj4BQzLCQAjYUQbvDfPpNeP0uZnhk5fAgqTOjQW5IwWZ1gf8ORE9Tof"; v.OutStartTime = DateTime.Parse("2025-05-07 11:26:13"); v.OutEndTime = DateTime.Parse("2025-01-25 11:26:13"); v.OutRecordType = wtmProject.Model.OutRecordTypeEnum.Implement; v.CustomId = AddFrameworkCustom(); v.ProjectId = AddFrameworkProject(); v.Remark = "h8G2yphlXf3BGNwrLgwQklYK7bjH17uiQ3o8qFl8mySRk5AoGHTqEf8LIFNGQ6Z5mGrJDsf0xw2jGvLkY7uGvQu4pUNPhrz7vVeNYemsAmFqpamX711T67svlyBoTBgUsCChnTCX1Y1tqlkBb0uwtiYmDipb1yBw0UHaf7Bzdw5Iuu3WCj5KojaU6WfjGpfg0fw1JHiSqcAeHEqHGw4OiwBacH0DsqYCkoWZbU8A7IuRegaOxMxaCsjl57XFhbHR7hOOOOt06ytZYGysD3E0Gc9FIRQ6MgYbCrl7ge7bulzTjk8MybaxqlQhRVjPUr7zkAQQqbjmUZdSyJNKKQj9eaf1sFFlWOwwSyhRQLiBHj7NLS8sXGXGuuhURqeXCdQk67Cx0BphBRHypNLzU2"; vm.Entity = v; var rv = _controller.Add(vm); Assert.IsInstanceOfType(rv, typeof(OkObjectResult)); using (var context = new DataContext(_seed, DBTypeEnum.Memory)) { var data = context.Set().Find(v.ID); Assert.AreEqual(data.City, "j0OPsRXQCpbhtIWMRDSYfRri2Z3MsN4MyMb83lWWeKqpa2ishxdrF0xvnfrtXDlxboGeXzLWFChf1rYzprYJ0zmBurnwNCt7ORdAj4BQzLCQAjYUQbvDfPpNeP0uZnhk5fAgqTOjQW5IwWZ1gf8ORE9Tof"); Assert.AreEqual(data.OutStartTime, DateTime.Parse("2025-05-07 11:26:13")); Assert.AreEqual(data.OutEndTime, DateTime.Parse("2025-01-25 11:26:13")); Assert.AreEqual(data.OutRecordType, wtmProject.Model.OutRecordTypeEnum.Implement); Assert.AreEqual(data.Remark, "h8G2yphlXf3BGNwrLgwQklYK7bjH17uiQ3o8qFl8mySRk5AoGHTqEf8LIFNGQ6Z5mGrJDsf0xw2jGvLkY7uGvQu4pUNPhrz7vVeNYemsAmFqpamX711T67svlyBoTBgUsCChnTCX1Y1tqlkBb0uwtiYmDipb1yBw0UHaf7Bzdw5Iuu3WCj5KojaU6WfjGpfg0fw1JHiSqcAeHEqHGw4OiwBacH0DsqYCkoWZbU8A7IuRegaOxMxaCsjl57XFhbHR7hOOOOt06ytZYGysD3E0Gc9FIRQ6MgYbCrl7ge7bulzTjk8MybaxqlQhRVjPUr7zkAQQqbjmUZdSyJNKKQj9eaf1sFFlWOwwSyhRQLiBHj7NLS8sXGXGuuhURqeXCdQk67Cx0BphBRHypNLzU2"); Assert.AreEqual(data.CreateBy, "user"); Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10); } } [TestMethod] public void EditTest() { FrameworkOutRecord v = new FrameworkOutRecord(); using (var context = new DataContext(_seed, DBTypeEnum.Memory)) { v.UserId = AddFrameworkUser(); v.City = "j0OPsRXQCpbhtIWMRDSYfRri2Z3MsN4MyMb83lWWeKqpa2ishxdrF0xvnfrtXDlxboGeXzLWFChf1rYzprYJ0zmBurnwNCt7ORdAj4BQzLCQAjYUQbvDfPpNeP0uZnhk5fAgqTOjQW5IwWZ1gf8ORE9Tof"; v.OutStartTime = DateTime.Parse("2025-05-07 11:26:13"); v.OutEndTime = DateTime.Parse("2025-01-25 11:26:13"); v.OutRecordType = wtmProject.Model.OutRecordTypeEnum.Implement; v.CustomId = AddFrameworkCustom(); v.ProjectId = AddFrameworkProject(); v.Remark = "h8G2yphlXf3BGNwrLgwQklYK7bjH17uiQ3o8qFl8mySRk5AoGHTqEf8LIFNGQ6Z5mGrJDsf0xw2jGvLkY7uGvQu4pUNPhrz7vVeNYemsAmFqpamX711T67svlyBoTBgUsCChnTCX1Y1tqlkBb0uwtiYmDipb1yBw0UHaf7Bzdw5Iuu3WCj5KojaU6WfjGpfg0fw1JHiSqcAeHEqHGw4OiwBacH0DsqYCkoWZbU8A7IuRegaOxMxaCsjl57XFhbHR7hOOOOt06ytZYGysD3E0Gc9FIRQ6MgYbCrl7ge7bulzTjk8MybaxqlQhRVjPUr7zkAQQqbjmUZdSyJNKKQj9eaf1sFFlWOwwSyhRQLiBHj7NLS8sXGXGuuhURqeXCdQk67Cx0BphBRHypNLzU2"; context.Set().Add(v); context.SaveChanges(); } FrameworkOutRecordVM vm = _controller.Wtm.CreateVM(); var oldID = v.ID; v = new FrameworkOutRecord(); v.ID = oldID; v.City = "EXZN93Wfq0Pwt0TU0Mr32cBIPyhBA73HAiYJW21KeIr"; v.OutStartTime = DateTime.Parse("2024-03-06 11:26:13"); v.OutEndTime = DateTime.Parse("2024-07-04 11:26:13"); v.OutRecordType = wtmProject.Model.OutRecordTypeEnum.Vacation; v.Remark = "755sQjKc8bSmL8E9xqjAh1XxPAu7dPpPIPR3SLsVofWdA2bNujLvZtPEQihhbDC7NE9nUq6DdwpZlstR2IsXsrosxWTpQfH"; vm.Entity = v; vm.FC = new Dictionary(); vm.FC.Add("Entity.UserId", ""); vm.FC.Add("Entity.City", ""); vm.FC.Add("Entity.OutStartTime", ""); vm.FC.Add("Entity.OutEndTime", ""); vm.FC.Add("Entity.OutRecordType", ""); vm.FC.Add("Entity.CustomId", ""); vm.FC.Add("Entity.ProjectId", ""); vm.FC.Add("Entity.Remark", ""); var rv = _controller.Edit(vm); Assert.IsInstanceOfType(rv, typeof(OkObjectResult)); using (var context = new DataContext(_seed, DBTypeEnum.Memory)) { var data = context.Set().Find(v.ID); Assert.AreEqual(data.City, "EXZN93Wfq0Pwt0TU0Mr32cBIPyhBA73HAiYJW21KeIr"); Assert.AreEqual(data.OutStartTime, DateTime.Parse("2024-03-06 11:26:13")); Assert.AreEqual(data.OutEndTime, DateTime.Parse("2024-07-04 11:26:13")); Assert.AreEqual(data.OutRecordType, wtmProject.Model.OutRecordTypeEnum.Vacation); Assert.AreEqual(data.Remark, "755sQjKc8bSmL8E9xqjAh1XxPAu7dPpPIPR3SLsVofWdA2bNujLvZtPEQihhbDC7NE9nUq6DdwpZlstR2IsXsrosxWTpQfH"); Assert.AreEqual(data.UpdateBy, "user"); Assert.IsTrue(DateTime.Now.Subtract(data.UpdateTime.Value).Seconds < 10); } } [TestMethod] public void GetTest() { FrameworkOutRecord v = new FrameworkOutRecord(); using (var context = new DataContext(_seed, DBTypeEnum.Memory)) { v.UserId = AddFrameworkUser(); v.City = "j0OPsRXQCpbhtIWMRDSYfRri2Z3MsN4MyMb83lWWeKqpa2ishxdrF0xvnfrtXDlxboGeXzLWFChf1rYzprYJ0zmBurnwNCt7ORdAj4BQzLCQAjYUQbvDfPpNeP0uZnhk5fAgqTOjQW5IwWZ1gf8ORE9Tof"; v.OutStartTime = DateTime.Parse("2025-05-07 11:26:13"); v.OutEndTime = DateTime.Parse("2025-01-25 11:26:13"); v.OutRecordType = wtmProject.Model.OutRecordTypeEnum.Implement; v.CustomId = AddFrameworkCustom(); v.ProjectId = AddFrameworkProject(); v.Remark = "h8G2yphlXf3BGNwrLgwQklYK7bjH17uiQ3o8qFl8mySRk5AoGHTqEf8LIFNGQ6Z5mGrJDsf0xw2jGvLkY7uGvQu4pUNPhrz7vVeNYemsAmFqpamX711T67svlyBoTBgUsCChnTCX1Y1tqlkBb0uwtiYmDipb1yBw0UHaf7Bzdw5Iuu3WCj5KojaU6WfjGpfg0fw1JHiSqcAeHEqHGw4OiwBacH0DsqYCkoWZbU8A7IuRegaOxMxaCsjl57XFhbHR7hOOOOt06ytZYGysD3E0Gc9FIRQ6MgYbCrl7ge7bulzTjk8MybaxqlQhRVjPUr7zkAQQqbjmUZdSyJNKKQj9eaf1sFFlWOwwSyhRQLiBHj7NLS8sXGXGuuhURqeXCdQk67Cx0BphBRHypNLzU2"; context.Set().Add(v); context.SaveChanges(); } var rv = _controller.Get(v.ID.ToString()); Assert.IsNotNull(rv); } [TestMethod] public void BatchDeleteTest() { FrameworkOutRecord v1 = new FrameworkOutRecord(); FrameworkOutRecord v2 = new FrameworkOutRecord(); using (var context = new DataContext(_seed, DBTypeEnum.Memory)) { v1.UserId = AddFrameworkUser(); v1.City = "j0OPsRXQCpbhtIWMRDSYfRri2Z3MsN4MyMb83lWWeKqpa2ishxdrF0xvnfrtXDlxboGeXzLWFChf1rYzprYJ0zmBurnwNCt7ORdAj4BQzLCQAjYUQbvDfPpNeP0uZnhk5fAgqTOjQW5IwWZ1gf8ORE9Tof"; v1.OutStartTime = DateTime.Parse("2025-05-07 11:26:13"); v1.OutEndTime = DateTime.Parse("2025-01-25 11:26:13"); v1.OutRecordType = wtmProject.Model.OutRecordTypeEnum.Implement; v1.CustomId = AddFrameworkCustom(); v1.ProjectId = AddFrameworkProject(); v1.Remark = "h8G2yphlXf3BGNwrLgwQklYK7bjH17uiQ3o8qFl8mySRk5AoGHTqEf8LIFNGQ6Z5mGrJDsf0xw2jGvLkY7uGvQu4pUNPhrz7vVeNYemsAmFqpamX711T67svlyBoTBgUsCChnTCX1Y1tqlkBb0uwtiYmDipb1yBw0UHaf7Bzdw5Iuu3WCj5KojaU6WfjGpfg0fw1JHiSqcAeHEqHGw4OiwBacH0DsqYCkoWZbU8A7IuRegaOxMxaCsjl57XFhbHR7hOOOOt06ytZYGysD3E0Gc9FIRQ6MgYbCrl7ge7bulzTjk8MybaxqlQhRVjPUr7zkAQQqbjmUZdSyJNKKQj9eaf1sFFlWOwwSyhRQLiBHj7NLS8sXGXGuuhURqeXCdQk67Cx0BphBRHypNLzU2"; v2.UserId = v1.UserId; v2.City = "EXZN93Wfq0Pwt0TU0Mr32cBIPyhBA73HAiYJW21KeIr"; v2.OutStartTime = DateTime.Parse("2024-03-06 11:26:13"); v2.OutEndTime = DateTime.Parse("2024-07-04 11:26:13"); v2.OutRecordType = wtmProject.Model.OutRecordTypeEnum.Vacation; v2.CustomId = v1.CustomId; v2.ProjectId = v1.ProjectId; v2.Remark = "755sQjKc8bSmL8E9xqjAh1XxPAu7dPpPIPR3SLsVofWdA2bNujLvZtPEQihhbDC7NE9nUq6DdwpZlstR2IsXsrosxWTpQfH"; context.Set().Add(v1); context.Set().Add(v2); context.SaveChanges(); } var rv = _controller.BatchDelete(new string[] { v1.ID.ToString(), v2.ID.ToString() }); Assert.IsInstanceOfType(rv, typeof(OkObjectResult)); using (var context = new DataContext(_seed, DBTypeEnum.Memory)) { var data1 = context.Set().Find(v1.ID); var data2 = context.Set().Find(v2.ID); Assert.AreEqual(data1, null); Assert.AreEqual(data2, null); } rv = _controller.BatchDelete(new string[] {}); Assert.IsInstanceOfType(rv, typeof(OkResult)); } private Guid AddFileAttachment() { FileAttachment v = new FileAttachment(); using (var context = new DataContext(_seed, DBTypeEnum.Memory)) { try{ v.FileName = "JA51cRwVe0"; v.FileExt = "3nfp"; v.Path = "Mr4UsEUT6UrKpfy"; v.Length = 92; v.UploadTime = DateTime.Parse("2023-05-14 11:26:13"); v.SaveMode = "MR95oliYP9x5G0lpvqj"; v.ExtraInfo = "pCJxSN"; v.HandlerInfo = "PNb2yd"; context.Set().Add(v); context.SaveChanges(); } catch{} } return v.ID; } private Guid AddFrameworkUser() { FrameworkUser v = new FrameworkUser(); using (var context = new DataContext(_seed, DBTypeEnum.Memory)) { try{ v.Gender = WalkingTec.Mvvm.Core.GenderEnum.Female; v.CellPhone = "UnRjUv6JhaQ65Uldcr";; v.ITCode = "c7e"; v.Password = "ifEmw7NJEsx3qTPwj"; v.Name = "ZtBu7vJzSrjPWMpzLIwrCT"; v.IsValid = true; v.PhotoId = AddFileAttachment(); context.Set().Add(v); context.SaveChanges(); } catch{} } return v.ID; } private Guid AddFrameworkCustom() { FrameworkCustom v = new FrameworkCustom(); using (var context = new DataContext(_seed, DBTypeEnum.Memory)) { try{ v.CustomCode = "63f7kd7J29VelvDXzrB35MehS1j9msv9ZiFPO"; v.CustomName = "L1KtYo5yv2i43YF1BsKtbq5tDDvsR0BPTUk"; context.Set().Add(v); context.SaveChanges(); } catch{} } return v.ID; } private Guid AddFrameworkProject() { FrameworkProject v = new FrameworkProject(); using (var context = new DataContext(_seed, DBTypeEnum.Memory)) { try{ v.ProjectCode = "jpdf52rUbZp2OrcomNf12oc60mbxdY0EJx0yyis71OUdt"; v.ProjectName = "XFPuQP21e6843"; context.Set().Add(v); context.SaveChanges(); } catch{} } return v.ID; } } }