@isTest
private class LayoutDescriberHelperTest {
  static testMethod void testMethod1() {
    String userMode = 'classic'; //classic  lightning
    String objectType = 'Contact';
    String recordTypeId = Schema.SObjectType.Contact.getRecordTypeInfosByDeveloperName()
      .get('Doctor')
      .getRecordTypeId();
    System.debug(
      'record type id ===>' +
        recordTypeId +
        ' object type===>' +
        objectType +
        ' userMode===>' +
        userMode
    );
    boolean useHeader = false;
    String baseurl = System.URL.getOrgDomainUrl().getHost();
    Map<String, object> detailsMap = new Map<String, object>();
    Map<String, object> detailsMap2 = new Map<String, object>();
    Map<String, object> detailsMap3 = new Map<String, object>();
    detailsMap.put('calculated', true);
    detailsMap.put('autoNumber', false);
    detailsMap.put('type', 'address');
    detailsMap2.put('calculated', false);
    detailsMap2.put('autoNumber', false);
    detailsMap2.put('type', 'repair');
    detailsMap3.put('calculated', false);
    detailsMap3.put('autoNumber', false);
    detailsMap3.put('type', 'repair');
    String fieldTypeDetail = (String) detailsMap.get('type');

    List<Map<String, object>> componentMapList = new List<Map<String, object>>();
    List<Map<String, object>> componentMapList2 = new List<Map<String, object>>();
    List<Map<String, object>> componentMapList3 = new List<Map<String, object>>();
    Map<String, object> componentMap = new Map<String, object>();
    Map<String, object> componentMap2 = new Map<String, object>();
    Map<String, object> componentMap3 = new Map<String, object>();
    componentMap.put('value', 'Name');
    componentMap.put('type', 'Field');
    componentMap.put('details', detailsMap);
    componentMapList.add(componentMap);
    componentMap2.put('value', 'Name');
    componentMap2.put('type', 'Field');
    componentMap2.put('details', detailsMap2);
    componentMapList2.add(componentMap2);
    componentMap3.put('value', 'LastName');
    componentMap3.put('type', 'Field');
    componentMap3.put('details', detailsMap3);
    componentMapList3.add(componentMap3);
    String apiName = (String) componentMap.get('value');
    String fieldType = (String) componentMap.get('type');

    List<Map<String, object>> layoutComponentsList = new List<Map<String, object>>();
    Map<String, object> layoutComponents = new Map<String, object>();
    layoutComponents.put('layoutComponents', componentMapList);
    layoutComponents.put('label', 'Address');
    layoutComponents.put('placeholder', true);
    layoutComponents.put('editableForNew', true);
    layoutComponents.put('editableForUpdate', true);
    layoutComponents.put('required', false);
    layoutComponentsList.add(layoutComponents);
    Map<String, object> layoutComponents2 = new Map<String, object>();
    layoutComponents2.put('layoutComponents', componentMapList2);
    layoutComponents2.put('label', 'Repair');
    layoutComponents2.put('placeholder', true);
    layoutComponents2.put('editableForNew', true);
    layoutComponents2.put('editableForUpdate', true);
    layoutComponents2.put('required', false);
    layoutComponentsList.add(layoutComponents2);
    Map<String, object> layoutComponents3 = new Map<String, object>();
    layoutComponents3.put('layoutComponents', componentMapList3);
    layoutComponents3.put('label', 'Repair');
    layoutComponents3.put('placeholder', true);
    layoutComponents3.put('editableForNew', true);
    layoutComponents3.put('editableForUpdate', true);
    layoutComponents3.put('required', false);
    layoutComponentsList.add(layoutComponents3);

    boolean placeholderF = (boolean) layoutComponents.get('placeholder');
    boolean isEditable =
      (boolean) layoutComponents.get('editableForUpdate') ||
      (boolean) layoutComponents.get('editableForNew');
    System.debug('isEditable ===>' + isEditable);
    List<Map<String, object>> itemList = new List<Map<String, object>>();
    Map<String, object> item = new Map<String, object>();
    item.put('layoutItems', layoutComponentsList);
    itemList.add(item);
    useHeader = true;
    List<Map<String, object>> sectionList = new List<Map<String, object>>();
    Map<String, object> section = new Map<String, object>();
    section.put('heading', '');
    section.put('useHeading', useHeader);
    section.put('columns', 1);
    section.put('useCollapsibleSection', true);
    section.put('layoutRows', itemList);
    sectionList.add(section);

    Map<String, Object> layoutSection = new Map<String, Object>();
    layoutSection.put('layouts', '123');
    layoutSection.put('editLayoutSections', sectionList);
    String layoutSectionJson = JSON.serialize(layoutSection);
    LayoutDescriberHelper.ControllerUtil();
    Test.setMock(
      HttpCalloutMock.class,
      new TestDataUtility.BaseHttpMock(layoutSectionJson, 'OK', '200')
    );
    Test.startTest();
    LayoutDescriberHelper.describeSectionWithFieldsWrapper(
      recordTypeId,
      objectType,
      userMode
    );
    LayoutDescriberHelper.describeSectionWithFieldsWrapper(
      null,
      objectType,
      userMode
    );
    LayoutDescriberHelper.describeSectionWithFields(
      recordTypeId,
      objectType,
      userMode
    );
    LayoutDescriberHelper.getLayoutSchema(recordTypeId, objectType, userMode);
    LayoutDescriberHelper.getUrlPrefix();
    Test.stopTest();
  }
}