@isTest
private class lexSearchAgencyHospitalControllerTest {
  @isTest
  static void testInit() {
    User myUser_test;
    Account myAccount2;
    Product2__c pro2;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET Email)'
      ];
      Product2 prod02 = new Product2(
        Name = 'Test02181',
        ProductCode = 'Test0218',
        Asset_Model_No__c = 'Test0218',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = 'Test002',
        Packing_list_manual__c = 12,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'tset8',
        Manual_Entry__c = false
      );
      pro2 = new Product2__c(
        Name = 'Pro002181',
        OT_CODE_Text__c = 'Test002181',
        Product2__c = prod02.Id
      );
      insert pro2;
      myAccount2 = new Account(
        name = 'Testaccount003',
        Dealer_discount__c = 20,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '2'
      );
      insert myAccount2;

      Contact core = new Contact(
        email = 'wan@salesforce.com',
        firstname = 'wan',
        lastname = 'Plumbers',
        accountid = myAccount2.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        UserPro_Type__c = 'ENG',
        Work_Location__c = '北京'
      );
      insert myUser_test;
      myUser_test.UserPro_Type__c = '';
      update myUser_test;
    }
    System.runAs(MyUser_Test) {
      System.Test.startTest();
      String accountId = myUser_test.accountid;
      String agencyProType = myUser_test.UserPro_Type__c;
      String searchName = '';
      List<Agency_Hospital_Link__c> ahlInfo = [
        SELECT Hospital__c, Hospital__r.Name
        FROM Agency_Hospital_Link__c
        WHERE Agency__c = :accountId AND Hosptial_Type__c != NULL
        LIMIT 1
      ];
      Set<Id> whoIds = new Set<Id>();
      for (Agency_Hospital_Link__c ahl : ahlInfo) {
        whoIds.add(ahl.Hospital__c);
        if (String.isBlank(searchName)) {
          searchName = ahl.Hospital__r.Name;
        }
      }
      Map<ID, Account> accInfo = new Map<ID, Account>(
        [
          SELECT Id, Name, State_Master__c, State_Master__r.Name
          FROM Account
          WHERE Id IN :whoIds
        ]
      );
      Map<String, object> data = new Map<String, object>();
      data.put('accInfo', accInfo);
      String ctype = 'ET';
      lexSearchAgencyHospitalController.init(ctype);
      lexSearchAgencyHospitalController.serContact(searchName, ctype);
      System.Test.stopTest();
    }
  }
}
