106 lines
4.0 KiB
C#
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));
|
|
}
|
|
}
|
|
} |