Skip to content

Commit d2bf2b0

Browse files
Merge pull request #39 from TransactionProcessing/task/#37_fileimportlogfiles
Query the File details
2 parents c201755 + e96a85c commit d2bf2b0

28 files changed

Lines changed: 1254 additions & 611 deletions

FIleProcessor.Models/ImportLogFile.cs

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@
44

55
public class ImportLogFile
66
{
7+
#region Properties
8+
9+
/// <summary>
10+
/// Gets or sets the estate identifier.
11+
/// </summary>
12+
/// <value>
13+
/// The estate identifier.
14+
/// </value>
15+
public Guid EstateId { get; set; }
16+
717
/// <summary>
818
/// Gets or sets the file identifier.
919
/// </summary>
@@ -13,20 +23,20 @@ public class ImportLogFile
1323
public Guid FileId { get; set; }
1424

1525
/// <summary>
16-
/// Gets or sets the estate identifier.
26+
/// Gets or sets the file path.
1727
/// </summary>
1828
/// <value>
19-
/// The estate identifier.
29+
/// The file path.
2030
/// </value>
21-
public Guid EstateId { get; set; }
31+
public String FilePath { get; set; }
2232

2333
/// <summary>
24-
/// Gets or sets the user identifier.
34+
/// Gets or sets the file profile identifier.
2535
/// </summary>
2636
/// <value>
27-
/// The user identifier.
37+
/// The file profile identifier.
2838
/// </value>
29-
public Guid UserId { get; set; }
39+
public Guid FileProfileId { get; set; }
3040

3141
/// <summary>
3242
/// Gets or sets the merchant identifier.
@@ -37,27 +47,37 @@ public class ImportLogFile
3747
public Guid MerchantId { get; set; }
3848

3949
/// <summary>
40-
/// Gets or sets the file profile identifier.
50+
/// Gets or sets the name of the original file.
4151
/// </summary>
4252
/// <value>
43-
/// The file profile identifier.
53+
/// The name of the original file.
4454
/// </value>
45-
public Guid FileProfileId { get; set; }
55+
public String OriginalFileName { get; set; }
4656

4757
/// <summary>
48-
/// Gets or sets the name of the original file.
58+
/// Gets or sets the uploaded date time.
4959
/// </summary>
5060
/// <value>
51-
/// The name of the original file.
61+
/// The uploaded date time.
5262
/// </value>
53-
public String OriginalFileName { get; set; }
63+
public DateTime UploadedDateTime { get; set; }
5464

5565
/// <summary>
56-
/// Gets or sets the file path.
66+
/// Gets or sets the user identifier.
5767
/// </summary>
5868
/// <value>
59-
/// The file path.
69+
/// The user identifier.
6070
/// </value>
61-
public String FilePath { get; set; }
71+
public Guid UserId { get; set; }
72+
73+
/// <summary>
74+
/// Gets or sets the number of lines.
75+
/// </summary>
76+
/// <value>
77+
/// The number of lines.
78+
/// </value>
79+
public Int32 NumberOfLines { get; set; }
80+
81+
#endregion
6282
}
6383
}

FileProcessor.BusinessLogic.Tests/FileProcessingManagerTests.cs

Lines changed: 69 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public async Task FileProcessingManager_GetFileImportLogs_NoMerchantId_ImportLog
6767

6868
var importLogs = await manager.GetFileImportLogs(TestData.EstateId, TestData.ImportLogStartDate, TestData.ImportLogEndDate, null, CancellationToken.None);
6969

70-
this.VerifyImportLogs(importLogs);
70+
this.VerifyImportLogs(TestData.FileImportLogs,importLogs);
7171
}
7272

7373
[Fact]
@@ -88,57 +88,87 @@ public async Task FileProcessingManager_GetFileImportLogs_WithMerchantId_ImportL
8888

8989
var importLogs = await manager.GetFileImportLogs(TestData.EstateId, TestData.ImportLogStartDate, TestData.ImportLogEndDate, TestData.MerchantId, CancellationToken.None);
9090

91-
this.VerifyImportLogs(importLogs, TestData.MerchantId);
91+
this.VerifyImportLogs(TestData.FileImportLogs,importLogs, TestData.MerchantId);
9292
}
9393

94-
private void VerifyImportLogs(List<FIleProcessor.Models.FileImportLog> importLogs, Guid? merchantId = null)
94+
[Fact]
95+
public async Task FileProcessingManager_GetFileImportLog_NoMerchantId_ImportLogReturned()
96+
{
97+
var fileProfiles = TestData.FileProfiles;
98+
var context = await this.GetContext(Guid.NewGuid().ToString("N"));
99+
var contextFactory = this.CreateMockContextFactory();
100+
contextFactory.Setup(c => c.GetContext(It.IsAny<Guid>(), It.IsAny<CancellationToken>())).ReturnsAsync(context);
101+
IModelFactory modelFactory = new ModelFactory();
102+
103+
context.FileImportLogs.AddRange(TestData.FileImportLogs);
104+
context.FileImportLogFiles.AddRange(TestData.FileImportLog1Files);
105+
context.FileImportLogFiles.AddRange(TestData.FileImportLog2Files);
106+
context.SaveChanges();
107+
108+
FileProcessorManager manager = new FileProcessorManager(fileProfiles, contextFactory.Object, modelFactory);
109+
110+
var importLog = await manager.GetFileImportLog(TestData.FileImportLogId1, TestData.EstateId, null, CancellationToken.None);
111+
112+
this.VerifyImportLog(TestData.FileImportLogs.First(), importLog);
113+
}
114+
115+
[Fact]
116+
public async Task FileProcessingManager_GetFileImportLog_WithMerchantId_ImportLogReturned()
117+
{
118+
var fileProfiles = TestData.FileProfiles;
119+
var context = await this.GetContext(Guid.NewGuid().ToString("N"));
120+
var contextFactory = this.CreateMockContextFactory();
121+
contextFactory.Setup(c => c.GetContext(It.IsAny<Guid>(), It.IsAny<CancellationToken>())).ReturnsAsync(context);
122+
IModelFactory modelFactory = new ModelFactory();
123+
124+
context.FileImportLogs.AddRange(TestData.FileImportLogs);
125+
context.FileImportLogFiles.AddRange(TestData.FileImportLog1Files);
126+
context.FileImportLogFiles.AddRange(TestData.FileImportLog2Files);
127+
context.SaveChanges();
128+
129+
FileProcessorManager manager = new FileProcessorManager(fileProfiles, contextFactory.Object, modelFactory);
130+
131+
var importLog = await manager.GetFileImportLog(TestData.FileImportLogId1, TestData.EstateId, TestData.MerchantId, CancellationToken.None);
132+
133+
this.VerifyImportLog(TestData.FileImportLogs.First(),importLog, TestData.MerchantId);
134+
}
135+
136+
private void VerifyImportLogs(List<FileImportLog> source, List<FIleProcessor.Models.FileImportLog> importLogs, Guid? merchantId = null)
95137
{
96138
importLogs.ShouldNotBeNull();
97139
importLogs.ShouldNotBeEmpty();
98140
importLogs.Count.ShouldBe(TestData.FileImportLogs.Count);
99-
foreach (FileImportLog fileImportLog in TestData.FileImportLogs)
141+
foreach (FileImportLog fileImportLog in source)
100142
{
101143
var importLog = importLogs.SingleOrDefault(i => i.FileImportLogId == fileImportLog.FileImportLogId);
102-
importLog.ShouldNotBeNull();
103-
importLog.FileImportLogDateTime.ShouldBe(fileImportLog.ImportLogDateTime);
104-
importLog.Files.Count.ShouldBe(importLog.Files.Count);
105-
106-
List<ImportLogFile> filesToVerify = importLog.Files;
107-
if (merchantId.HasValue)
108-
{
109-
filesToVerify = filesToVerify.Where(f => f.MerchantId == merchantId.Value).ToList();
110-
}
111-
112-
foreach (ImportLogFile importLogFile in filesToVerify)
113-
{
114-
var file = importLog.Files.SingleOrDefault(impfile => impfile.FileId == importLogFile.FileId);
115-
file.ShouldNotBeNull();
116-
file.MerchantId.ShouldBe(importLogFile.MerchantId);
117-
file.FilePath.ShouldBe(importLogFile.FilePath);
118-
file.FileProfileId.ShouldBe(importLogFile.FileProfileId);
119-
file.OriginalFileName.ShouldBe(importLogFile.OriginalFileName);
120-
file.UserId.ShouldBe(importLogFile.UserId);
121-
}
144+
VerifyImportLog(fileImportLog, importLog, merchantId);
122145
}
123146
}
124147

125-
//[Fact]
126-
//public async Task FileProcessingManager_GetFileImportLogs_WithMerchantId_ImportLogsReturned()
127-
//{
128-
// var fileProfiles = TestData.FileProfiles;
129-
// var contextFactory = this.CreateMockContextFactory();
130-
// IModelFactory modelFactory = new ModelFactory();
131-
// FileProcessorManager manager = new FileProcessorManager(fileProfiles, contextFactory.Object, modelFactory);
132-
133-
// var importLogs = await manager.GetFileImportLogs(TestData.EstateId, TestData.ImportLogStartDate, TestData.ImportLogEndDate, TestData.MerchantId, CancellationToken.None);
134-
135-
// importLogs.ShouldNotBeNull();
136-
// importLogs.ShouldNotBeEmpty();
137-
// importLogs.Count.ShouldBe(2);
138-
148+
private void VerifyImportLog(FileImportLog source, FIleProcessor.Models.FileImportLog importLog, Guid? merchantId = null)
149+
{
150+
importLog.ShouldNotBeNull();
151+
importLog.FileImportLogDateTime.ShouldBe(source.ImportLogDateTime);
152+
importLog.Files.Count.ShouldBe(importLog.Files.Count);
139153

140-
//}
154+
List<ImportLogFile> filesToVerify = importLog.Files;
155+
if (merchantId.HasValue)
156+
{
157+
filesToVerify = filesToVerify.Where(f => f.MerchantId == merchantId.Value).ToList();
158+
}
141159

160+
foreach (ImportLogFile importLogFile in filesToVerify)
161+
{
162+
var file = importLog.Files.SingleOrDefault(impfile => impfile.FileId == importLogFile.FileId);
163+
file.ShouldNotBeNull();
164+
file.MerchantId.ShouldBe(importLogFile.MerchantId);
165+
file.FilePath.ShouldBe(importLogFile.FilePath);
166+
file.FileProfileId.ShouldBe(importLogFile.FileProfileId);
167+
file.OriginalFileName.ShouldBe(importLogFile.OriginalFileName);
168+
file.UserId.ShouldBe(importLogFile.UserId);
169+
}
170+
}
171+
142172
private Mock<Shared.EntityFramework.IDbContextFactory<EstateReportingContext>> CreateMockContextFactory()
143173
{
144174
return new Mock<Shared.EntityFramework.IDbContextFactory<EstateReportingContext>>();

FileProcessor.BusinessLogic.Tests/ModelFactoryTests.cs

Lines changed: 51 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ namespace FileProcessor.BusinessLogic.Tests
99
using Common;
1010
using EstateReporting.Database.Entities;
1111
using FIleProcessor.Models;
12+
using Microsoft.EntityFrameworkCore;
1213
using Shouldly;
1314
using Testing;
1415
using Xunit;
@@ -17,25 +18,46 @@ namespace FileProcessor.BusinessLogic.Tests
1718
public class ModelFactoryTests
1819
{
1920
[Fact]
20-
public void ModelFactory_ConvertFrom_FileImportLog_IsConverted()
21+
public void ModelFactory_ConvertFrom_FileImportLogs_IsConverted()
2122
{
2223
IModelFactory modelFactory = new ModelFactory();
2324
List<FileImportLogFile> files = new List<FileImportLogFile>();
2425
files.AddRange(TestData.FileImportLog1Files);
2526
files.AddRange(TestData.FileImportLog2Files);
2627
List<FileImportLog> result = modelFactory.ConvertFrom(TestData.FileImportLogs, files);
2728

28-
this.VerifyImportLogs(result);
29+
this.VerifyImportLogs(TestData.FileImportLogs, files, result);
2930
}
3031

3132
[Fact]
32-
public void ModelFactory_ConvertFrom_FileImportLog_NoFiles_IsConverted()
33+
public void ModelFactory_ConvertFrom_FileImportLogs_NoFiles_IsConverted()
3334
{
3435
IModelFactory modelFactory = new ModelFactory();
3536
List<FileImportLogFile> files = new List<FileImportLogFile>();
3637
List<FileImportLog> result = modelFactory.ConvertFrom(TestData.FileImportLogs, files);
3738

38-
this.VerifyImportLogs(result);
39+
this.VerifyImportLogs(TestData.FileImportLogs, files, result);
40+
}
41+
42+
[Fact]
43+
public void ModelFactory_ConvertFrom_FileImportLog_IsConverted()
44+
{
45+
IModelFactory modelFactory = new ModelFactory();
46+
List<FileImportLogFile> files = new List<FileImportLogFile>();
47+
files.AddRange(TestData.FileImportLog1Files);
48+
FileImportLog result = modelFactory.ConvertFrom(TestData.FileImportLogs.First(), files);
49+
50+
this.VerifyImportLog(TestData.FileImportLogs.First(), files, result);
51+
}
52+
53+
[Fact]
54+
public void ModelFactory_ConvertFrom_FileImportLog_NoFiles_IsConverted()
55+
{
56+
IModelFactory modelFactory = new ModelFactory();
57+
List<FileImportLogFile> files = new List<FileImportLogFile>();
58+
FileImportLog result = modelFactory.ConvertFrom(TestData.FileImportLogs.First(), files);
59+
60+
this.VerifyImportLog(TestData.FileImportLogs.First(), files, result);
3961
}
4062

4163
[Fact]
@@ -50,29 +72,38 @@ public void ModelFactory_ConvertFrom_FileImportLog_NoImportLogs_IsConverted()
5072
result.ShouldBeEmpty();
5173
}
5274

53-
private void VerifyImportLogs(List<FIleProcessor.Models.FileImportLog> importLogs)
75+
private void VerifyImportLogs(List<EstateReporting.Database.Entities.FileImportLog> sourceImportLogs, List<FileImportLogFile> sourceImportLogFiles, List<FIleProcessor.Models.FileImportLog> importLogs)
5476
{
5577
importLogs.ShouldNotBeNull();
5678
importLogs.ShouldNotBeEmpty();
5779
importLogs.Count.ShouldBe(TestData.FileImportLogs.Count);
58-
foreach (EstateReporting.Database.Entities.FileImportLog fileImportLog in TestData.FileImportLogs)
80+
foreach (EstateReporting.Database.Entities.FileImportLog fileImportLog in sourceImportLogs)
5981
{
6082
var importLog = importLogs.SingleOrDefault(i => i.FileImportLogId == fileImportLog.FileImportLogId);
61-
importLog.ShouldNotBeNull();
62-
importLog.FileImportLogDateTime.ShouldBe(fileImportLog.ImportLogDateTime);
63-
importLog.Files.Count.ShouldBe(importLog.Files.Count);
64-
65-
foreach (ImportLogFile importLogFile in importLog.Files)
66-
{
67-
var file = importLog.Files.SingleOrDefault(impfile => impfile.FileId == importLogFile.FileId);
68-
file.ShouldNotBeNull();
69-
file.MerchantId.ShouldBe(importLogFile.MerchantId);
70-
file.FilePath.ShouldBe(importLogFile.FilePath);
71-
file.FileProfileId.ShouldBe(importLogFile.FileProfileId);
72-
file.OriginalFileName.ShouldBe(importLogFile.OriginalFileName);
73-
file.UserId.ShouldBe(importLogFile.UserId);
74-
}
83+
var sourceFiles = sourceImportLogFiles.Where(s => s.FileImportLogId == fileImportLog.FileImportLogId).ToList();
84+
VerifyImportLog(fileImportLog, sourceFiles, importLog);
85+
}
86+
}
87+
88+
private void VerifyImportLog(EstateReporting.Database.Entities.FileImportLog sourceImportLog, List<FileImportLogFile> sourceFiles, FIleProcessor.Models.FileImportLog importLog)
89+
{
90+
importLog.ShouldNotBeNull();
91+
importLog.FileImportLogDateTime.ShouldBe(sourceImportLog.ImportLogDateTime);
92+
importLog.Files.Count.ShouldBe(sourceFiles.Count);
93+
94+
foreach (var sourceFile in sourceFiles)
95+
{
96+
var file = importLog.Files.SingleOrDefault(impfile => impfile.FileId == sourceFile.FileId);
97+
file.ShouldNotBeNull();
98+
file.MerchantId.ShouldBe(sourceFile.MerchantId);
99+
file.FilePath.ShouldBe(sourceFile.FilePath);
100+
file.FileProfileId.ShouldBe(sourceFile.FileProfileId);
101+
file.OriginalFileName.ShouldBe(sourceFile.OriginalFileName);
102+
file.UserId.ShouldBe(sourceFile.UserId);
75103
}
104+
76105
}
106+
107+
77108
}
78109
}

FileProcessor.BusinessLogic/Common/IModelFactory.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@ public interface IModelFactory
2020
List<FileImportLogModel> ConvertFrom(List<FileImportLog> importLogs,
2121
List<FileImportLogFile> importLogFilesList);
2222

23+
/// <summary>
24+
/// Converts from.
25+
/// </summary>
26+
/// <param name="importLog">The import log.</param>
27+
/// <param name="importLogFilesList">The import log files list.</param>
28+
/// <returns></returns>
29+
FileImportLogModel ConvertFrom(FileImportLog importLog,
30+
List<FileImportLogFile> importLogFilesList);
31+
2332
#endregion
2433
}
2534
}

0 commit comments

Comments
 (0)