@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();
        }
    }
}