Skip to content

Commit 267ea15

Browse files
Merge pull request #612 from TransactionProcessing/task/#475_fileimportlog_aggregate_use_results
file import log aggregate using results
2 parents baa3f10 + 6ebf540 commit 267ea15

File tree

3 files changed

+28
-22
lines changed

3 files changed

+28
-22
lines changed

FileProcessor.BusinessLogic/Services/FileProcessorDomainService.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,10 @@ public async Task<Result<Guid>> UploadFile(FileCommands.UploadFileCommand comman
145145
if (fileImportLogAggregate.IsCreated == false)
146146
{
147147
// First file of the day so create
148-
fileImportLogAggregate.CreateImportLog(command.EstateId, importLogDateTime);
148+
Result result = fileImportLogAggregate.CreateImportLog(command.EstateId, importLogDateTime);
149+
if (result.IsFailed) {
150+
return result;
151+
}
149152
}
150153

151154
// Move the file
@@ -192,7 +195,9 @@ public async Task<Result<Guid>> UploadFile(FileCommands.UploadFileCommand comman
192195
file.MoveTo(fileDestination, overwrite: true);
193196

194197
// Update Import log aggregate
195-
fileImportLogAggregate.AddImportedFile(fileId, command.MerchantId, command.UserId, command.FileProfileId, originalName, fileDestination, command.FileUploadedDateTime);
198+
var stateResult= fileImportLogAggregate.AddImportedFile(fileId, command.MerchantId, command.UserId, command.FileProfileId, originalName, fileDestination, command.FileUploadedDateTime);
199+
if (stateResult.IsFailed)
200+
return stateResult;
196201

197202
return Result.Success(fileId);
198203
}, importLogId, cancellationToken, false);

FileProcessor.FileImportLogAggregate.Tests/FileImportLogAggregateTests.cs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using SimpleResults;
23
using Xunit;
34

45
namespace FileProcessor.FileImportLogAggregate.Tests
@@ -25,7 +26,8 @@ public void FileImportLogAggregate_CanBeCreated_IsCreated()
2526
public void FileImportLogAggregate_CreateImportLog_IsCreated()
2627
{
2728
FileImportLogAggregate fileImportLogAggregate = FileImportLogAggregate.Create(TestData.FileImportLogId);
28-
fileImportLogAggregate.CreateImportLog(TestData.EstateId, TestData.ImportLogDateTime);
29+
Result result = fileImportLogAggregate.CreateImportLog(TestData.EstateId, TestData.ImportLogDateTime);
30+
result.IsSuccess.ShouldBeTrue();
2931

3032
FileImportLog fileImportLog = fileImportLogAggregate.GetFileImportLog();
3133
fileImportLog.ShouldNotBeNull();
@@ -48,10 +50,8 @@ public void FileImportLogAggregate_CreateImportLog_AlreadyCreated_SilentlyHandle
4850
fileImportLog.EstateId.ShouldBe(TestData.EstateId);
4951
fileImportLog.FileImportLogDateTime.ShouldBe(TestData.ImportLogDateTime);
5052

51-
Should.NotThrow(() =>
52-
{
53-
fileImportLogAggregate.CreateImportLog(TestData.EstateId, TestData.ImportLogDateTime);
54-
});
53+
var result = fileImportLogAggregate.CreateImportLog(TestData.EstateId, TestData.ImportLogDateTime);
54+
result.IsSuccess.ShouldBeTrue();
5555
}
5656

5757
[Fact]
@@ -70,14 +70,12 @@ public void FileImportLogAggregate_AddImportedFile_FileAdded()
7070
}
7171

7272
[Fact]
73-
public void FileImportLogAggregate_AddImportedFile_ImportLogNotCreated_ErrorThrown()
74-
{
73+
public void FileImportLogAggregate_AddImportedFile_ImportLogNotCreated_ErrorThrown() {
7574
FileImportLogAggregate fileImportLogAggregate = FileImportLogAggregate.Create(TestData.FileImportLogId);
7675

77-
Should.Throw<InvalidOperationException>(() =>
78-
{
79-
fileImportLogAggregate.AddImportedFile(TestData.FileId, TestData.MerchantId, TestData.UserId, TestData.FileProfileId, TestData.OriginalFileName, TestData.FilePath, TestData.FileUploadedDateTime);
80-
});
76+
var result = fileImportLogAggregate.AddImportedFile(TestData.FileId, TestData.MerchantId, TestData.UserId, TestData.FileProfileId, TestData.OriginalFileName, TestData.FilePath, TestData.FileUploadedDateTime);
77+
result.IsFailed.ShouldBeTrue();
78+
result.Status.ShouldBe(ResultStatus.Invalid);
8179
}
8280

8381
[Fact]
@@ -86,10 +84,9 @@ public void FileImportLogAggregate_AddImportedFile_DuplicateFileId_ErrorThrown()
8684
FileImportLogAggregate fileImportLogAggregate = FileImportLogAggregate.Create(TestData.FileImportLogId);
8785
fileImportLogAggregate.CreateImportLog(TestData.EstateId, TestData.ImportLogDateTime);
8886
fileImportLogAggregate.AddImportedFile(TestData.FileId, TestData.MerchantId, TestData.UserId, TestData.FileProfileId, TestData.OriginalFileName, TestData.FilePath, TestData.FileUploadedDateTime);
89-
Should.Throw<InvalidOperationException>(() =>
90-
{
91-
fileImportLogAggregate.AddImportedFile(TestData.FileId, TestData.MerchantId, TestData.UserId, TestData.FileProfileId, TestData.OriginalFileName, TestData.FilePath, TestData.FileUploadedDateTime);
92-
});
87+
Result result = fileImportLogAggregate.AddImportedFile(TestData.FileId, TestData.MerchantId, TestData.UserId, TestData.FileProfileId, TestData.OriginalFileName, TestData.FilePath, TestData.FileUploadedDateTime);
88+
result.IsFailed.ShouldBeTrue();
89+
result.Status.ShouldBe(ResultStatus.Invalid);
9390
}
9491
}
9592
}

FileProcessor.FileImportLogAggregate/FileImportLogAggregate.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using FileProcessor.Models;
3+
using SimpleResults;
34

45
namespace FileProcessor.FileImportLogAggregate
56
{
@@ -14,33 +15,36 @@ namespace FileProcessor.FileImportLogAggregate
1415
using Shared.General;
1516

1617
public static class FileImportLogAggregateExtensions{
17-
public static void CreateImportLog(this FileImportLogAggregate aggregate, Guid estateId, DateTime importLogDateTime)
18+
public static Result CreateImportLog(this FileImportLogAggregate aggregate, Guid estateId, DateTime importLogDateTime)
1819
{
1920
// Silently handle a duplicate create
2021
if (aggregate.IsCreated)
21-
return;
22+
return Result.Success();
2223

2324
ImportLogCreatedEvent importLogCreatedEvent = new ImportLogCreatedEvent(aggregate.AggregateId, estateId, importLogDateTime);
2425

2526
aggregate.ApplyAndAppend(importLogCreatedEvent);
27+
return Result.Success();
2628
}
2729

28-
public static void AddImportedFile(this FileImportLogAggregate aggregate, Guid fileId, Guid merchantId, Guid userId, Guid fileProfileId, String originalFileName, String filePath, DateTime fileUploadedDateTime)
30+
public static Result AddImportedFile(this FileImportLogAggregate aggregate, Guid fileId, Guid merchantId, Guid userId, Guid fileProfileId, String originalFileName, String filePath, DateTime fileUploadedDateTime)
2931
{
3032
if (aggregate.IsCreated == false)
3133
{
32-
throw new InvalidOperationException("Import log has not been created");
34+
return Result.Invalid("Import log has not been created");
3335
}
3436

3537
if (aggregate.Files.Any(f => f.FileId == fileId))
3638
{
37-
throw new InvalidOperationException($"Duplicate file {originalFileName} detected File Id [{fileId}]");
39+
return Result.Invalid($"Duplicate file {originalFileName} detected File Id [{fileId}]");
3840
}
3941

4042
FileAddedToImportLogEvent fileAddedToImportLogEvent =
4143
new FileAddedToImportLogEvent(aggregate.AggregateId, fileId, aggregate.EstateId, merchantId, userId, fileProfileId, originalFileName, filePath, fileUploadedDateTime);
4244

4345
aggregate.ApplyAndAppend(fileAddedToImportLogEvent);
46+
47+
return Result.Success();
4448
}
4549

4650
public static void PlayEvent(this FileImportLogAggregate aggregate, ImportLogCreatedEvent domainEvent)

0 commit comments

Comments
 (0)