diff --git a/config/project-scratch-def.json b/config/project-scratch-def.json index 6f40b2f..3130a72 100644 --- a/config/project-scratch-def.json +++ b/config/project-scratch-def.json @@ -1,13 +1,5 @@ { "orgName": "salesforce-plantuml_DEV", "edition": "Developer", - "features": [], - "settings": { - "lightningExperienceSettings": { - "enableS1DesktopEnabled": true - }, - "mobileSettings": { - "enableS1EncryptedStoragePref2": false - } - } + "features": [] } diff --git a/force-app/main/default/applications/PlantUML.app-meta.xml b/force-app/main/default/applications/PlantUML.app-meta.xml index 96ffb69..2fb4271 100644 --- a/force-app/main/default/applications/PlantUML.app-meta.xml +++ b/force-app/main/default/applications/PlantUML.app-meta.xml @@ -2,8 +2,6 @@ #0070D2 - plantuml1 - 1 false Renders UML diagrams for Apex Classes and SObjects @@ -15,5 +13,4 @@ ClassDiagramCreator ErdCreator Lightning - PlantUML_UtilityBar diff --git a/force-app/main/default/classes/ApexParser.cls-meta.xml b/force-app/main/default/classes/ApexParser.cls-meta.xml index 6dc8b22..f928c8e 100644 --- a/force-app/main/default/classes/ApexParser.cls-meta.xml +++ b/force-app/main/default/classes/ApexParser.cls-meta.xml @@ -1,5 +1,5 @@ - 27.0 + 53.0 Active diff --git a/force-app/main/default/classes/ClassDiagramCreatorCtrl.cls b/force-app/main/default/classes/ClassDiagramCreatorCtrl.cls index 7290ad9..b19544a 100644 --- a/force-app/main/default/classes/ClassDiagramCreatorCtrl.cls +++ b/force-app/main/default/classes/ClassDiagramCreatorCtrl.cls @@ -61,58 +61,4 @@ public with sharing class ClassDiagramCreatorCtrl { } return null; } - - - // TEST METHODS - - - static testmethod void testUIIsPopulatedOnConstructor() { - // Setup - Boolean noExceptionWasThrown = true; - - // Execute - Test.setCurrentPageReference(Page.classDiagramCreator); - try { - ClassDiagramCreatorCtrl ctrl = new ClassDiagramCreatorCtrl(); - } - catch(Exception ignored) { - noExceptionWasThrown = false; - } - - // Verify not much more than that no Exception was thrown - System.assert(noExceptionWasThrown); - } - - static testmethod void errorShownOnCreateWithNoSelectedClass() { - // Setup - Test.setCurrentPageReference(Page.classDiagramCreator); - ClassDiagramCreatorCtrl pageCtrl = new ClassDiagramCreatorCtrl(); - - // Execute - pageCtrl.doCreateDiagram(); - - // Verify - System.assert(ApexPages.hasMessages()); - } - - static testmethod void noErrorOnCreateWithSelectedClass() { - // Setup - Test.setCurrentPageReference(Page.classDiagramCreator); - ClassDiagramCreatorCtrl pageCtrl = new ClassDiagramCreatorCtrl(); - - // Execute - Boolean hasClasses = pageCtrl.accessibleClasses.size() > 0; - if(hasClasses) { - SelectOption anObject = pageCtrl.accessibleClasses.get(0); - pageCtrl.selectedClasses.add(anObject); - pageCtrl.classDiagram.showPublicMethods = true; - pageCtrl.classDiagram.showPublicVariables = true; - pageCtrl.classDiagram.showMetrics = true; - } - pageCtrl.doCreateDiagram(); - - // Verify - System.assert(!hasClasses || !ApexPages.hasMessages()); - System.assert(!hasClasses || pageCtrl.classDiagram.plantUMLText != ''); - } } \ No newline at end of file diff --git a/force-app/main/default/classes/ClassDiagramCreatorCtrl.cls-meta.xml b/force-app/main/default/classes/ClassDiagramCreatorCtrl.cls-meta.xml index 307ce73..f928c8e 100644 --- a/force-app/main/default/classes/ClassDiagramCreatorCtrl.cls-meta.xml +++ b/force-app/main/default/classes/ClassDiagramCreatorCtrl.cls-meta.xml @@ -1,5 +1,5 @@ - 25.0 + 53.0 Active diff --git a/force-app/main/default/classes/ClassDiagramCreatorCtrl_Test.cls b/force-app/main/default/classes/ClassDiagramCreatorCtrl_Test.cls new file mode 100644 index 0000000..cd082e1 --- /dev/null +++ b/force-app/main/default/classes/ClassDiagramCreatorCtrl_Test.cls @@ -0,0 +1,68 @@ +@IsTest +private class ClassDiagramCreatorCtrl_Test { + + @IsTest + private static void testUIIsPopulatedOnConstructor() { + + // Setup + Boolean noExceptionWasThrown = true; + + + // Execute + Test.setCurrentPageReference(Page.classDiagramCreator); + try { + new ClassDiagramCreatorCtrl(); + } + catch(Exception ignored) { + noExceptionWasThrown = false; + } + + + // Verify + System.assert(noExceptionWasThrown); + } + + + @IsTest + private static void errorShownOnCreateWithNoSelectedClass() { + + // Setup + Test.setCurrentPageReference(Page.classDiagramCreator); + ClassDiagramCreatorCtrl pageCtrl = new ClassDiagramCreatorCtrl(); + + + // Execute + pageCtrl.doCreateDiagram(); + + + // Verify + System.assert(ApexPages.hasMessages()); + } + + + @IsTest + private static void noErrorOnCreateWithSelectedClass() { + + // Setup + Test.setCurrentPageReference(Page.classDiagramCreator); + ClassDiagramCreatorCtrl pageCtrl = new ClassDiagramCreatorCtrl(); + + + // Execute + Boolean hasClasses = pageCtrl.accessibleClasses.size() > 0; + if(hasClasses) { + SelectOption anObject = pageCtrl.accessibleClasses.get(0); + pageCtrl.selectedClasses.add(anObject); + pageCtrl.classDiagram.showPublicMethods = true; + pageCtrl.classDiagram.showPublicVariables = true; + pageCtrl.classDiagram.showMetrics = true; + } + + pageCtrl.doCreateDiagram(); + + + // Verify + System.assert(!hasClasses || !ApexPages.hasMessages()); + System.assert(!hasClasses || pageCtrl.classDiagram.plantUMLText != ''); + } +} diff --git a/force-app/main/default/classes/ClassDiagramCreatorCtrl_Test.cls-meta.xml b/force-app/main/default/classes/ClassDiagramCreatorCtrl_Test.cls-meta.xml new file mode 100644 index 0000000..f928c8e --- /dev/null +++ b/force-app/main/default/classes/ClassDiagramCreatorCtrl_Test.cls-meta.xml @@ -0,0 +1,5 @@ + + + 53.0 + Active + diff --git a/force-app/main/default/classes/CodeMetric_Test.cls b/force-app/main/default/classes/CodeMetric_Test.cls new file mode 100644 index 0000000..96259e8 --- /dev/null +++ b/force-app/main/default/classes/CodeMetric_Test.cls @@ -0,0 +1,36 @@ +@IsTest +private class CodeMetric_Test { + + @IsTest + private static void calculateMethodCCCorrectly() { + + // Setup + ApexClass original = [SELECT Name, Body FROM ApexClass WHERE Name = 'ApexClassForTests']; + + + // Execute && Verify + ApexParser parser = new ApexParser(); + for(ApexParser.ClassMember method : parser.parse(original).members) { + if(method.Name == 'complexityOf7') { + System.assertEquals(7, CodeMetrics.CC(method)); + } + } + } + + + @IsTest + private static void calculateMethodCCIgnoresCommentsAndLiterals() { + + // Setup + ApexClass original = [SELECT Name, Body FROM ApexClass WHERE Name = 'ApexClassForTests']; + + + // Execute + Verify + ApexParser parser = new ApexParser(); + for(ApexParser.ClassMember method : parser.parse(original).members) { + if(method.Name == 'ccCalculationIgnoresCommentsAndLiterals') { + System.assertEquals(1, CodeMetrics.CC(method)); + } + } + } +} \ No newline at end of file diff --git a/force-app/main/default/classes/CodeMetric_Test.cls-meta.xml b/force-app/main/default/classes/CodeMetric_Test.cls-meta.xml new file mode 100644 index 0000000..dd61d1f --- /dev/null +++ b/force-app/main/default/classes/CodeMetric_Test.cls-meta.xml @@ -0,0 +1,5 @@ + + + 52.0 + Active + diff --git a/force-app/main/default/classes/CodeMetrics.cls b/force-app/main/default/classes/CodeMetrics.cls index 195500f..55c0d4e 100644 --- a/force-app/main/default/classes/CodeMetrics.cls +++ b/force-app/main/default/classes/CodeMetrics.cls @@ -30,35 +30,4 @@ public class CodeMetrics { return methodCC; } - - - // TEST METHODS - - - static testMethod void calculateMethodCCCorrectly() { - // Setup - ApexClass original = [SELECT Name, Body FROM ApexClass WHERE Name = 'ApexClassForTests']; - - // Execute && Verify - ApexParser parser = new ApexParser(); - for(ApexParser.ClassMember method : parser.parse(original).members) { - if(method.Name == 'complexityOf7') { - System.assertEquals(7, CodeMetrics.CC(method)); - } - } - } - - - static testMethod void calculateMethodCCIgnoresCommentsAndLiterals() { - // Setup - ApexClass original = [SELECT Name, Body FROM ApexClass WHERE Name = 'ApexClassForTests']; - - // Execute && Verify - ApexParser parser = new ApexParser(); - for(ApexParser.ClassMember method : parser.parse(original).members) { - if(method.Name == 'ccCalculationIgnoresCommentsAndLiterals') { - System.assertEquals(1, CodeMetrics.CC(method)); - } - } - } } \ No newline at end of file diff --git a/force-app/main/default/classes/CodeMetrics.cls-meta.xml b/force-app/main/default/classes/CodeMetrics.cls-meta.xml index 6dc8b22..f928c8e 100644 --- a/force-app/main/default/classes/CodeMetrics.cls-meta.xml +++ b/force-app/main/default/classes/CodeMetrics.cls-meta.xml @@ -1,5 +1,5 @@ - 27.0 + 53.0 Active diff --git a/force-app/main/default/classes/ERDCreatorCtrl.cls b/force-app/main/default/classes/ERDCreatorCtrl.cls index 8508f05..bb968de 100644 --- a/force-app/main/default/classes/ERDCreatorCtrl.cls +++ b/force-app/main/default/classes/ERDCreatorCtrl.cls @@ -88,50 +88,4 @@ public with sharing class ERDCreatorCtrl { && !name.endsWith('Tag') && !name.endsWith('Share') ; } - - - // TEST METHODS - - static testmethod void testUIIsPopulatedOnConstructor() { - // Setup - Test.setCurrentPageReference(Page.erdCreator); - - // Execute - ERDCreatorCtrl ctrl = new ERDCreatorCtrl(); - - // Verify - System.assertNotEquals(0, ctrl.accessibleSObjects.size()); - System.assertNotEquals(null, ctrl.getPermSets()); - System.assertNotEquals(0, ctrl.getProfiles().size()); - System.assertEquals(null, ctrl.erDiagram.permSet); - System.assertEquals('System Administrator', ctrl.erDiagram.profile); - System.assertEquals(0, ctrl.selectedSObjects.size()); - } - - - static testmethod void errorShownOnCreateWithNoSelectedObject() { - // Setup - Test.setCurrentPageReference(Page.erdCreator); - ERDCreatorCtrl pageCtrl = new ERDCreatorCtrl(); - - // Execute - pageCtrl.doCreateDiagram(); - - // Verify - System.assert(ApexPages.hasMessages()); - } - - - static testmethod void noErrorOnCreateWithSelectedObject() { - // Setup - Test.setCurrentPageReference(Page.erdCreator); - ERDCreatorCtrl pageCtrl = new ERDCreatorCtrl(); - - // Execute - pageCtrl.selectedSObjects.add(pageCtrl.accessibleSObjects.get(0)); - pageCtrl.doCreateDiagram(); - - // Verify - System.assert(!ApexPages.hasMessages()); - } } \ No newline at end of file diff --git a/force-app/main/default/classes/ERDCreatorCtrl.cls-meta.xml b/force-app/main/default/classes/ERDCreatorCtrl.cls-meta.xml index 307ce73..f928c8e 100644 --- a/force-app/main/default/classes/ERDCreatorCtrl.cls-meta.xml +++ b/force-app/main/default/classes/ERDCreatorCtrl.cls-meta.xml @@ -1,5 +1,5 @@ - 25.0 + 53.0 Active diff --git a/force-app/main/default/classes/ErdDiagramCreatorCtrl.cls b/force-app/main/default/classes/ErdDiagramCreatorCtrl.cls new file mode 100644 index 0000000..1af292f --- /dev/null +++ b/force-app/main/default/classes/ErdDiagramCreatorCtrl.cls @@ -0,0 +1,93 @@ +public with sharing class ErdDiagramCreatorCtrl { + + public PlantUMLERDiagram erDiagram { get; set; } + public SelectOption[] accessibleSObjects { get; set; } + public SelectOption[] selectedSObjects { get; set; } + + // CONSTRUCTOR + + public ErdDiagramCreatorCtrl() { + selectedSObjects = new List(); + accessibleSObjects = getAccessibleSObjects(); + + erDiagram = new PlantUMLERDiagram(); + erDiagram.profile = 'System Administrator'; + } + + // PUBLIC + + public List getProfiles() { + List profiles = new List(); + + for(Profile pr : [SELECT Name FROM Profile]) { + profiles.add(new SelectOption(pr.Name, pr.Name)); + } + + SelectOptionSorter.sort(profiles, SelectOptionSorter.FieldToSort.Label); + profiles.add(new SelectOption('NONE', ' - ')); + + return profiles; + } + + + public List getPermSets() { + List permSets = new List(); + + String profileName = (this.erDiagram.profile == 'NONE') ? null : this.erDiagram.profile; + for(PermissionSet ps : [SELECT Name, Label FROM PermissionSet WHERE Profile.Name = :profileName AND (NOT Name LIKE 'X00%')]) { + permSets.add(new SelectOption(ps.Name, ps.Name)); + } + + SelectOptionSorter.sort(permSets, SelectOptionSorter.FieldToSort.Label); + + return permSets; + } + + + public PageReference doCreateDiagram() { + + if(selectedSObjects.isEmpty()) { + ApexPages.Message msg = new ApexPages.Message(ApexPages.Severity.Info, 'Please select at least one sobject.'); + ApexPages.addMessage(msg); + } + else { + Set sobjectNames = new Set(); + for(SelectOption so : selectedSObjects) { + sobjectNames.add(so.getValue()); + } + + this.erDiagram.setObjects(sobjectNames); + } + return null; + } + + + // PRIVATE + + private List getAccessibleSObjects(){ + List accessibleSObjects = new List(); + + for(Schema.SObjectType type : Schema.getGlobalDescribe().values()) { + Schema.DescribeSObjectResult objectDescribe = type.getDescribe(); + + if(isAllowedObject(objectDescribe)) { + String name = objectDescribe.getName(); + String label = objectDescribe.getLabel(); + accessibleSObjects.add(new SelectOption(name, name + + ' - ' + label)); + } + } + SelectOptionSorter.sort(accessibleSObjects, SelectOptionSorter.FieldToSort.Label); + + return accessibleSObjects; + } + + + private Boolean isAllowedObject(Schema.DescribeSObjectResult objectDescribe) { + String name = objectDescribe.getName(); + return objectDescribe.isAccessible() + && !name.endsWith('History') + && !name.endsWith('Feed') + && !name.endsWith('Tag') + && !name.endsWith('Share') ; + } +} \ No newline at end of file diff --git a/force-app/main/default/classes/ErdDiagramCreatorCtrl.cls-meta.xml b/force-app/main/default/classes/ErdDiagramCreatorCtrl.cls-meta.xml new file mode 100644 index 0000000..f928c8e --- /dev/null +++ b/force-app/main/default/classes/ErdDiagramCreatorCtrl.cls-meta.xml @@ -0,0 +1,5 @@ + + + 53.0 + Active + diff --git a/force-app/main/default/classes/ErdDiagramCreatorCtrl_Test.cls b/force-app/main/default/classes/ErdDiagramCreatorCtrl_Test.cls new file mode 100644 index 0000000..8561873 --- /dev/null +++ b/force-app/main/default/classes/ErdDiagramCreatorCtrl_Test.cls @@ -0,0 +1,55 @@ +@IsTest +private class ErdDiagramCreatorCtrl_Test { + + @IsTest + private static void testUIIsPopulatedOnConstructor() { + + // Setup + Test.setCurrentPageReference(Page.erdCreator); + + + // Execute + ERDCreatorCtrl ctrl = new ERDCreatorCtrl(); + + + // Verify + System.assertNotEquals(0, ctrl.accessibleSObjects.size()); + System.assertNotEquals(null, ctrl.getPermSets()); + System.assertNotEquals(0, ctrl.getProfiles().size()); + System.assertEquals(null, ctrl.erDiagram.permSet); + System.assertEquals('System Administrator', ctrl.erDiagram.profile); + System.assertEquals(0, ctrl.selectedSObjects.size()); + } + + + @IsTest + private static void errorShownOnCreateWithNoSelectedObject() { + // Setup + Test.setCurrentPageReference(Page.erdCreator); + ERDCreatorCtrl pageCtrl = new ERDCreatorCtrl(); + + // Execute + pageCtrl.doCreateDiagram(); + + // Verify + System.assert(ApexPages.hasMessages()); + } + + + @IsTest + private static void noErrorOnCreateWithSelectedObject() { + + // Setup + Test.setCurrentPageReference(Page.erdCreator); + ERDCreatorCtrl pageCtrl = new ERDCreatorCtrl(); + + + // Execute + pageCtrl.selectedSObjects.add(pageCtrl.accessibleSObjects.get(0)); + pageCtrl.doCreateDiagram(); + + + // Verify + System.assert(!ApexPages.hasMessages()); + } +} diff --git a/force-app/main/default/classes/ErdDiagramCreatorCtrl_Test.cls-meta.xml b/force-app/main/default/classes/ErdDiagramCreatorCtrl_Test.cls-meta.xml new file mode 100644 index 0000000..f928c8e --- /dev/null +++ b/force-app/main/default/classes/ErdDiagramCreatorCtrl_Test.cls-meta.xml @@ -0,0 +1,5 @@ + + + 53.0 + Active + diff --git a/force-app/main/default/classes/PlantUMLClassDiagram.cls-meta.xml b/force-app/main/default/classes/PlantUMLClassDiagram.cls-meta.xml index 6dc8b22..f928c8e 100644 --- a/force-app/main/default/classes/PlantUMLClassDiagram.cls-meta.xml +++ b/force-app/main/default/classes/PlantUMLClassDiagram.cls-meta.xml @@ -1,5 +1,5 @@ - 27.0 + 53.0 Active diff --git a/force-app/main/default/classes/PlantUMLERDiagram.cls-meta.xml b/force-app/main/default/classes/PlantUMLERDiagram.cls-meta.xml index 6dc8b22..f928c8e 100644 --- a/force-app/main/default/classes/PlantUMLERDiagram.cls-meta.xml +++ b/force-app/main/default/classes/PlantUMLERDiagram.cls-meta.xml @@ -1,5 +1,5 @@ - 27.0 + 53.0 Active diff --git a/force-app/main/default/contentassets/plantuml.asset b/force-app/main/default/contentassets/plantuml.asset deleted file mode 100644 index 56ce991..0000000 Binary files a/force-app/main/default/contentassets/plantuml.asset and /dev/null differ diff --git a/force-app/main/default/contentassets/plantuml.asset-meta.xml b/force-app/main/default/contentassets/plantuml.asset-meta.xml deleted file mode 100644 index 16a6c48..0000000 --- a/force-app/main/default/contentassets/plantuml.asset-meta.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - false - en_US - plantuml - - - VIEWER - - - - - 1 - plantuml.png - - - diff --git a/force-app/main/default/contentassets/plantuml1.asset b/force-app/main/default/contentassets/plantuml1.asset deleted file mode 100644 index 56ce991..0000000 Binary files a/force-app/main/default/contentassets/plantuml1.asset and /dev/null differ diff --git a/force-app/main/default/contentassets/plantuml1.asset-meta.xml b/force-app/main/default/contentassets/plantuml1.asset-meta.xml deleted file mode 100644 index 2014793..0000000 --- a/force-app/main/default/contentassets/plantuml1.asset-meta.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - false - en_US - plantuml1 - - - VIEWER - - - - - 1 - plantuml.png - - - diff --git a/force-app/main/default/flexipages/PlantUML_UtilityBar.flexipage-meta.xml b/force-app/main/default/flexipages/PlantUML_UtilityBar.flexipage-meta.xml deleted file mode 100644 index 45f7bdd..0000000 --- a/force-app/main/default/flexipages/PlantUML_UtilityBar.flexipage-meta.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - utilityItems - Region - - - backgroundComponents - Background - - PlantUML UtilityBar - - UtilityBar - diff --git a/force-app/main/default/flexipages/Plant_UML_UtilityBar.flexipage-meta.xml b/force-app/main/default/flexipages/Plant_UML_UtilityBar.flexipage-meta.xml deleted file mode 100644 index d65fcb7..0000000 --- a/force-app/main/default/flexipages/Plant_UML_UtilityBar.flexipage-meta.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - utilityItems - Region - - - backgroundComponents - Background - - Plant UML UtilityBar - - UtilityBar - diff --git a/force-app/main/default/pages/classDiagramCreator.page-meta.xml b/force-app/main/default/pages/classDiagramCreator.page-meta.xml index 3c99b87..2e414a4 100644 --- a/force-app/main/default/pages/classDiagramCreator.page-meta.xml +++ b/force-app/main/default/pages/classDiagramCreator.page-meta.xml @@ -1,6 +1,6 @@ - 25.0 + 53.0 false false diff --git a/force-app/main/default/pages/erdCreator.page-meta.xml b/force-app/main/default/pages/erdCreator.page-meta.xml index 9dee491..637a877 100644 --- a/force-app/main/default/pages/erdCreator.page-meta.xml +++ b/force-app/main/default/pages/erdCreator.page-meta.xml @@ -1,6 +1,6 @@ - 25.0 + 53.0 false false diff --git a/scripts/config.sh b/scripts/config.sh index 2bb5e25..0319b67 100644 --- a/scripts/config.sh +++ b/scripts/config.sh @@ -1,5 +1,3 @@ #!/bin/bash DEV_HUB_ALIAS="DevHubPrivate" SCRATCH_ORG_ALIAS="salesforce-plantuml_DEV" -PACKAGENAME="salesforce-plantuml" -PACKAGING_ORG_ALIAS="salesforce-plantuml_PCK" diff --git a/scripts/createScratchOrg.sh b/scripts/createScratchOrg.sh index 0ca534b..6f2ef70 100755 --- a/scripts/createScratchOrg.sh +++ b/scripts/createScratchOrg.sh @@ -26,4 +26,4 @@ echo "Make sure Org user is english" sfdx force:data:record:update -s User -w "Name='User User'" -v "Languagelocalekey=en_US" echo "Running apex tests" -execute sfdx force:apex:test:run -l RunLocalTests -w 30 \ No newline at end of file +execute sfdx force:apex:test:run -l RunLocalTests --synchronous \ No newline at end of file