@isTest
private class LexRentalApplyControllerLWTTest {
	static Id raId = null;
        static testMethod void testMethod1() {
		Address_Level__c al = new Address_Level__c();
        al.Name = '東京';
        al.Level1_Code__c = 'CN-99';
        al.Level1_Sys_No__c = '999999';
        insert al;
        // 市
        Address_Level2__c al2 = new Address_Level2__c();
        al2.Level1_Code__c = 'CN-99';
        al2.Level1_Sys_No__c = '999999';
        al2.Level1_Name__c = '東京';
        al2.Name = '渋谷区';
        al2.Level2_Code__c = 'CN-9999';
        al2.Level2_Sys_No__c = '9999999';
        al2.Address_Level__c = al.id;
        insert al2;
        // 病院を作る
        Account hospital = new Account();
        hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id;
        hospital.Name = 'test hospital';
        hospital.Is_Active__c = '有効';
        hospital.Attribute_Type__c = '卫生部';
        hospital.Speciality_Type__c = '综合医院';
        hospital.Grade__c = '一级';
        hospital.OCM_Category__c = 'SLTV';
        hospital.Is_Medical__c = '医疗机构';
        hospital.State_Master__c = al.id;
        hospital.City_Master__c = al2.id;
        hospital.Town__c = '东京';
        insert hospital;

        // 戦略科室を得る
        Account[] strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_OTH'];
        // 診療科を作る
        Account dep = new Account();
        dep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_OTH'].id;
        dep.Name = 'test dep';
        dep.AgentCode_Ext__c = '9999998';
        dep.ParentId = strategicDep[0].Id;
        dep.Department_Class__c = strategicDep[0].Id;
        dep.Hospital__c = hospital.Id;

        Account dep2 = new Account();
        dep2.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_OTH'].id;
        dep2.Name = 'test dep2';
        dep2.AgentCode_Ext__c = System.Label.Account_Asset_FJZ;
        dep2.ParentId = strategicDep[0].Id;
        dep2.Department_Class__c = strategicDep[0].Id;
        dep2.Hospital__c = hospital.Id;
        insert new List<Account>{dep, dep2};

        // 产品
        Product2 pro1 = new Product2(Name='name01',IsActive=true,Family='GI',
                Fixture_Model_No__c='n01',Serial_Lot_No__c='S/N tracing',
                Fixture_Model_No_T__c = 'n01', Asset_Model_No__c = 'Pro1',
                ProductCode_Ext__c='pc01',Manual_Entry__c=false,ProductCode='BP1');
        Product2 pro2 = new Product2(Name='name02',IsActive=true,Family='GI',
                Fixture_Model_No__c='n02',Serial_Lot_No__c='S/N tracing',
                Fixture_Model_No_T__c = 'n02', Asset_Model_No__c = 'Pro2',
                ProductCode_Ext__c='pc02',Manual_Entry__c=false,ProductCode='BP2');
        insert new Product2[] {pro1, pro2};

        //备品借出申请
        Rental_Apply__c raObj = new Rental_Apply__c();
        raObj.Name = 'testra';
        raObj.Product_category__c = 'GI';
        raObj.Demo_purpose1__c = '其他';
        raObj.demo_purpose2__c = '其他';
        raObj.Person_In_Charge__c = Userinfo.getUserId();
        raObj.applyUser__c = Userinfo.getUserId();
        Map<String,Schema.RecordTypeInfo>  DEVELOPERNAMEMAP  = Schema.SObjectType.Rental_Apply__c.getRecordTypeInfosByDeveloperName();
        raObj.RecordTypeId = DEVELOPERNAMEMAP.get('AgencyRequest').getRecordTypeId();
        raObj.Demo_purpose_text__c = '123';
        raObj.Request_shipping_day__c = Date.toDay();
        raObj.Request_return_day__c = Date.toDay();

        raObj.direct_send__c = '上门自提';
        raObj.Loaner_received_staff__c = '王五';
        raObj.Loaner_received_staff_phone__c = '110';
        raObj.NoDirectReason__c = '紧急情况同城自提配送至医院';
        raObj.pickup_time__c = System.now();
        insert raObj;
        raId = raObj.Id;


        LexRentalApplyControllerLWT c=new LexRentalApplyControllerLWT();
        LexRentalApplyControllerLWT.initFromCancelSubmitButton('');
        LexRentalApplyControllerLWT.initFromCancelSubmitButton(raObj.Id);
        LexRentalApplyControllerLWT.selectRentalApplyEquipmentSetDetailByRacId(raObj.Id);
        LexRentalApplyControllerLWT.selectQISReportById(raObj.Id);
        LexRentalApplyControllerLWT.selectRepairById(raObj.Id);
        LexRentalApplyControllerLWT.selectCampaignById(raObj.Id);
        LexRentalApplyControllerLWT.selectRentalApplyEquipmentSetByRacId(raObj.Id);
        LexRentalApplyControllerLWT.selectRentalApplyById(raObj.Id);
        LexRentalApplyControllerLWT.selectUserById(raObj.Id);
        LexRentalApplyControllerLWT.selectQISreportById2(raObj.Id);
        LexRentalApplyControllerLWT.getUserId();
        LexRentalApplyControllerLWT.getProfileId();
        LexRentalApplyControllerLWT.getMainProfileId();
        LexRentalApplyControllerLWT.getProfileName();
        LexRentalApplyControllerLWT.RentalApplyJumpUserId();
        LexRentalApplyControllerLWT.updateRentalApplyOPD(raObj.Id, '申请中（OPD未通过）');
        List<String> userAccess = new List<String>();
		String t=raObj.applyUser__c+'_Edit';
		userAccess.add(t);
        LexRentalApplyControllerLWT.setSObjectShare('Rental_Apply__Share','ApplyUserShare__c','raObj.Id', userAccess,raObj.OwnerId);
        SYstem.debug('=============================debug==============================');
        System.debug(LexRentalApplyControllerLWT.updateRentalApplyC(raObj.Id+'','SalesManagerSubmitC','SalesManagerSubmitC','SalesManagerSubmitC','SalesManagerSubmitC','SalesManagerSubmitC'));
        LexRentalApplyControllerLWT.updateRentalApplyC('d','SalesManagerSubmitC','SalesManagerSubmitC','SalesManagerSubmitC','SalesManagerSubmitC','SalesManagerSubmitC');
    }
}