afv-library/samples/ui-bundle-template-app-react-sample-b2e/force-app/main/default/classes/TenantTriggerHandler_Test.cls
k-j-kim 445ac2f126
Rename webapp/webapplication to UI bundle across the codebase
Directory renames: webapplications/ → uiBundles/, samples dirs drop -experimental suffix
File renames: *.webapplication-meta.xml → *.uibundle-meta.xml, webapplication.json → ui-bundle.json
XML metadata: <WebApplication> → <UIBundle>
NPM packages: @salesforce/webapp-* → @salesforce/ui-bundle-*
Skill names: *-webapplication-* → *-salesforce-ui-bundle-*
CLI references: sf webapp → sf ui-bundle
Source code: function/variable/type names, import paths, string literals updated
ESLint config: Added .worktrees/** to ignores
CHANGELOG repo URLs preserved
2026-03-27 17:54:18 -07:00

97 lines
3.1 KiB
OpenEdge ABL

/**
* Test class for TenantTriggerHandler.
* Verifies that Tenant_Maintenance_Access permission set is assigned to the user
* when a Tenant__c record is created or updated with User__c set.
*/
@isTest
private class TenantTriggerHandler_Test {
@isTest
static void testAssignOnInsert() {
Id runAsUserId = UserInfo.getUserId();
Tenant__c tenant = new Tenant__c(User__c = runAsUserId);
Test.startTest();
insert tenant;
Test.stopTest();
List<PermissionSet> permSets = [
SELECT Id FROM PermissionSet
WHERE Name = 'Tenant_Maintenance_Access'
AND IsOwnedByProfile = false
LIMIT 1
];
if (!permSets.isEmpty()) {
List<PermissionSetAssignment> assignments = [
SELECT Id, AssigneeId, PermissionSetId
FROM PermissionSetAssignment
WHERE PermissionSetId = :permSets[0].Id
AND AssigneeId = :runAsUserId
];
System.assert(assignments.size() == 1, 'Permission set should be assigned to user when Tenant is created with User__c');
}
}
@isTest
static void testAssignOnUpdateWhenUserSet() {
Tenant__c tenant = new Tenant__c();
insert tenant;
Id runAsUserId = UserInfo.getUserId();
Test.startTest();
tenant.User__c = runAsUserId;
update tenant;
Test.stopTest();
List<PermissionSet> permSets = [
SELECT Id FROM PermissionSet
WHERE Name = 'Tenant_Maintenance_Access'
AND IsOwnedByProfile = false
LIMIT 1
];
if (!permSets.isEmpty()) {
List<PermissionSetAssignment> assignments = [
SELECT Id FROM PermissionSetAssignment
WHERE PermissionSetId = :permSets[0].Id
AND AssigneeId = :runAsUserId
];
System.assert(assignments.size() == 1, 'Permission set should be assigned when User__c is set on update');
}
}
@isTest
static void testNoAssignWhenUserNull() {
Tenant__c tenant = new Tenant__c();
Test.startTest();
insert tenant;
Test.stopTest();
// Handler does not assign when User__c is null; trigger runs without error
}
@isTest
static void testNoDuplicateAssign() {
Id runAsUserId = UserInfo.getUserId();
Tenant__c tenant = new Tenant__c(User__c = runAsUserId);
insert tenant;
Integer countBefore = [
SELECT COUNT()
FROM PermissionSetAssignment
WHERE AssigneeId = :runAsUserId
AND PermissionSet.Name = 'Tenant_Maintenance_Access'
];
tenant.Status__c = 'Active';
update tenant;
Integer countAfter = [
SELECT COUNT()
FROM PermissionSetAssignment
WHERE AssigneeId = :runAsUserId
AND PermissionSet.Name = 'Tenant_Maintenance_Access'
];
System.assertEquals(countBefore, countAfter, 'Update without User__c change should not create duplicate assignment');
}
}