Skip to content

Commit

Permalink
Add test, improve WorkbookManager interface
Browse files Browse the repository at this point in the history
  • Loading branch information
roman-yagodin committed Apr 2, 2021
1 parent caee1b1 commit aa92055
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 16 deletions.
4 changes: 2 additions & 2 deletions R7.University.Core.Tests/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,15 @@ static void WorkbookToCsv ()
{
Console.WriteLine ("--- Start test output");
var workbookManager = new WorkbookManager ();
Console.Write (workbookManager.SerializeWorkbook ("./assets/templates/workbook-1.xls", WorkbookSerializationFormat.CSV));
Console.Write (workbookManager.SerializeWorkbook ("./assets/templates/workbook-1.xls", workbookManager.GetWorkbookSerializer (WorkbookSerializationFormat.CSV)));
Console.WriteLine ("--- End test output");
}

static void WorkbookToLinearCsv ()
{
Console.WriteLine ("--- Start test output");
var workbookManager = new WorkbookManager ();
Console.Write (workbookManager.SerializeWorkbook ("./assets/templates/workbook-1.xls", WorkbookSerializationFormat.LinearCSV));
Console.Write (workbookManager.SerializeWorkbook ("./assets/templates/workbook-1.xls", workbookManager.GetWorkbookSerializer (WorkbookSerializationFormat.LinearCSV)));
Console.WriteLine ("--- End test output");
}
}
Expand Down
11 changes: 11 additions & 0 deletions R7.University.Core.Tests/Templates/WorkbookManagerTests.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using R7.University.Templates;
using Xunit;

Expand All @@ -14,5 +15,15 @@ public void ReadWorkbookInfoTest ()
Assert.Equal ("Sample Entity", bookInfo.EntityType);
Assert.Equal (123, bookInfo.EntityId);
}

[Fact]
public void GetWorkbookSerializerTest ()
{
var wbm = new WorkbookManager ();

Assert.Equal (nameof (WorkbookToCsvSerializer), wbm.GetWorkbookSerializer (WorkbookSerializationFormat.CSV).GetType ().Name);
Assert.Equal (nameof (WorkbookToLinearCsvSerializer), wbm.GetWorkbookSerializer (WorkbookSerializationFormat.LinearCSV).GetType ().Name);
Assert.Throws<ArgumentException> (() => wbm.GetWorkbookSerializer ("NoExistentSerializer"));
}
}
}
19 changes: 9 additions & 10 deletions R7.University.Core/Templates/WorkbookManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,11 @@ namespace R7.University.Templates
{
public class WorkbookManager
{
public string SerializeWorkbook (string filePath, string format)
{
return SerializeWorkbook (filePath,
(WorkbookSerializationFormat) Enum.Parse (typeof (WorkbookSerializationFormat), format));
}

public string SerializeWorkbook (string filePath, WorkbookSerializationFormat format)
public string SerializeWorkbook (string filePath, IWorkbookSerializer serializer)
{
var workbookProvider = new HSSFWorkbookProvider ();
var workbookSerializer = GetWorkbookSerializer (format);
using (var fileStream = new FileStream (filePath, FileMode.Open, FileAccess.Read)) {
return workbookSerializer.Serialize (workbookProvider.CreateWorkbook (fileStream), new StringBuilder ())
return serializer.Serialize (workbookProvider.CreateWorkbook (fileStream), new StringBuilder ())
.ToString ();
}
}
Expand All @@ -37,7 +30,13 @@ public IWorkbookSerializer GetWorkbookSerializer (WorkbookSerializationFormat fo
return new WorkbookToCsvSerializer ();
}

throw new ArgumentException ("Unsupported serialization format!", nameof (format));
return null;
}

public IWorkbookSerializer GetWorkbookSerializer (string format)
{
var enumFormat = (WorkbookSerializationFormat) Enum.Parse (typeof (WorkbookSerializationFormat), format);
return GetWorkbookSerializer (enumFormat);
}

public WorkbookInfo ReadWorkbookInfo (string filePath)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,7 @@ public HttpResponseMessage ConvertOriginal (string fileName, string guid, string
string FindAndConvertOriginal (string filePath, string format)
{
var workbookManager = new WorkbookManager ();
var serializer =
workbookManager.GetWorkbookSerializer (
(WorkbookSerializationFormat) Enum.Parse (typeof (WorkbookSerializationFormat), format));
var serializer = workbookManager.GetWorkbookSerializer (format);

var bookInfo = workbookManager.ReadWorkbookInfo (filePath);
if (bookInfo.EntityId != null && !string.IsNullOrEmpty (bookInfo.EntityType)) {
Expand All @@ -144,7 +142,7 @@ string FindAndConvertOriginal (string filePath, string format)
string GetWorkbookText (string tempFilePath, string format)
{
var workbookManager = new WorkbookManager ();
return workbookManager.SerializeWorkbook (tempFilePath, format);
return workbookManager.SerializeWorkbook (tempFilePath, workbookManager.GetWorkbookSerializer (format));
}

string GetEmployeeCsvText (IEmployee employee, IWorkbookSerializer serializer)
Expand Down

0 comments on commit aa92055

Please sign in to comment.