Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tests: Write Unit Tests for Project #1

Merged
merged 25 commits into from
Mar 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
73f6d1e
tests: add moq and fluent assertions. stub out onspring service tests…
Mar 21, 2023
cbcc2b5
tests: add unit tests
Mar 21, 2023
8b0d718
fix: move host config into extension method
Mar 21, 2023
7060aae
style: change order of extension methods for readability
Mar 21, 2023
7bc0a84
tests: add unit tests
Mar 21, 2023
cf63a72
tests: reach 100% code coverage on OnspringServiceTests
Mar 22, 2023
4b25989
tests: add tests for report service
Mar 22, 2023
f341903
tests: add unit tests for models
Mar 22, 2023
3e0b9e1
tests: add tests for attachment transfer settings factory
Mar 22, 2023
41bb823
tests: add more unit tests
Mar 22, 2023
d096f59
chore: update test coverage script
StevanFreeborn Mar 22, 2023
3541d34
tests: add unit test for transfer command
StevanFreeborn Mar 22, 2023
8b02b3b
fix: add progress bar to transfer command
StevanFreeborn Mar 22, 2023
1e0c39f
fix: added progress bar to bulk delete and bulk download commands
StevanFreeborn Mar 22, 2023
fe4b942
fix: update logger configuration
StevanFreeborn Mar 22, 2023
8f5fc8c
chore: stub out bulk command tests
StevanFreeborn Mar 22, 2023
96eacec
tests: more tests
Mar 23, 2023
50959f8
tests: add report command tests
Mar 23, 2023
6037def
fix: make method private
Mar 23, 2023
a57475a
tests: more unit tests
StevanFreeborn Mar 23, 2023
55b8141
tests: started working on attachment processor tests
StevanFreeborn Mar 23, 2023
d863617
tests: more tests
StevanFreeborn Mar 23, 2023
286607c
tests: update test coverage script
StevanFreeborn Mar 23, 2023
fe1089d
tests: finish writing tests
Mar 24, 2023
193946e
chore: run dotnet format
Mar 24, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ csharp_indent_labels = one_less_than_current
csharp_indent_switch_labels = true

# Space preferences
csharp_space_after_cast = false
csharp_space_after_cast = true
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
Expand Down
16 changes: 3 additions & 13 deletions src/OnspringCLI/Commands/Attachments/Delete/BulkCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -114,19 +114,9 @@ public async Task<int> InvokeAsync(InvocationContext context)

_logger.Information("Deleting files.");

var erroredRequests = new List<OnspringFileRequest>();

foreach (var fileRequest in fileRequests)
{
var isDeleted = await _processor.TryDeleteFile(
fileRequest
);

if (isDeleted is false)
{
erroredRequests.Add(fileRequest);
}
}
var erroredRequests = await _processor.TryDeleteFiles(
fileRequests
);

if (erroredRequests.Any() is true)
{
Expand Down
52 changes: 8 additions & 44 deletions src/OnspringCLI/Commands/Attachments/Download/BulkCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,62 +127,26 @@ public async Task<int> InvokeAsync(InvocationContext context)

_logger.Information("Downloading files.");

var outputDirectory = Path.Combine(
AppDomain.CurrentDomain.BaseDirectory,
var erroredRequests = await _processor.TryDownloadFiles(
fileRequests,
OutputDirectory
);

Directory.CreateDirectory(outputDirectory);

var fileName = Path.Combine(
outputDirectory,
"file-list.csv"
);

using var writer = new StreamWriter(fileName);
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
csv.Context.RegisterClassMap<OnspringFileResultMap>();

csv.WriteHeader<OnspringFileResult>();
csv.NextRecord();

var erroredRequests = new List<OnspringFileRequest>();

foreach (var fileRequest in fileRequests)
{
var file = await _processor.GetFile(
fileRequest,
OutputDirectory
);

if (file is null)
{
erroredRequests.Add(fileRequest);
continue;
}

var isSaved = await _processor.TrySaveFile(file);

if (isSaved is false)
{
erroredRequests.Add(fileRequest);
continue;
}

csv.WriteRecord(file);
csv.NextRecord();
}

if (erroredRequests.Any() is true)
{
_processor.WriteFileRequestErrorReport(
erroredRequests,
OutputDirectory
);

var outputDirectoryPath = Path.Combine(
AppDomain.CurrentDomain.BaseDirectory,
OutputDirectory
);

_logger.Warning(
"Some files were not deleted. You can find a list of the files that were not deleted in the output directory: {OutputDirectory}",
outputDirectory
outputDirectoryPath
);
}

Expand Down
11 changes: 9 additions & 2 deletions src/OnspringCLI/Commands/Attachments/ReportCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ public async Task<int> InvokeAsync(InvocationContext context)
return 0;
}

internal List<int> GetFilesFilterList()
private List<int> GetFilesFilterList()
{
var filesFilterList = new List<int>();

Expand All @@ -148,8 +148,15 @@ internal List<int> GetFilesFilterList()
}

using var reader = new StreamReader(FilesFilterCsv.FullName);
using var csv = new CsvReader(reader, CultureInfo.InvariantCulture);

var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
HasHeaderRecord = false,
};

using var csv = new CsvReader(reader, config);
var files = csv.GetRecords<int>().ToList();

filesFilterList.AddRange(files);

return filesFilterList;
Expand Down
10 changes: 3 additions & 7 deletions src/OnspringCLI/Commands/Attachments/TransferCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,13 +134,9 @@ public async Task<int> InvokeAsync(InvocationContext context)

_logger.Information("Begin transferring attachments.");

await Parallel.ForEachAsync(
sourceRecords,
async (record, token) =>
await _processor.TransferAttachments(
AttachmentTransferSettings,
record
)
await _processor.TransferAttachments(
AttachmentTransferSettings,
sourceRecords
);

_logger.Information("Attachments transferred.");
Expand Down
1 change: 1 addition & 0 deletions src/OnspringCLI/Extensions/ArgumentResultExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
namespace OnspringCLI.Extensions;

[ExcludeFromCodeCoverage]
public static class ArgumentResultExtensions
{
public static List<int> ParseToIntegerList(this ArgumentResult result)
Expand Down
25 changes: 23 additions & 2 deletions src/OnspringCLI/Extensions/CommandLineBuilderExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,29 @@
namespace OnspringCLI.Extensions;

[ExcludeFromCodeCoverage]
public static class CommandLineBuilderExtensions
{
public static CommandLineBuilder AddHelpFigletText(this CommandLineBuilder builder)
public static CommandLineBuilder AddHost(
this CommandLineBuilder builder,
string[] args
)
{
return builder
.UseHost(
_ =>
Host.CreateDefaultBuilder(args),
host =>
host
.AddServices()
.AddSerilog()
.AddCommandHandlers()
);
}

public static CommandLineBuilder AddFiglet(
this CommandLineBuilder builder,
string text
)
{
return builder
.UseHelp(
Expand All @@ -15,7 +36,7 @@ public static CommandLineBuilder AddHelpFigletText(this CommandLineBuilder build
.Prepend(
_ =>
AnsiConsole.Write(
new FigletText("OnspringCLI")
new FigletText(text)
.Color(Color.Orange3)
)
)
Expand Down
25 changes: 17 additions & 8 deletions src/OnspringCLI/Extensions/HostBuilderExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
namespace OnspringCLI.Extensions;

[ExcludeFromCodeCoverage]
static class HostBuilderExtensions
{
public static IHostBuilder AddSerilog(this IHostBuilder hostBuilder)
Expand All @@ -21,17 +22,25 @@ public static IHostBuilder AddSerilog(this IHostBuilder hostBuilder)
new OnspringFileRequestDestructuringPolicy(),
new OnspringSaveFileRequestDestructuringPolicy()
)
.MinimumLevel.Verbose()
.MinimumLevel.Override("Microsoft", LogEventLevel.Fatal)
.Enrich.FromLogContext()
.WriteTo.File(
new CompactJsonFormatter(),
logFilePath,
options.LogLevel
.WriteTo.Logger(
lc =>
lc
.MinimumLevel.Verbose()
.WriteTo.File(
new CompactJsonFormatter(),
logFilePath,
options.LogLevel
)
)
.WriteTo.Console(
restrictedToMinimumLevel: logLevelSwitch.MinimumLevel,
theme: AnsiConsoleTheme.Code
.WriteTo.Logger(
lc =>
lc
.MinimumLevel.ControlledBy(logLevelSwitch)
.WriteTo.Console(
theme: AnsiConsoleTheme.Code
)
);
}
);
Expand Down
3 changes: 2 additions & 1 deletion src/OnspringCLI/Extensions/RootCommandExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
namespace OnspringCLI.Extensions;

[ExcludeFromCodeCoverage]
static class RootCommandExtensions
{
public static CommandLineBuilder Create(this RootCommand root)
public static CommandLineBuilder CreateBuilder(this RootCommand root)
{
return new CommandLineBuilder(root);
}
Expand Down
15 changes: 9 additions & 6 deletions src/OnspringCLI/Interfaces/IAttachmentsProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,13 @@ Task<List<OnspringFileInfoResult>> GetFileInfos(
List<OnspringFileRequest> fileRequests
);

Task<OnspringFileResult?> GetFile(
OnspringFileRequest fileRequest,
Task<List<OnspringFileRequest>> TryDownloadFiles(
List<OnspringFileRequest> fileRequests,
string outputDirectory
);

Task<bool> TrySaveFile(OnspringFileResult file);

Task<bool> TryDeleteFile(
OnspringFileRequest fileRequest
Task<List<OnspringFileRequest>> TryDeleteFiles(
List<OnspringFileRequest> fileRequest
);

Task<List<int>> GetRecordIdsFromReport(int reportId);
Expand All @@ -45,6 +43,11 @@ Task<List<ResultRecord>> GetSourceRecordsToProcess(
);

Task TransferAttachments(
IAttachmentTransferSettings settings,
List<ResultRecord> sourceRecord
);

Task TransferRecordAttachments(
IAttachmentTransferSettings settings,
ResultRecord sourceRecord
);
Expand Down
2 changes: 1 addition & 1 deletion src/OnspringCLI/Interfaces/IProgressBarFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ namespace OnspringCLI.Factories;
public interface IProgressBarFactory
{
IProgressBar Create(int maxTicks, string initialMessage);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
namespace OnspringCLI.Logging;

[ExcludeFromCodeCoverage]
public class OnspringFileRequestDestructuringPolicy : IDestructuringPolicy
{
public bool TryDestructure(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
namespace OnspringCLI.Logging;

[ExcludeFromCodeCoverage]
public class OnspringSaveFileRequestDestructuringPolicy : IDestructuringPolicy
{
public bool TryDestructure(
Expand Down
1 change: 1 addition & 0 deletions src/OnspringCLI/Maps/OnspringFileInfoResultMap.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
namespace OnspringCLI.Maps;

[ExcludeFromCodeCoverage]
public class OnspringFileInfoResultMap : ClassMap<OnspringFileInfoResult>
{
public OnspringFileInfoResultMap()
Expand Down
1 change: 1 addition & 0 deletions src/OnspringCLI/Maps/OnspringFileRequestMap.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
namespace OnspringCLI.Maps;

[ExcludeFromCodeCoverage]
public class OnspringFileRequestMap : ClassMap<OnspringFileRequest>
{
public OnspringFileRequestMap()
Expand Down
1 change: 1 addition & 0 deletions src/OnspringCLI/Maps/OnspringFileResultMap.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
namespace OnspringCLI.Maps;

[ExcludeFromCodeCoverage]
public class OnspringFileResultMap : ClassMap<OnspringFileResult>
{
public OnspringFileResultMap()
Expand Down
4 changes: 4 additions & 0 deletions src/OnspringCLI/Models/OnspringFile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ public class OnspringFile
public int FileId { get; set; }
public string? FileName { get; set; }

public OnspringFile()
{
}

public OnspringFile(
int recordId,
int fieldId,
Expand Down
4 changes: 4 additions & 0 deletions src/OnspringCLI/Models/OnspringFileInfoResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ public class OnspringFileInfoResult : OnspringFile
public decimal FileSizeInGB => Math.Round(FileSizeInBytes / 1000000000, 4);
public decimal FileSizeInGiB => Math.Round(FileSizeInBytes / 1073741824, 4);

public OnspringFileInfoResult()
{
}

public OnspringFileInfoResult(
int recordId,
int fieldId,
Expand Down
2 changes: 2 additions & 0 deletions src/OnspringCLI/Models/OnspringFileRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ public class OnspringFileRequest
public int FileId { get; set; }
public string FieldName { get; set; } = string.Empty;

public OnspringFileRequest() { }

public OnspringFileRequest(
int recordId,
int fieldId,
Expand Down
4 changes: 2 additions & 2 deletions src/OnspringCLI/OnspringCLI.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@

<ItemGroup>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
<_Parameter1>OnspringCLITests</_Parameter1>
<_Parameter1>OnspringCLI.Tests</_Parameter1>
</AssemblyAttribute>
</ItemGroup>

<ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
<None Update="settings\**\*.*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Expand Down
Loading