You might remember Mo Tester, the package that helps you Experiment Faster on Force.com. I’m tweaking it for some Lightning Component stuff (spoiler alert) and ran into this. (Posting to the Lightning Newbie Notes too.)
The following code won’t compile. You’ll get a handy Return type does not support AuraEnabled error because — wait for it — the @AuraEnabled annotation doesn’t support PageReference return types.
@AuraEnabled public PageReference createMoTester1() { SmartFactory.FillAllFields = true; LAB_Mo_Tester_1__c t = (LAB_Mo_Tester_1__c) SmartFactory.createSObject('LAB_Mo_Tester_1__c'); insert t; return new PageReference('/'+t.id); }
You need to refactor your Visualforce controller to have two methods, one for your existing code, one for your new Lightning Component. Also, the @AuraEnabled method needs to be static.
public PageReference createMoTester1() { Id myMo = LAB_CreateDataHelper.getNewMoTester1Id(); return new PageReference('/'+myMo); } @AuraEnabled public static Id getNewMoTester1Id() { SmartFactory.FillAllFields = true; LAB_Mo_Tester_1__c t = (LAB_Mo_Tester_1__c) SmartFactory.createSObject('LAB_Mo_Tester_1__c'); insert t; return t.id; }
Note that in this case, based on the way my test classes are structured, this didn’t affect my code coverage. It was 100% before, it’s 100% after.
Incidentally, not supporting PageReference return types is perfectly logical when you think about it. PageReferences are a Visualforce thing after all.
Also note that, yes, I’m bewildered by my choice of method names here, too. Also, the original package doesn’t seem to use this method. And the test coverage in the package didn’t include coverage for the StandardController and StandardSetController dependent constructors. What was I thinking???
Looking at old (ish) code is fun.
Update 2/23/15 — I did use the button, on the list view. I just didn’t inspect hard enough. Phew & Sheesh!
Also the method has to be static. Whoops!
Pingback: Experiment Faster with Lightning Components & Force.com (Mo Tester Update) | Reid Carlberg