feat: initial commit
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AutoMapper;
|
||||
using NUnit.Framework;
|
||||
using Strata.Analytics.Biz.DbContexts;
|
||||
using Strata.Analytics.Biz.Extracts.Models;
|
||||
using Strata.Analytics.Biz.Extracts.Services;
|
||||
using Strata.Analytics.Test.Unit.Biz.TestData;
|
||||
using Strata.CoreLib.Claims;
|
||||
using Strata.CoreLib.Claims.Extensions;
|
||||
using Strata.Testing.Categories;
|
||||
|
||||
namespace Strata.Analytics.Test.Unit.Biz.Extracts
|
||||
{
|
||||
[Category(TestCategory.Unit)]
|
||||
[Parallelizable(ParallelScope.Self)]
|
||||
public class ExtractCrudTests
|
||||
{
|
||||
private IClaimsPrincipalAccessor _claimsPrincipalAccessor;
|
||||
private AnalyticsDbContext _dbContext;
|
||||
private IMapper _mapper;
|
||||
private IExtractService _extractService;
|
||||
|
||||
[OneTimeSetUp]
|
||||
public void OneTimeSetup()
|
||||
{
|
||||
_claimsPrincipalAccessor = IClaimsPrincipalAccessorMock.GetClaimsPrincipalAccessor(5, true);
|
||||
_dbContext = AnalyticsDbContextMock.GetAnalyticsDbContext(_claimsPrincipalAccessor);
|
||||
_mapper = AutoMapperMock.GetAutoMapper();
|
||||
_extractService = new ExtractService(_dbContext, _claimsPrincipalAccessor, _mapper);
|
||||
_dbContext.Extracts.AddRange(ExtractTestData.Extracts());
|
||||
_dbContext.ExtractExportHistory.AddRange(ExtractTestData.ExtractExportHistories());
|
||||
_dbContext.SaveChanges();
|
||||
}
|
||||
|
||||
[OneTimeTearDown]
|
||||
public async Task OneTimeTearDown()
|
||||
{
|
||||
await _dbContext.Database.EnsureDeletedAsync();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task CanCreate()
|
||||
{
|
||||
var now = DateTime.UtcNow;
|
||||
// arrange
|
||||
var saveInfo = new ExtractCreateInfo()
|
||||
{
|
||||
Name = "My First Unit Test Extract!",
|
||||
Description = "Be Happy For Me!!!",
|
||||
ExtractType = ExtractType.DataSource,
|
||||
Content = "{\"dataSourceId\":1,\"rows\":[],\"columnGroups\":[{\"groupId\":\"ABCD1\",\"values\":[],\"dimensions\":[],\"sortOrder\":0}],\"filters\":[],\"queryConfig\":{\"rows\":[],\"values\":[],\"filterGroups\":[],\"withTotals\":false,\"rowLimit\":25}}"
|
||||
};
|
||||
|
||||
// act
|
||||
var result = await _extractService.CreateAsync(saveInfo, CancellationToken.None);
|
||||
|
||||
// assert
|
||||
Assert.IsNotNull(result);
|
||||
Assert.That(result.ExtractId, Is.GreaterThan(ExtractTestData.Extracts().Max(h => h.ExtractId)));
|
||||
Assert.That(result.ExtractType, Is.EqualTo(ExtractType.DataSource));
|
||||
Assert.That(result.Content, Is.EqualTo(saveInfo.Content));
|
||||
Assert.That(result.CreatedByUserGuid, Is.EqualTo(_claimsPrincipalAccessor.GetCurrentClaimsPrincipal().GetUserGuid()));
|
||||
Assert.That(result.UpdatedByUserGuid, Is.EqualTo(_claimsPrincipalAccessor.GetCurrentClaimsPrincipal().GetUserGuid()));
|
||||
Assert.IsNotNull(result.CreatedDate);
|
||||
Assert.IsNotNull(result.UpdatedDate);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task CanGetById()
|
||||
{
|
||||
// act
|
||||
var result = await _extractService.GetByIdAsync(1, CancellationToken.None);
|
||||
|
||||
// assert
|
||||
Assert.IsNotNull(result);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task CanUpdate()
|
||||
{
|
||||
// arrange
|
||||
var extractId = _dbContext.Extracts.First().ExtractId;
|
||||
|
||||
var extract = await _extractService.GetByIdAsync(extractId, CancellationToken.None);
|
||||
|
||||
var saveInfo = new ExtractSaveInfo();
|
||||
_mapper.Map(extract, saveInfo);
|
||||
|
||||
saveInfo.Name = "My First RENAMED Extract!";
|
||||
saveInfo.Description = "Fear Me!!!";
|
||||
saveInfo.RawSql = "My New and IMPROVED Query...";
|
||||
_dbContext.ChangeTracker.Clear();
|
||||
|
||||
// act
|
||||
var result = await _extractService.UpdateAsync(extract.ExtractId, saveInfo, CancellationToken.None);
|
||||
|
||||
// assert
|
||||
Assert.IsNotNull(result);
|
||||
Assert.That(result.ExtractId, Is.EqualTo(extract.ExtractId));
|
||||
Assert.That(result.Name, Is.EqualTo(saveInfo.Name));
|
||||
Assert.That(result.Description, Is.EqualTo(saveInfo.Description));
|
||||
Assert.That(result.RawSql, Is.EqualTo(saveInfo.RawSql));
|
||||
Assert.That(result.CreatedByUserGuid, Is.EqualTo(extract.CreatedByUserGuid));
|
||||
Assert.That(result.UpdatedByUserGuid, Is.EqualTo(_claimsPrincipalAccessor.GetCurrentClaimsPrincipal().GetUserGuid()));
|
||||
Assert.That(result.CreatedDate, Is.EqualTo(extract.CreatedDate));
|
||||
Assert.That(result.UpdatedDate, Is.EqualTo(DateTimeOffset.UtcNow).Within(500).Milliseconds); // this could fail in debug
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task CanDelete_LeaveOrphanHistory()
|
||||
{
|
||||
// arrange
|
||||
var extractId = _dbContext.Extracts.Last().ExtractId;
|
||||
_dbContext.ChangeTracker.Clear();
|
||||
|
||||
// act
|
||||
await _extractService.DeleteAsync(extractId, CancellationToken.None);
|
||||
|
||||
var result = await _extractService.GetByIdAsync(extractId, CancellationToken.None);
|
||||
var histories = new ExtractExportHistoryService(_dbContext, _claimsPrincipalAccessor, _mapper).GetByExtractIdAsync(extractId, CancellationToken.None);
|
||||
|
||||
|
||||
// assert
|
||||
Assert.IsNull(result);
|
||||
Assert.IsNotNull(histories);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user