diff --git a/FruitBank.Common/Dtos/CustomerDto.cs b/FruitBank.Common/Dtos/CustomerDto.cs new file mode 100644 index 0000000..544c17e --- /dev/null +++ b/FruitBank.Common/Dtos/CustomerDto.cs @@ -0,0 +1,6 @@ +namespace FruitBank.Common.Dtos; + +public class CustomerDto +{ + +} \ No newline at end of file diff --git a/FruitBank.Common/Dtos/ProductDto.cs b/FruitBank.Common/Dtos/ProductDto.cs new file mode 100644 index 0000000..42f7657 --- /dev/null +++ b/FruitBank.Common/Dtos/ProductDto.cs @@ -0,0 +1,6 @@ +namespace FruitBank.Common.Dtos; + +public class ProductDto +{ + +} \ No newline at end of file diff --git a/FruitBank.Common/Entities/Shipping.cs b/FruitBank.Common/Entities/Shipping.cs index 6ab098c..5af0c6c 100644 --- a/FruitBank.Common/Entities/Shipping.cs +++ b/FruitBank.Common/Entities/Shipping.cs @@ -13,6 +13,10 @@ public class Shipping : MgEntityBase, IShipping public DateTime ShippingDate { get; set; } public string LicencePlate { get; set; } + //[Association(ThisKey = nameof(ShippingDocumentId), OtherKey = nameof(ShippingItem.sh))] + //public IEnumerable Shippings { get; set; } + + [SkipValuesOnUpdate] public DateTime Created { get; set; } public DateTime Modified { get; set; } diff --git a/FruitBank.Common/Entities/ShippingItem.cs b/FruitBank.Common/Entities/ShippingItem.cs index 272fc39..8fcf5d5 100644 --- a/FruitBank.Common/Entities/ShippingItem.cs +++ b/FruitBank.Common/Entities/ShippingItem.cs @@ -2,6 +2,8 @@ using FruitBank.Common.Interfaces; using LinqToDB.Mapping; using Mango.Nop.Core.Entities; +using Nop.Core.Domain.Customers; +using Nop.Core.Domain.Orders; namespace FruitBank.Common.Entities; @@ -10,6 +12,10 @@ namespace FruitBank.Common.Entities; public class ShippingItem : MgEntityBase, IShippingItem { public int Id { get; set; } + + //[Association(ThisKey = nameof(ShippingDocumentId), OtherKey = nameof(Shipping.Id))] + //public IEnumerable Shippings { get; set; } + public int ShippingDocumentId { get; set; } public string Name { get; set; } public double NetWeight { get; set; } diff --git a/FruitBank.Common/Interfaces/IFruitBankDataControllerCommon.cs b/FruitBank.Common/Interfaces/IFruitBankDataControllerCommon.cs index 86ed980..36a8f6a 100644 --- a/FruitBank.Common/Interfaces/IFruitBankDataControllerCommon.cs +++ b/FruitBank.Common/Interfaces/IFruitBankDataControllerCommon.cs @@ -7,16 +7,25 @@ public interface IFruitBankDataControllerCommon { public Task?> GetMeasuringModels(); public Task GetMeasuringModelByShippingId(int shippingId); - + + #region Partner public Task?> GetPartners(); public Task GetPartnerById(int id); + public Task UpdatePartner(Partner partner); + #endregion Partner + #region Shipping public Task?> GetShippings(); public Task GetShippingById(int id); + #endregion Shipping - public Task?> GetShippingItem(); + #region ShippingItem + public Task?> GetShippingItems(); public Task GetShippingItemById(int id); + #endregion ShippingItem + #region ShippingDocument public Task?> GetShippingDocuments(); public Task GetShippingDocumentById(int id); + #endregion ShippingDocument } \ No newline at end of file diff --git a/FruitBank.Common/SignalRs/SignalRTags.cs b/FruitBank.Common/SignalRs/SignalRTags.cs index 47c9e46..2c7e5b3 100644 --- a/FruitBank.Common/SignalRs/SignalRTags.cs +++ b/FruitBank.Common/SignalRs/SignalRTags.cs @@ -11,6 +11,7 @@ public class SignalRTags : AcSignalRTags public const int GetPartners = 20; public const int GetPartnerById = 21; + public const int UpdatePartner = 25; public const int GetShippings = 40; public const int GetShippingById = 41; diff --git a/FruitBankHybrid.Shared.Tests/FruitBankClientTests.cs b/FruitBankHybrid.Shared.Tests/FruitBankClientTests.cs new file mode 100644 index 0000000..60d9980 --- /dev/null +++ b/FruitBankHybrid.Shared.Tests/FruitBankClientTests.cs @@ -0,0 +1,128 @@ +using AyCode.Core.Consts; +using AyCode.Core.Enums; +using AyCode.Core.Loggers; +using FruitBank.Common.Entities; +using FruitBank.Common.Loggers; +using FruitBankHybrid.Shared.Services.SignalRs; + +namespace FruitBankHybrid.Shared.Tests +{ + [TestClass] + public sealed class FruitBankClientTests + { + private FruitBankSignalRClient _signalRClient = null!; + + [TestInitialize] + public void TestInit() + { + _signalRClient = new FruitBankSignalRClient(new List + { + //new ConsoleLogWriter(AppType.TestUnit, LogLevel.Detail, nameof(FruitBankClientTests)), + new SignaRClientLogItemWriter(AppType.TestUnit, LogLevel.Detail, nameof(FruitBankClientTests)) + }); + } + + #region Partner + [TestMethod] + public async Task GetPartnersTest() + { + var partners = await _signalRClient.GetPartners(); + + Assert.IsNotNull(partners); + Assert.IsTrue(partners.Any()); + } + + //[DataTestMethod] + //[DataRow(1)] + public async Task GetPartnerByIdTest(int partnerId) + { + var partner = await _signalRClient.GetPartnerById(partnerId); + + Assert.IsNotNull(partner); + Assert.IsTrue(partner.Id == partnerId); + + return partner; + } + + [DataTestMethod] + [DataRow(2)] + public async Task UpdatePartnerTest(int partnerId) + { + var partner = await GetPartnerByIdTest(partnerId); + + const string fixture = "_test.temp"; + var newName = $"{partner.Name.Replace(fixture, string.Empty)}{fixture}"; + + partner.Name = newName; + await _signalRClient.UpdatePartner(partner); + + partner = await GetPartnerByIdTest(partnerId); + Assert.IsTrue(partner.Name == newName); + + partner.Name = partner.Name.Replace(fixture, string.Empty); + await _signalRClient.UpdatePartner(partner); + } + + #endregion Partner + + #region Shipping + [TestMethod] + public async Task GetShippingsTest() + { + var shippings = await _signalRClient.GetShippings(); + + Assert.IsNotNull(shippings); + Assert.IsTrue(shippings.Any()); + } + + [TestMethod] + public async Task GetShippingByIdTest() + { + var shipping = await _signalRClient.GetShippingById(1); + + Assert.IsNotNull(shipping); + Assert.IsTrue(shipping.Id == 1); + } + #endregion Shipping + + #region ShippingItem + [TestMethod] + public async Task GetShippingItemsTest() + { + var shippingItems = await _signalRClient.GetShippingItems(); + + Assert.IsNotNull(shippingItems); + Assert.IsTrue(shippingItems.Any()); + } + + [TestMethod] + public async Task GetShippingItemByIdTest() + { + var shippingItem = await _signalRClient.GetShippingItemById(1); + + Assert.IsNotNull(shippingItem); + Assert.IsTrue(shippingItem.Id == 1); + } + #endregion ShippingItem + + #region ShippingDocument + [TestMethod] + public async Task GetShippingDocumentsTest() + { + var shippingDocuments = await _signalRClient.GetShippingDocuments(); + + Assert.IsNotNull(shippingDocuments); + Assert.IsTrue(shippingDocuments.Any()); + } + + [TestMethod] + public async Task GetShippingDocumentByIdTest() + { + var shippingDocument = await _signalRClient.GetShippingDocumentById(1); + + Assert.IsNotNull(shippingDocument); + Assert.IsTrue(shippingDocument.Id == 1); + } + #endregion ShippingDocument + } +} diff --git a/FruitBankHybrid.Shared.Tests/FruitBankHybrid.Shared.Tests.csproj b/FruitBankHybrid.Shared.Tests/FruitBankHybrid.Shared.Tests.csproj new file mode 100644 index 0000000..0156b38 --- /dev/null +++ b/FruitBankHybrid.Shared.Tests/FruitBankHybrid.Shared.Tests.csproj @@ -0,0 +1,33 @@ + + + + net9.0 + latest + enable + enable + + true + + + + + + + + + + + ..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\FruitBank\Debug\net9.0\AyCode.Core.dll + + + ..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\FruitBank\Debug\net9.0\AyCode.Entities.dll + + + ..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\FruitBank\Debug\net9.0\AyCode.Services.dll + + + + diff --git a/FruitBankHybrid.Shared.Tests/MSTestSettings.cs b/FruitBankHybrid.Shared.Tests/MSTestSettings.cs new file mode 100644 index 0000000..aaf278c --- /dev/null +++ b/FruitBankHybrid.Shared.Tests/MSTestSettings.cs @@ -0,0 +1 @@ +[assembly: Parallelize(Scope = ExecutionScope.MethodLevel)] diff --git a/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs b/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs index f5237de..2d7d783 100644 --- a/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs +++ b/FruitBankHybrid.Shared/Services/SignalRs/FruitBankSignalRClient.cs @@ -34,25 +34,37 @@ namespace FruitBankHybrid.Shared.Services.SignalRs public Task?> GetPartners() => GetAllAsync>(SignalRTags.GetPartners); + #region Partner public Task GetPartnerById(int id) => GetByIdAsync(SignalRTags.GetPartnerById, id); + public Task UpdatePartner(Partner partner) + =>PostDataAsync(SignalRTags.UpdatePartner, partner); + + #endregion Partner + + #region Shipping public Task?> GetShippings() => GetAllAsync>(SignalRTags.GetShippings); public Task GetShippingById(int id) => GetByIdAsync(SignalRTags.GetShippingById, id); + #endregion Shipping - public Task?> GetShippingItem() + #region ShippingItem + public Task?> GetShippingItems() => GetAllAsync>(SignalRTags.GetShippingItems); public Task GetShippingItemById(int id) => GetByIdAsync(SignalRTags.GetShippingItemById, id); + #endregion ShippingItem + #region ShippingDocument public Task?> GetShippingDocuments() => GetAllAsync>(SignalRTags.GetShippingDocuments); public Task GetShippingDocumentById(int id) => GetByIdAsync(SignalRTags.GetShippingDocumentById, id); + #endregion ShippingDocument } } diff --git a/FruitBankHybrid.Web/FruitBankHybrid.Web.csproj b/FruitBankHybrid.Web/FruitBankHybrid.Web.csproj index e116465..580d13e 100644 --- a/FruitBankHybrid.Web/FruitBankHybrid.Web.csproj +++ b/FruitBankHybrid.Web/FruitBankHybrid.Web.csproj @@ -10,6 +10,7 @@ + diff --git a/FruitBankHybrid.sln b/FruitBankHybrid.sln index 63ecd24..7b46b41 100644 --- a/FruitBankHybrid.sln +++ b/FruitBankHybrid.sln @@ -16,6 +16,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FruitBank.Common", "FruitBa EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FruitBank.Common.Server", "FruitBank.Common.Server\FruitBank.Common.Server.csproj", "{AD3AB968-A79F-485C-8B3E-B6917A5E4C71}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FruitBankHybrid.Shared.Tests", "FruitBankHybrid.Shared.Tests\FruitBankHybrid.Shared.Tests.csproj", "{BE107917-831F-45E6-87F3-96D1DF418309}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -51,6 +53,10 @@ Global {AD3AB968-A79F-485C-8B3E-B6917A5E4C71}.Debug|Any CPU.Build.0 = Debug|Any CPU {AD3AB968-A79F-485C-8B3E-B6917A5E4C71}.Release|Any CPU.ActiveCfg = Release|Any CPU {AD3AB968-A79F-485C-8B3E-B6917A5E4C71}.Release|Any CPU.Build.0 = Release|Any CPU + {BE107917-831F-45E6-87F3-96D1DF418309}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BE107917-831F-45E6-87F3-96D1DF418309}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BE107917-831F-45E6-87F3-96D1DF418309}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BE107917-831F-45E6-87F3-96D1DF418309}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE