- Install CsvHelper 33.1.0 and Microsoft.Graph 5.74.0 (main + test projects) - Add 14 core model/enum files (BulkOperationResult, BulkMemberRow, BulkSiteRow, TransferJob, FolderStructureRow, SiteTemplate, SiteTemplateOptions, TemplateLibraryInfo, TemplateFolderInfo, TemplatePermissionGroup, ConflictPolicy, TransferMode, CsvValidationRow) - Add 6 service interfaces (IFileTransferService, IBulkMemberService, IBulkSiteService, ITemplateService, IFolderStructureService, ICsvValidationService) - Add BulkOperationRunner with continue-on-error and cancellation support - Add BulkResultCsvExportService stub (compile-ready) - Add test scaffolds: BulkOperationRunnerTests (5 passing), BulkResultCsvExportServiceTests (2 passing), CsvValidationServiceTests (6 skipped), TemplateRepositoryTests (4 skipped)
46 lines
1.6 KiB
C#
46 lines
1.6 KiB
C#
using SharepointToolbox.Core.Models;
|
|
using SharepointToolbox.Services.Export;
|
|
|
|
namespace SharepointToolbox.Tests.Services;
|
|
|
|
public class BulkResultCsvExportServiceTests
|
|
{
|
|
[Fact]
|
|
public void BuildFailedItemsCsv_WithFailedItems_IncludesErrorColumn()
|
|
{
|
|
var service = new BulkResultCsvExportService();
|
|
var items = new List<BulkItemResult<BulkMemberRow>>
|
|
{
|
|
BulkItemResult<BulkMemberRow>.Failed(
|
|
new BulkMemberRow { Email = "bad@test.com", GroupName = "G1", GroupUrl = "http://test", Role = "Member" },
|
|
"User not found"),
|
|
};
|
|
|
|
var csv = service.BuildFailedItemsCsv(items);
|
|
|
|
Assert.Contains("Error", csv);
|
|
Assert.Contains("Timestamp", csv);
|
|
Assert.Contains("bad@test.com", csv);
|
|
Assert.Contains("User not found", csv);
|
|
}
|
|
|
|
[Fact]
|
|
public void BuildFailedItemsCsv_SuccessItems_Excluded()
|
|
{
|
|
var service = new BulkResultCsvExportService();
|
|
var items = new List<BulkItemResult<BulkMemberRow>>
|
|
{
|
|
BulkItemResult<BulkMemberRow>.Success(
|
|
new BulkMemberRow { Email = "ok@test.com", GroupName = "G1", GroupUrl = "http://test", Role = "Member" }),
|
|
BulkItemResult<BulkMemberRow>.Failed(
|
|
new BulkMemberRow { Email = "bad@test.com", GroupName = "G1", GroupUrl = "http://test", Role = "Member" },
|
|
"Error"),
|
|
};
|
|
|
|
var csv = service.BuildFailedItemsCsv(items);
|
|
|
|
Assert.DoesNotContain("ok@test.com", csv);
|
|
Assert.Contains("bad@test.com", csv);
|
|
}
|
|
}
|