using System.Linq.Expressions; using AyCode.Core.Enums; using AyCode.Core.Extensions; using AyCode.Core.Helpers; using AyCode.Core.Loggers; using AyCode.Services.Loggers; using AyCode.Services.SignalRs; using Azure; using DevExpress.DashboardBlazor; using DevExpress.Data.Filtering; using DevExpress.Data.Linq; using DevExpress.Data.Linq.Helpers; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using TIAM.Core.Loggers; using TIAM.Database.DataLayers.Admins; using TIAM.Database.Test; using TIAM.Entities.ServiceProviders; using TIAM.Entities.Transfers; using TIAM.Services; using TIAMSharedUI.Shared; using TIAMWebApp.Shared.Application.Services; using TIAMWebApp.Shared.Application.Utility; namespace Tiam.Services.Client.Tests { [TestClass] public class SignalRDataSourceTest //: TestModelBase { private const string UserIdString = "540271F6-C604-4C16-8160-D5A7CAFEDF00"; private const string CompanyIdString = "3587F169-683C-4EEE-BCB5-E8D57F8C6DCE"; private const string TransferIdString = "E5A4793D-79EE-4B39-B72B-6FC38FEBDDD5"; private readonly SignalRDataSource _signalRDataSource = new(new AdminSignalRClient(new List { new SignaRClientLogItemWriter(AppType.TestUnit, LogLevel.Detail, nameof(SignalRDataSourceTest)) }), SignalRTiamCrudTags.TransferByUserCrudTags, Guid.Parse(UserIdString)); [TestInitialize] public async Task TestInitialize() { var userId = Guid.Parse(UserIdString); await _signalRDataSource.LoadDataSource(); Assert.IsTrue(_signalRDataSource.Count > 0); Assert.IsTrue(_signalRDataSource.All(x => x.UserId == userId)); } [TestCleanup] public void TearDown() { } [DataTestMethod] [DataRow(TransferIdString)] public void GetTransferTest_ReturnTransfer_WhenHasTransfer(string transferIdString) { var transferId = Guid.Parse(transferIdString); _signalRDataSource.TryGetValue(transferId, out var transfer); Assert.IsNotNull(transfer); } [DataTestMethod] [DataRow(TransferIdString)] public async Task UpdateTransferLuggageTest_ReturnTransfer_WhenDbTransferEquals(string transferIdString) { var transferId = Guid.Parse(transferIdString); _signalRDataSource.TryGetValue(transferId, out var transfer); Assert.IsNotNull(transfer); var luggageCount = (byte)(new Random().Next(0, 5)); transfer.LuggageCount = luggageCount; await _signalRDataSource.SaveItem(transferId, TrackingState.Update); Assert.IsTrue(transfer.LuggageCount == luggageCount); var dbTransfer = await _signalRDataSource.SignalRClient.GetByIdAsync(SignalRTags.GetTransfer, transferId); Assert.IsNotNull(dbTransfer); Assert.IsTrue(dbTransfer.LuggageCount == luggageCount); } [DataTestMethod] public void FilterExpressionTest_WhenTransfersFiletered() { var converter = new CriteriaToExpressionConverter(); //CriteriaOperator critOps = CriteriaOperator.Parse(tdashboard.EmployeeFilter); var criteriaString = CriteriaOperator.FromLambda(x => x.LuggageCount == 1).ToString(); //var json = criteria.AsQueryable().Expression.ToJson(); //criteria = JsonConvert.DeserializeObject(json); var criteria = CriteriaOperator.Parse(criteriaString); //_signalRDataSource.AsQueryable().Expression. var filteredData = _signalRDataSource.AsQueryable().AppendWhere(converter, criteria) as IQueryable; Assert.IsNotNull(filteredData); var filteredTransfers = _signalRDataSource.AsQueryable().Provider.CreateQuery(filteredData.Expression).ToList(); Assert.IsNotNull(filteredTransfers); Assert.IsTrue(filteredTransfers.All(x => x.LuggageCount == 1)); } } }