Skip to content

Commit

Permalink
Support for Entitlements (#274)
Browse files Browse the repository at this point in the history
  • Loading branch information
jwikman committed Jan 12, 2023
1 parent eb13692 commit c67c31a
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 3 deletions.
2 changes: 2 additions & 0 deletions src/DynamicsNAV.ts
Expand Up @@ -202,6 +202,7 @@ export class DynamicsNAV {
case 'dotnet': return 'Dotnet';
case 'permissionset': return 'PermissionSet';
case 'permissionsetextension': return 'PermissionSetExt';
case 'entitlement': return 'Entitlement';
}
}

Expand All @@ -224,6 +225,7 @@ export class DynamicsNAV {
case 'interface': return 'Interface';
case 'permissionset': return 'PermissionSet';
case 'permissionsetextension': return 'PermissionSetExt';
case 'entitlement': return 'Entitlement';
}
}

Expand Down
9 changes: 6 additions & 3 deletions src/NAVObject.ts
Expand Up @@ -135,7 +135,7 @@ export class NAVObject {
}

private loadObjectProperties(): any {
var patternObjectType = new RegExp('(codeunit |page |pagecustomization |pageextension |reportextension |permissionset |permissionsetextension |profile |query |report |requestpage |table |tableextension |xmlport |enum |enumextension |controladdin |interface)', "i")
var patternObjectType = new RegExp('(codeunit |page |pagecustomization |pageextension |reportextension |permissionset |permissionsetextension |profile |query |report |requestpage |table |tableextension |xmlport |enum |enumextension |controladdin |interface |entitlement)', "i");

//Remove content between crs-al disable -> enable
var initNAVObjectText = this.NAVObjectText;
Expand Down Expand Up @@ -163,7 +163,8 @@ export class NAVObject {
if (!ObjectTypeArr) { return null }

if (ObjectTypeArr) {
switch (ObjectTypeArr[0].trim().toLowerCase()) {
const objectType = ObjectTypeArr[0].trim().toLowerCase();
switch (objectType) {
case 'page':
case 'codeunit':
case 'query':
Expand Down Expand Up @@ -213,8 +214,9 @@ export class NAVObject {

break;
}
case 'entitlement':
case 'interface': {
var patternObject = new RegExp('(interface)( +"?[ a-zA-Z0-9._/&-]+"?)', "i");
var patternObject = new RegExp(`(${objectType})( +"?[ a-zA-Z0-9._/&-]+"?)`, "i");
let currObject = this.NAVObjectText.match(patternObject);

this.objectType = currObject[1];
Expand Down Expand Up @@ -344,6 +346,7 @@ export class NAVObject {
case 'interface':
case 'permissionset':
case 'permissionsetextension':
case 'entitlement':
return true;
default: return false;
}
Expand Down
9 changes: 9 additions & 0 deletions src/test/suite/NAVObject.FilePattern.test.ts
Expand Up @@ -435,6 +435,15 @@ suite("NAVObject FilePattern Tests", () => {

assert.strictEqual(navObject.objectFileNameFixed, 'IBallColorIdentifier.Interface.al')
})
test("FileName - Simple Entitlement (not DataAgnostic)", () => {
let testSettings = Settings.GetConfigSettings(null);
testSettings[Settings.FileNamePattern] = '<ObjectNameShort>.<ObjectTypeShortPascalCase>.al';

let navTestObject = NAVTestObjectLibrary.getSimpleEntitlement();
let navObject = new NAVObject(navTestObject.ObjectText, testSettings, navTestObject.ObjectFileName);

assert.strictEqual(navObject.objectFileNameFixed, 'TheEntitlement.Entitlement.al');
});

test("Filename - Rename PageExtension with Suffix with underscore in object name, and remove suffix in filename (not data-agnostic)", () => {
let testSettings = Settings.GetConfigSettings(null)
Expand Down
14 changes: 14 additions & 0 deletions src/test/suite/NAVTestObjectLibrary.ts
Expand Up @@ -956,6 +956,20 @@ export function getSimpleInterface(): NAVTestObject {
`
return object;
}
export function getSimpleEntitlement(): NAVTestObject {
let object = new NAVTestObject;

object.ObjectFileName = 'SomeEntitlement.al';
object.ObjectText = `entitlement "The Entitlement"
{
Id = '62e90394-69f5-4237-9190-012177145e10';
ObjectEntitlements = "The PermissionSet";
RoleType = Local;
Type = Role;
}
`;
return object;
}
export function getSimpleReportExtension(): NAVTestObject {
let object = new NAVTestObject;

Expand Down

0 comments on commit c67c31a

Please sign in to comment.