test(16-02): add failing tests for RPT-03-b through RPT-03-e
- RPT-03-b: mergePermissions=false output identical to default - RPT-03-c: mergePermissions=true contains Sites column header - RPT-03-d: 2+ locations produce badge + hidden sub-rows with toggleGroup - RPT-03-e: mergePermissions=true omits btn-site and view-site
This commit is contained in:
@@ -141,4 +141,97 @@ public class UserAccessHtmlExportServiceTests
|
|||||||
var html = svc.BuildHtml(new[] { DefaultEntry }, MakeBranding(msp: true));
|
var html = svc.BuildHtml(new[] { DefaultEntry }, MakeBranding(msp: true));
|
||||||
Assert.Contains("data:image/png;base64,bXNw", html);
|
Assert.Contains("data:image/png;base64,bXNw", html);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ── Consolidation tests (RPT-03-b through RPT-03-e) ──────────────────────
|
||||||
|
|
||||||
|
// Shared test data: 3 entries where 2 share the same consolidation key
|
||||||
|
private static IReadOnlyList<UserAccessEntry> MakeConsolidationTestEntries()
|
||||||
|
{
|
||||||
|
// Entry 1 + Entry 2: same user/permission/accesstype/grantedthrough, different sites
|
||||||
|
var e1 = MakeEntry(
|
||||||
|
userDisplay: "Bob Jones",
|
||||||
|
userLogin: "bob@contoso.com",
|
||||||
|
siteUrl: "https://contoso.sharepoint.com/sites/Alpha",
|
||||||
|
siteTitle: "Alpha Site",
|
||||||
|
permLevel: "Contribute",
|
||||||
|
accessType: AccessType.Direct,
|
||||||
|
grantedThrough: "Direct Permissions");
|
||||||
|
|
||||||
|
var e2 = MakeEntry(
|
||||||
|
userDisplay: "Bob Jones",
|
||||||
|
userLogin: "bob@contoso.com",
|
||||||
|
siteUrl: "https://contoso.sharepoint.com/sites/Beta",
|
||||||
|
siteTitle: "Beta Site",
|
||||||
|
permLevel: "Contribute",
|
||||||
|
accessType: AccessType.Direct,
|
||||||
|
grantedThrough: "Direct Permissions");
|
||||||
|
|
||||||
|
// Entry 3: different user — will have 1 location
|
||||||
|
var e3 = MakeEntry(
|
||||||
|
userDisplay: "Carol Davis",
|
||||||
|
userLogin: "carol@contoso.com",
|
||||||
|
siteUrl: "https://contoso.sharepoint.com/sites/Gamma",
|
||||||
|
siteTitle: "Gamma Site",
|
||||||
|
permLevel: "Read",
|
||||||
|
accessType: AccessType.Group,
|
||||||
|
grantedThrough: "Readers Group");
|
||||||
|
|
||||||
|
return new[] { e1, e2, e3 };
|
||||||
|
}
|
||||||
|
|
||||||
|
// RPT-03-b: BuildHtml(entries, mergePermissions: false) is byte-identical to BuildHtml(entries)
|
||||||
|
[Fact]
|
||||||
|
public void BuildHtml_mergePermissionsFalse_identical_to_default()
|
||||||
|
{
|
||||||
|
var entries = MakeConsolidationTestEntries();
|
||||||
|
var svc = new UserAccessHtmlExportService();
|
||||||
|
|
||||||
|
var defaultOutput = svc.BuildHtml(entries);
|
||||||
|
var explicitFalse = svc.BuildHtml(entries, mergePermissions: false);
|
||||||
|
|
||||||
|
Assert.Equal(defaultOutput, explicitFalse);
|
||||||
|
}
|
||||||
|
|
||||||
|
// RPT-03-c: BuildHtml(entries, mergePermissions: true) contains "Sites" column header and consolidated content
|
||||||
|
[Fact]
|
||||||
|
public void BuildHtml_mergePermissionsTrue_contains_sites_column()
|
||||||
|
{
|
||||||
|
var entries = MakeConsolidationTestEntries();
|
||||||
|
var svc = new UserAccessHtmlExportService();
|
||||||
|
|
||||||
|
var html = svc.BuildHtml(entries, mergePermissions: true);
|
||||||
|
|
||||||
|
Assert.Contains("Sites", html);
|
||||||
|
// Consolidated rows present for both users
|
||||||
|
Assert.Contains("Bob Jones", html);
|
||||||
|
Assert.Contains("Carol Davis", html);
|
||||||
|
}
|
||||||
|
|
||||||
|
// RPT-03-d: 2+ locations produce [N sites] badge with toggleGroup and hidden sub-rows
|
||||||
|
[Fact]
|
||||||
|
public void BuildHtml_mergePermissionsTrue_multiLocation_has_badge_and_subrows()
|
||||||
|
{
|
||||||
|
var entries = MakeConsolidationTestEntries();
|
||||||
|
var svc = new UserAccessHtmlExportService();
|
||||||
|
|
||||||
|
var html = svc.BuildHtml(entries, mergePermissions: true);
|
||||||
|
|
||||||
|
// Badge with onclick
|
||||||
|
Assert.Contains("onclick=\"toggleGroup('loc", html);
|
||||||
|
// Hidden sub-rows
|
||||||
|
Assert.Contains("data-group=\"loc", html);
|
||||||
|
}
|
||||||
|
|
||||||
|
// RPT-03-e: mergePermissions=true omits "By Site" button and view-site div
|
||||||
|
[Fact]
|
||||||
|
public void BuildHtml_mergePermissionsTrue_omits_bysite_view()
|
||||||
|
{
|
||||||
|
var entries = MakeConsolidationTestEntries();
|
||||||
|
var svc = new UserAccessHtmlExportService();
|
||||||
|
|
||||||
|
var html = svc.BuildHtml(entries, mergePermissions: true);
|
||||||
|
|
||||||
|
Assert.DoesNotContain("btn-site", html);
|
||||||
|
Assert.DoesNotContain("view-site", html);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user