TourIAm/Tiam.Services.Client.Tests/SignalRDataSourceTest.cs

106 lines
4.0 KiB
C#

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 = "108E5A63-AA9E-47BE-ACFA-00306FFC5215";
private readonly SignalRDataSource<Transfer> _signalRDataSource = new(new AdminSignalRClient(new List<IAcLogWriterClientBase> { 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<Transfer>(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<Transfer>(x => x.LuggageCount == 1).ToString();
//var json = criteria.AsQueryable().Expression.ToJson();
//criteria = JsonConvert.DeserializeObject<Expression<Transfer>(json);
var criteria = CriteriaOperator.Parse(criteriaString);
//_signalRDataSource.AsQueryable().Expression.
var filteredData = _signalRDataSource.AsQueryable().AppendWhere(converter, criteria) as IQueryable<Transfer>;
Assert.IsNotNull(filteredData);
var filteredTransfers = _signalRDataSource.AsQueryable().Provider.CreateQuery<Transfer>(filteredData.Expression).ToList();
Assert.IsNotNull(filteredTransfers);
Assert.IsTrue(filteredTransfers.All(x => x.LuggageCount == 1));
}
}
}