using System; using System.Collections.Generic; using System.Linq; using Luticate2.Utils.Dbo; using Luticate2.Utils.Dbo.OrderBy; using Luticate2.Utils.Dbo.Result; using Test.Utils.DataAccess; using Test.Utils.Dbo.PkBigSerial; using Test.Utils.Dbo.PkGuid; using Xunit; namespace Test.Utils.EfCrudDataAccess { public class LuEfReadDataAccessTest { [Fact] public void TestGetSingle1() { Tests.TestRealDb(context => { var service = new LuUtilsPkBigSerialDataAccess(context); var res = service.AddDbo(new PkBigSerialAddDbo { SomeInt = 42, SomeText = "42" }); Assert.Equal(LuStatus.Success, res.Status); Assert.NotEqual(0, res.Data.Id); var get = service.GetSingle(bigserial => bigserial.some_int == 42); Assert.Equal(LuStatus.Success, get.Status); Assert.Equal("42", get.Data.SomeText); Assert.Equal(42, get.Data.SomeInt); Assert.Equal(res.Data.Id, get.Data.Id); }); } [Fact] public void TestGetSingle2() { Tests.TestRealDb(context => { var service = new LuUtilsPkBigSerialDataAccess(context); var res = service.AddDbo(new PkBigSerialAddDbo { SomeInt = 42, SomeText = "42" }); Assert.Equal(LuStatus.Success, res.Status); Assert.NotEqual(0, res.Data.Id); var get = service.GetSingle(bigserial => bigserial.some_int == 24); Assert.Equal(LuStatus.NotFound, get.Status); }); } [Fact] public void TestGetSingleByKeys1() { Tests.TestRealDb(context => { var service = new LuUtilsPkBigSerialDataAccess(context); var res = service.AddDbo(new PkBigSerialAddDbo { SomeInt = 42, SomeText = "42" }); Assert.Equal(LuStatus.Success, res.Status); Assert.NotEqual(0, res.Data.Id); var get = service.GetSingleByKeys(new KeyValuePair("some_text", "42")); Assert.Equal(LuStatus.Success, get.Status); Assert.Equal("42", get.Data.SomeText); Assert.Equal(42, get.Data.SomeInt); Assert.Equal(res.Data.Id, get.Data.Id); }); } [Fact] public void TestGetSingleByKeys2() { Tests.TestRealDb(context => { var service = new LuUtilsPkBigSerialDataAccess(context); var res = service.AddDbo(new PkBigSerialAddDbo { SomeInt = 42, SomeText = "42" }); Assert.Equal(LuStatus.Success, res.Status); Assert.NotEqual(0, res.Data.Id); var get = service.GetSingleByKeys(new KeyValuePair("some_text", "24")); Assert.Equal(LuStatus.NotFound, get.Status); }); } [Fact] public void TestGetSingleById1() { Tests.TestRealDb(context => { var service = new LuUtilsPkBigSerialDataAccess(context); var res = service.AddId(new PkBigSerialAddDbo { SomeInt = 42, SomeText = "42" }); Assert.Equal(LuStatus.Success, res.Status); Assert.NotEqual(0, res.Data); var get = service.GetSingleById(res.Data); Assert.Equal(LuStatus.Success, get.Status); Assert.Equal("42", get.Data.SomeText); Assert.Equal(42, get.Data.SomeInt); Assert.Equal(res.Data, get.Data.Id); }); } [Fact] public void TestGetSingleById2() { Tests.TestRealDb(context => { var service = new LuUtilsPkBigSerialDataAccess(context); var res = service.AddId(new PkBigSerialAddDbo { SomeInt = 42, SomeText = "42" }); Assert.Equal(LuStatus.Success, res.Status); Assert.NotEqual(0, res.Data); var get = service.GetSingle(bigserial => bigserial.some_int == 24); Assert.Equal(LuStatus.NotFound, get.Status); }); } [Fact] public void TestGetSingleById3() { Tests.TestRealDb(context => { var service = new LuUtilsPkGuidDataAccess(context); var res = service.AddId(new PkGuidAddDbo { SomeInt = 42, SomeText = "42" }); Assert.Equal(LuStatus.Success, res.Status); Assert.NotEqual(new Guid().ToString(), res.Data); var get = service.GetSingleById(res.Data); Assert.Equal(LuStatus.Success, get.Status); Assert.Equal("42", get.Data.SomeText); Assert.Equal(42, get.Data.SomeInt); Assert.Equal(res.Data, get.Data.Id); }); } [Fact] public void TestGetSingleById4() { Tests.TestRealDb(context => { var service = new LuUtilsPkGuidDataAccess(context); var res = service.AddId(new PkGuidAddDbo { SomeInt = 42, SomeText = "42" }); Assert.Equal(LuStatus.Success, res.Status); Assert.NotEqual(new Guid().ToString(), res.Data); var get = service.GetSingle(bigserial => bigserial.some_int == 24); Assert.Equal(LuStatus.NotFound, get.Status); }); } [Fact] public void TestGetMultiple1() { Tests.TestRealDb(context => { var dbos = new List { new PkGuidAddDbo { SomeInt = 42, SomeText = "442" }, new PkGuidAddDbo { SomeInt = 42, SomeText = "42" }, new PkGuidAddDbo { SomeInt = 142, SomeText = "24" } }; var service = new LuUtilsPkGuidDataAccess(context); var res = service.AddId(dbos); Assert.Equal(LuStatus.Success, res.Status); var get = service.GetMultiple(table => table.OrderBy(guid => guid.some_int), guid => guid.some_int == 42, 0, int.MaxValue, set => set.ThenBy(guid => guid.some_text)); Assert.Equal(LuStatus.Success, get.Status); Assert.Equal(2, get.Data.Count); Assert.Equal(2, get.Data.Data.Count); var dbo = get.Data.Data[0]; Assert.Equal(42, dbo.SomeInt); Assert.Equal("42", dbo.SomeText); dbo = get.Data.Data[1]; Assert.Equal(42, dbo.SomeInt); Assert.Equal("442", dbo.SomeText); }); } [Fact] public void TestGetMultiple2() { Tests.TestRealDb(context => { var dbos = new List { new PkGuidAddDbo { SomeInt = 42, SomeText = "442" }, new PkGuidAddDbo { SomeInt = 42, SomeText = "42" }, new PkGuidAddDbo { SomeInt = 142, SomeText = "24" } }; var service = new LuUtilsPkGuidDataAccess(context); var res = service.AddId(dbos); Assert.Equal(LuStatus.Success, res.Status); var get = service.GetMultiple(guid => guid.some_int, guid => guid.some_int == 42, 0, int.MaxValue, guid => guid.some_text); Assert.Equal(LuStatus.Success, get.Status); Assert.Equal(2, get.Data.Count); Assert.Equal(2, get.Data.Data.Count); var dbo = get.Data.Data[0]; Assert.Equal(42, dbo.SomeInt); Assert.Equal("42", dbo.SomeText); dbo = get.Data.Data[1]; Assert.Equal(42, dbo.SomeInt); Assert.Equal("442", dbo.SomeText); }); } [Fact] public void TestGetMultiple3() { Tests.TestRealDb(context => { var dbos = new List { new PkGuidAddDbo { SomeInt = 42, SomeText = "442" }, new PkGuidAddDbo { SomeInt = 42, SomeText = "42" }, new PkGuidAddDbo { SomeInt = 142, SomeText = "24" } }; var service = new LuUtilsPkGuidDataAccess(context); var res = service.AddId(dbos); Assert.Equal(LuStatus.Success, res.Status); var get = service.GetMultiple(table => table.OrderBy(guid => guid.some_int), 0, int.MaxValue, set => set.ThenBy(guid => guid.some_text)); Assert.Equal(LuStatus.Success, get.Status); Assert.Equal(3, get.Data.Count); Assert.Equal(3, get.Data.Data.Count); var dbo = get.Data.Data[0]; Assert.Equal(42, dbo.SomeInt); Assert.Equal("42", dbo.SomeText); dbo = get.Data.Data[1]; Assert.Equal(42, dbo.SomeInt); Assert.Equal("442", dbo.SomeText); dbo = get.Data.Data[2]; Assert.Equal(142, dbo.SomeInt); Assert.Equal("24", dbo.SomeText); }); } [Fact] public void TestGetMultiple4() { Tests.TestRealDb(context => { var dbos = new List { new PkGuidAddDbo { SomeInt = 42, SomeText = "442" }, new PkGuidAddDbo { SomeInt = 42, SomeText = "42" }, new PkGuidAddDbo { SomeInt = 142, SomeText = "24" } }; var service = new LuUtilsPkGuidDataAccess(context); var res = service.AddId(dbos); Assert.Equal(LuStatus.Success, res.Status); var get = service.GetMultiple(guid => guid.some_int, 0, int.MaxValue, guid => guid.some_text); Assert.Equal(LuStatus.Success, get.Status); Assert.Equal(3, get.Data.Count); Assert.Equal(3, get.Data.Data.Count); var dbo = get.Data.Data[0]; Assert.Equal(42, dbo.SomeInt); Assert.Equal("42", dbo.SomeText); dbo = get.Data.Data[1]; Assert.Equal(42, dbo.SomeInt); Assert.Equal("442", dbo.SomeText); dbo = get.Data.Data[2]; Assert.Equal(142, dbo.SomeInt); Assert.Equal("24", dbo.SomeText); }); } [Fact] public void TestGetMultiple5() { Tests.TestRealDb(context => { var dbos = new List { new PkGuidAddDbo { SomeInt = 42, SomeText = "442" }, new PkGuidAddDbo { SomeInt = 42, SomeText = "42" }, new PkGuidAddDbo { SomeInt = 142, SomeText = "24" } }; var service = new LuUtilsPkGuidDataAccess(context); var res = service.AddId(dbos); Assert.Equal(LuStatus.Success, res.Status); var orderBy = LuOrderByBinder.FromString("someInt,someText"); Assert.Equal(LuStatus.Success, orderBy.Status); var get = service.GetMultiple(orderBy.Data); Assert.Equal(LuStatus.Success, get.Status); Assert.Equal(3, get.Data.Count); Assert.Equal(3, get.Data.Data.Count); var dbo = get.Data.Data[0]; Assert.Equal(42, dbo.SomeInt); Assert.Equal("42", dbo.SomeText); dbo = get.Data.Data[1]; Assert.Equal(42, dbo.SomeInt); Assert.Equal("442", dbo.SomeText); dbo = get.Data.Data[2]; Assert.Equal(142, dbo.SomeInt); Assert.Equal("24", dbo.SomeText); }); } [Fact] public void TestGetMultiple6() { Tests.TestRealDb(context => { var dbos = new List { new PkGuidAddDbo { SomeInt = 42, SomeText = "442" }, new PkGuidAddDbo { SomeInt = 42, SomeText = "42" }, new PkGuidAddDbo { SomeInt = 142, SomeText = "24" } }; var service = new LuUtilsPkGuidDataAccess(context); var res = service.AddId(dbos); Assert.Equal(LuStatus.Success, res.Status); var orderBy = LuOrderByBinder.FromString("someText:desc,someInt"); Assert.Equal(LuStatus.Success, orderBy.Status); var get = service.GetMultiple(orderBy.Data); Assert.Equal(LuStatus.Success, get.Status); Assert.Equal(3, get.Data.Count); Assert.Equal(3, get.Data.Data.Count); var dbo = get.Data.Data[0]; Assert.Equal(42, dbo.SomeInt); Assert.Equal("442", dbo.SomeText); dbo = get.Data.Data[1]; Assert.Equal(42, dbo.SomeInt); Assert.Equal("42", dbo.SomeText); dbo = get.Data.Data[2]; Assert.Equal(142, dbo.SomeInt); Assert.Equal("24", dbo.SomeText); }); } } }