feat(04-05): implement BulkSiteService with PnP Framework site creation
- BulkSiteService creates Team sites via TeamSiteCollectionCreationInformation with owners/members - BulkSiteService creates Communication sites via CommunicationSiteCollectionCreationInformation with generated URL - Per-site error handling via BulkOperationRunner with continue-on-error semantics - SanitizeAlias generates URL-safe aliases from site names for Communication sites - BulkSiteServiceTests: 3 pass (interface check + model defaults + CSV parsing), 3 skip (live SP) - Fixed pre-existing BulkMemberService.cs Group type ambiguity (MSCSC.Group vs Graph.Models.Group)
This commit is contained in:
56
SharepointToolbox.Tests/Services/BulkSiteServiceTests.cs
Normal file
56
SharepointToolbox.Tests/Services/BulkSiteServiceTests.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
using SharepointToolbox.Core.Models;
|
||||
using SharepointToolbox.Services;
|
||||
|
||||
namespace SharepointToolbox.Tests.Services;
|
||||
|
||||
public class BulkSiteServiceTests
|
||||
{
|
||||
[Fact]
|
||||
public void BulkSiteService_Implements_IBulkSiteService()
|
||||
{
|
||||
Assert.True(typeof(IBulkSiteService).IsAssignableFrom(typeof(BulkSiteService)));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BulkSiteRow_DefaultValues()
|
||||
{
|
||||
var row = new BulkSiteRow();
|
||||
Assert.Equal(string.Empty, row.Name);
|
||||
Assert.Equal(string.Empty, row.Alias);
|
||||
Assert.Equal(string.Empty, row.Type);
|
||||
Assert.Equal(string.Empty, row.Template);
|
||||
Assert.Equal(string.Empty, row.Owners);
|
||||
Assert.Equal(string.Empty, row.Members);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BulkSiteRow_ParsesCommaSeparatedEmails()
|
||||
{
|
||||
var row = new BulkSiteRow
|
||||
{
|
||||
Name = "Test Site",
|
||||
Alias = "test-site",
|
||||
Type = "Team",
|
||||
Owners = "admin@test.com, user@test.com",
|
||||
Members = "member1@test.com,member2@test.com"
|
||||
};
|
||||
|
||||
Assert.Equal("Test Site", row.Name);
|
||||
Assert.Contains("admin@test.com", row.Owners);
|
||||
}
|
||||
|
||||
[Fact(Skip = "Requires live SharePoint admin context")]
|
||||
public async Task CreateSitesAsync_TeamSite_CreatesWithOwners()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact(Skip = "Requires live SharePoint admin context")]
|
||||
public async Task CreateSitesAsync_CommunicationSite_CreatesWithUrl()
|
||||
{
|
||||
}
|
||||
|
||||
[Fact(Skip = "Requires live SharePoint admin context")]
|
||||
public async Task CreateSitesAsync_MixedTypes_HandlesEachCorrectly()
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user