Sample Code:
//Parent Record
Account acc = new Account(Name = 'Test Account');
insert acc;
//Create Related Feed Item Record
FeedItem fi = new FeedItem(ParentId = acc.Id, Body = 'Test Body');
insert fi;
//Create Feed Comment Record
FeedComment fc = new FeedComment(FeedItemId = fi.Id, CommentBody = 'Test Comment');
insert fc;
//Get Feed Comment Record
FeedComment objFC = [Select Id, CommentBody, FeedItemId, ParentId FROM FeedComment LIMIT 1];
//Check Feed Comment Parent Id
System.assertEquals(objFC.ParentId, acc.Id);
LWCWizard.html
<template>
<lightning-progress-indicator current-step={currentStep} type="base" variant="base">
<lightning-progress-step label="Step 1" value="1" onclick={handleOnStepClick}></lightning-progress-step>
<lightning-progress-step label="Step 2" value="2" onclick={handleOnStepClick}></lightning-progress-step>
<lightning-progress-step label="Step 3" value="3" onclick={handleOnStepClick}></lightning-progress-step>
</lightning-progress-indicator>
<template if:true={isStepOne}>
<div>
Step 1
</div>
</template>
<template if:true={isStepTwo}>
<div>
Step 2
</div>
</template>
<template if:true={isStepThree}>
<div>
Step 3
</div>
</template>
<template if:true={isEnablePrev}>
<lightning-button variant="base" label="Back" onclick={handlePrev}></lightning-button>
</template>
<template if:true={isEnableNext}>
<lightning-button label="Next" variant="brand" onclick={handleNext}></lightning-button>
</template>
<template if:true={isEnableFinish}>
<lightning-button label="Finish" variant="brand" onclick={handleFinish}></lightning-button>
</template>
</template>
LWCWizard.js
import { LightningElement, track} from 'lwc';
export default class LWCWizard extends LightningElement {
@track currentStep = '1';
handleOnStepClick(event) {
this.currentStep = event.target.value;
}
get isStepOne() {
return this.currentStep === "1";
}
get isStepTwo() {
return this.currentStep === "2";
}
get isStepThree() {
return this.currentStep === "3";
}
get isEnableNext() {
return this.currentStep != "3";
}
get isEnablePrev() {
return this.currentStep != "1";
}
get isEnableFinish() {
return this.currentStep === "3";
}
handleNext(){
if(this.currentStep == "1"){
this.currentStep = "2";
}
else if(this.currentStep = "2"){
this.currentStep = "3";
}
}
handlePrev(){
if(this.currentStep == "3"){
this.currentStep = "2";
}
else if(this.currentStep = "2"){
this.currentStep = "1";
}
}
handleFinish(){
}
}
To create “base” style progress indicator you have need to add type="base"
attribute in your lightning-progress-indicator
tag in lightning component.

To create “path” style progress indicator you have need to add type="path"
attribute in your lightning-progress-indicator
tag in lightning component.

we can use FeatureManagement.checkPermission
method, to determine which users have access to a specific custom permission.
Sample Code:
Boolean hasCustomPermission = FeatureManagement.checkPermission('YOUR_CUSTOM_PERMISSION_API_NAME');
Solution 1: Create a date newInstance()
and pass the Year, Month and Day from the dateTime.
DateTime dt = System.now();
Date d = Date.newInstance(dt.year(), dt.month(), dt.day());
System.debug('Print Date:' + d);
Solution 2: Get date from the DateTime using Date()
method.
DateTime dt = System.now()
Date d = dt.date();
System.debug('Print Date:' + d);
Configure the Google reCAPTCHA and get the Site Key & Secret Key:
- Login to Google reCAPTCHA
- Register a new site
- Add Label e.g. Salesforce.com
- Select reCAPTCHA type “reCAPTCHA v2”
- Select “I’m not a robot” Checkbox option.
- Add a domain e.g. yourorgurl.com
- Accept the reCAPTCHA Terms of Service
- Submit and get the Site Key & Secret Key


Create a VF page to configure Google reCAPTCHA in it and we have to embed the VF page in our lightning component.
GoogleReCaptcha VF Page:
<apex:page sidebar="false" showHeader="false" standardStylesheets="false" cache="false" id="pg" applyBodyTag="false" applyHtmlTag="false">
<html>
<head>
<script src='https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit' async='' defer=''/>
<script type='text/javascript'>
var verifyCallback = function(response){
parent.postMessage('VALID', 'https://biswajeet-dev-ed.lightning.force.com/');
};
var onloadCallback = function() {
grecaptcha.render('reCAPTCHAWidget', {
'sitekey' : 'ADD_YOUR_GOOGLE_RECAPTCHA_SITE_KEY',
'callback' : verifyCallback
});
};
</script>
</head>
<body>
<div id="reCAPTCHAWidget"></div>
</body>
</html>
</apex:page>
Embed the above created VF page in our lightning component to display Google reCAPTCHA.
Lightning Component:
<aura:component implements="flexipage:availableForAllPageTypes,force:appHostable,forceCommunity:availableForAllPageTypes" access="global">
<!--Attributes-->
<aura:attribute name="isDisable" type="Boolean" default="true"/>
<aura:attribute name="firstName" type="String"/>
<aura:attribute name="lastName" type="String"/>
<!--Handlers-->
<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<div class="slds-m-around--xxx-large slds-align_absolute-center" style="width:70%;">
<fieldset class="slds-box slds-align_absolute-center" >
<legend id="newform" class="slds-text-heading--small login-heading">
Registration
</legend>
<lightning:input name="fName" label="First Name" value="{!v.firstName}"/>
<br/>
<lightning:input name="lName" label="Last Name" value="{!v.lastName}"/>
<br/>
<iframe src="/apex/GoogleReCaptcha" scrolling="no" frameborder="0" width="100%" allowtransparency="true"></iframe>
<div class="slds-align_absolute-center">
<lightning:button onclick="{!c.handleSubmit}" disabled="{!v.isDisable}" variant="brand" name="btnSubmit" label="Submit" />
</div>
</fieldset>
</div>
</aura:component>
Lightning JS Controller:
({
doInit : function(component, event, helper) {
var vfURL = 'https://biswajeet-dev-ed.lightning.force.com/';
window.addEventListener('message', function(event){
if(event.origin !== vfURL){
return;
}
if(event.data === 'VALID'){
component.set('v.isDisable', false);
}
}, false);
},
handleSubmit : function(component, event, helper) {
},
})
