/*
 * Author: Guo, Aline Yaying
 * Created Date: 03/22/2022
 * Purpose: Test Class
 * History: 
 *      03/22/2022 - Guo, Aline Yaying - Initial Code.
 * 
 * */
@isTest
private class NewRepairControllerTest {
    static testMethod void testMethod1() {
        //1. 准备数据
        List<String> strList = new List<String>();
        strList.add('Repair__c');
        strList.add('Address__c');
        strList.add('Contact');
        strList.add('RepairSubOrder__c');
        strList.add('Repair__cV2');
        TestDataUtility.CreatePIPolicyConfigurations(strList);
        Test.setMock(HttpCalloutMock.class, new TestDataUtility.CreateMetaDataUtilityHttpMock());
        Repair__c repTest = TestDataUtility.CreateRepairs(1)[0];
        //2. 运行代码逻辑
        Test.startTest();
        ApexPages.StandardController con =  new ApexPages.StandardController(repTest);
        NewRepairController repDetail = new NewRepairController(con);
        // Map<String,Object> mapTest = new Map<String,Object>();
        // mapTest.put('Contacts__c',repTest );  
        String repJson = '{\"Repair_Shipped_DateTime__c\":\"\",\"Request_approval_day__c\":\"\",\"Discount_Price__c\":\"\",\"Source_QIS__c\":\"\",\"Old_Name__c\":\"\",\"Exc_work_location__c\":false,\"OTSRepairOrder__c\":\"\",\"Advance_Payment_Flag__c\":false,\"Delivered_Product__c\":\"02i10000004FhIt\",\"PaperRepairRequestNo__c\":\"\",\"Hospital__c\":\"000000000000000\",\"SAPRepairNo__c\":\"\",\"Department_Class__c\":\"000000000000000\",\"RepairOrderStatusCode__c\":\"\",\"Account__c\":\"0011000000VATK6\",\"RepairCostType__c\":\"无偿\",\"Dealer__c\":\"000000000000000\",\"RepairOrderStatusName__c\":\"\",\"Incharge_Staff__c\":\"000000000000000\",\"ReRepairObject_result__c\":false,\"Incharge_Staff_Contact__c\":\"000000000000000\",\"Repair_Rank__c\":\"\",\"SalesOfficeCode_selection__c\":\"北京\",\"Address_type__c\":\"\",\"On_site_repair__c\":\"RC修理\",\"Recall_Correspondence_Apply__c\":\"\",\"Returns_Product_way__c\":\"返送办事处\",\"ReturnType__c\":\"\",\"IfCheckFixture__c\":false,\"DW_Sign_Txt__c\":false,\"Repair_Detail__c\":\"test\",\"RepairApplicant__c\":\"\",\"RepairApplicantHospital__c\":\"\",\"RepairApplicantDepartment__c\":\"\",\"address_Contacts__c\":\"\",\"address_Telephone__c\":\"\",\"address_Contacts_Name__c\":\"\",\"address_City__c\":\"\",\"Detailed_Address__c\":\"\",\"address_ZipCode__c\":\"\",\"LogisticsLatestStatus__c\":\"\",\"LogisticsSendTime__c\":\"\",\"DeliveryLogisticsMode__c\":\"快递\",\"LogisticsReceiveTime__c\":\"\",\"DeliveryLogisticsNo__c\":\"\",\"engineerSendDate__c\":\"\",\"DeliveryLogisticsAnnotation__c\":\"\",\"ReturnOrderLatestStatus__c\":\"\",\"ReturnOrderSendTime__c\":\"\",\"ReturnOrderNo__c\":\"\",\"ReturnOrderReceiveTime__c\":\"\",\"ReturnLogisticsLatestStatus__c\":\"\",\"ReturnLogisticsDeliveryTime__c\":\"\",\"ReturnLogisticsNo__c\":\"\",\"ReturnLogisticsSigningTime__c\":\"\",\"DateReceiptQuestions__c\":\"2022/03/28\",\"BreakORFallOff__c\":\"\",\"DelayReportReason__c\":\"\",\"UseFailProductFinish__c\":\"\",\"ifDeadHurt__c\":\"\",\"SupportingProducts__c\":\"\",\"ProblemOccurred__c\":\"\",\"AfterFailureInformation__c\":\"\",\"ProblemOccurredSelect__c\":\"\",\"Delay15Min__c\":\"\",\"ProductFailureRelated__c\":\"\",\"InformationFrom__c\":\"\",\"ReportAdverseEvents__c\":\"\",\"FailureQInHospital__c\":\"\",\"WhatProject__c\":\"\",\"OperationOrExaminationName__c\":\"\",\"Maintenance_Contract__c\":\"000000000000000\",\"VM_Maintenance_Contract__c\":\"000000000000000\",\"MaintenanceContractType__c\":\"\",\"Repair_Quotation_Id__c\":\"000000000000000\",\"Repair_Estimation_Followed_By__c\":\"\",\"Repair_Estimation_Follow_Date__c\":\"\",\"Failure_Source__c\":\"\",\"InspectionResultFlag__c\":\"\",\"InspectionComment__c\":\"\",\"InspectionFailureCause__c\":\"\",\"Billing_Amount__c\":\"\",\"CurrentPeriodPaymentAmount__c\":\"\",\"Paid_Amount__c\":\"\",\"LastIssueCumulativePaybackAmount__c\":\"0.00\",\"hospitalQuotationText__c\":\"\",\"Receipt_category__c\":\"\",\"Received_money_day_finacial_dapt__c\":\"\",\"Request_yanshoudan_PDF__c\":false,\"Confirmed_Collect_money__c\":false,\"Confirmed_received_document__c\":false,\"Collect_money_check1__c\":\"\",\"Sheet_mating_staff1__c\":\"\",\"Receipt_comment__c\":\"\",\"Whether_collect_repair_money_or_not__c\":false,\"Collection_Status__c\":\"\",\"Forecast_Collection_Date__c\":\"\",\"Uncollect_fee_comment__c\":\"\",\"Repair_Collection_Followed_By__c\":\"\",\"BilltoPartyNoAccount__c\":\"\",\"Repair_Collection_Follow_Date__c\":\"\",\"Reason_cannot_collect_repair_fee__c\":\"\",\"Failure_Occurrence_Date__c\":\"2022/03/28\",\"Status__c\":\"草案中\",\"Failure_Occurrence_Date2__c\":\"\",\"Repair_Completed_Date__c\":\"\",\"RepairTime__c\":\"\",\"Repair_Final_Inspection_Date__c\":\"\",\"ReceiverTime__c\":\"\",\"Repair_Final_Inspection_DateTime__c\":\"\",\"PlannedVisitDay__c\":\"\",\"Repair_Shipped_Date__c\":\"\",\"ActualVisitDateFirst__c\":\"\",\"ActualVisitDateSecond__c\":\"\",\"ReturnOrderReceiveDate__c\":\"\",\"ActualVisitDateThird__c\":\"\",\"Repair_Returned_To_HP_Date__c\":\"\",\"SubOrderCompleteDate__c\":\"\",\"Facility_Return_Receipt_Collection_reque__c\":\"\",\"SubOrderCreatedDate__c\":\"\",\"Receipt_received_date__c\":\"\",\"On_Site_Repair_Order_Date__c\":\"\",\"Billing_Received_Date__c\":\"\",\"Send_To_RC_Date__c\":\"\",\"Received_Date__c\":\"\",\"Repair_Ordered_Date__c\":\"\",\"Facility_Return_Receipt_Collection_Date__c\":\"\",\"Repair_Ordered_DateTime__c\":\"\",\"repair_cancel_date__c\":\"\",\"Repair_Inspection_Date__c\":\"\",\"RepairOrder_Complete_Day__c\":\"\",\"Agreed_Date__c\":\"\",\"Repair_Firstestimated_Date__c\":\"\",\"RcSorcDate__c\":\"\",\"RcOgzDate__c\":\"\",\"SorcOgzDate__c\":\"\",\"SorcAcceptDate__c\":\"\",\"OgzAcceptDate__c\":\"\",\"part_arrangement_complete__c\":\"\",\"Repair_Start_Date__c\":\"\",\"Planned_Repair_Completed_Date__c\":\"\",\"Return_Without_Repair__c\":false,\"Return_Without_Repair_IF__c\":false,\"CancellationReason__c\":\"\",\"Return_Without_Repair_Request_Date__c\":\"\",\"Return_Without_Repair_Date__c\":\"\",\"IncorrectDataComment__c\":\"\",\"SAP_not_accept_repair_result__c\":\"\",\"Quotation_agree_cancel_date__c\":\"\",\"Repair_Source__c\":\"\",\"RepairSubOrder__c\":\"000000000000000\",\"On_Call_ID__c\":\"000000000000000\",\"QIS_ID__c\":\"000000000000000\",\"InsReport__c\":\"000000000000000\",\"ASReportedCode__c\":\"\",\"Repair_ConfirmationDate__c\":\"\",\"PAE_Determine__c\":\"\",\"Repair_Authenticator__c\":\"000000000000000\",\"Aware_date__c\":\"\",\"MBC_AwareDate__c\":\"\",\"OCSMAdministrativeReportDate__c\":\"\",\"OCSMAdministrativeReportStatus__c\":\"\",\"OCSMAdministrativeReportNumber__c\":\"\",\"ASReportedCodeAC__c\":\"\",\"OCSM_RC_CordingDate__c\":\"\",\"PAE_DetermineAC__c\":\"\",\"OCSM_RC_CordingUser__c\":\"000000000000000\",\"IISE_confirmed_person__c\":\"\",\"IISE_confirmed_day__c\":\"\",\"Complaint_Number__c\":\"\",\"OSH_ConfirmationDate__c\":\"\",\"if_Repair_Allowed__c\":\"\",\"OSH_Affirmant__c\":\"000000000000000\",\"NotAllowedReason__c\":\"\",\"OSHRAConfirmDate__c\":\"\",\"OSHRAConfirmUser__c\":\"000000000000000\",\"CFDA_No_Hand__c\":\"\",\"ProduceCompany_hand__c\":\"\",\"FSE_ApplyForRepair_time__c\":\"\",\"FSE_owner_Salesdepartment__c\":\"\",\"SAP_Transfer_time__c\":\"\",\"Repair_cost__c\":\"\",\"Service_contract_judege_day__c\":\"\",\"Repair_cost_date__c\":\"\",\"Invalid_check__c\":false,\"Offer_Rental_New__c\":false,\"Delete_Flag__c\":false,\"if_Rental_Apply__c\":false,\"NFM108_Receipt__c\":\"000000000000000\",\"NFM105_MessageGroupNumber__c\":\"\",\"Latest_Collect_Date_Priority__c\":\"\",\"Rental_Apply_Equipment_Set_Detail_Id__c\":\"\",\"Agreed_Date2__c\":\"\",\"Rental_Apply_Equipment_Set_Detail__c\":\"000000000000000\",\"Agreed_Date_Cancel__c\":\"\",\"TransferApplyDetail__c\":\"\",\"StatusUpdateTime__c\":\"\",\"TransferApplyDetail_Id__c\":\"\",\"AsyncData__c\":false,\"ETQ_UPLOAD_STATUS__c\":\"\",\"AWS_Interface_Time__c\":\"\",\"ETQ_UPLOAD_MESSAGE__c\":\"\",\"INTERFACE_RECORD_ID__c\":\"\",\"PAE_reappear_confirm__c\":\"\",\"OCSM_Manager_Mail_XB__c\":\"\",\"OCSM_Manager_Mail__c\":\"\",\"PAE_email__c\":\"\",\"Service_Assistant_Text__c\":\"\",\"AC_PAED__c\":\"\",\"RC_PAED__c\":\"\",\"work_location_select__c\":\"北京办事处\",\"Address_Contacts_Encrypt__c\":\"\",\"Address_Contacts_Name_Encrypt__c\":\"\",\"Address_Telephone_Encrypt__c\":\"\",\"Address_ZipCode_Encrypt__c\":\"\",\"Detailed_Address_Encrypt__c\":\"\",\"Repair_Applicant_Encrypt__c\":\"\",\"AWS_Data_Id__c\":\"958062858866786305\"}';
        //"Repair_Shipped_DateTime__c":"2022-03-28T09:33:31.955Z",
        NewRepairController.saveRepair(repJson,'avgwshDFcxAS',True);
        NewRepairController.saveRepair(repJson,'avgwshDFcxAS',False);
        Test.stopTest();
    }
    static testMethod void testMethod2() {
        String recordTypeId = Schema.SObjectType.Repair__c.getRecordTypeInfosByDeveloperName().get('Repair').getRecordTypeId();
        List<String> strList = new List<String>();
        strList.add('Repair__c');
        strList.add('Address__c');
        strList.add('Contact');
        strList.add('RepairSubOrder__c');
        strList.add('Repair__cV2');
        TestDataUtility.CreatePIPolicyConfigurations(strList);
        Test.setMock(HttpCalloutMock.class, new TestDataUtility.CreateMetaDataUtilityHttpMock());
        String url = ApexPages.currentPage().getParameters().put('00N10000006P6SM','北京');
        url = ApexPages.currentPage().getParameters().put('00N10000002FH86','RC修理');
        url = ApexPages.currentPage().getParameters().put('00N10000006P6Rn','北京办事处');
        url = ApexPages.currentPage().getParameters().put('RecordType',recordTypeId);
        
        url =  ApexPages.currentPage().getParameters().put('CF00N10000002Dx66_lkid','0011000000V9TM6');
        url =  ApexPages.currentPage().getParameters().put('CF00N10000002Dx66','%E5%89%91%E9%98%81%E5%8E%BF%E4%BA%BA%E6%B0%91%E5%8C%BB%E9%99%A2');
        url =  ApexPages.currentPage().getParameters().put('CF00N10000002Dx5t_lkid','0011000000VAFmh');
        url =  ApexPages.currentPage().getParameters().put('CF00N10000002Dx5t','%E5%89%91%E9%98%81%E5%8E%BF%E4%BA%BA%E6%B0%91%E5%8C%BB%E9%99%A2+ET');
        url =  ApexPages.currentPage().getParameters().put('CF00N10000002Dx5n_lkid','0011000000VAFmh');
        url =  ApexPages.currentPage().getParameters().put('CF00N10000002Dx5n','%E5%89%91%E9%98%81%E5%8E%BF%E4%BA%BA%E6%B0%91%E5%8C%BB%E9%99%A2+ET');
        url =  ApexPages.currentPage().getParameters().put('CF00N10000002Dx1X_lkid','02i10000004FhGu');
        url =  ApexPages.currentPage().getParameters().put('CF00N10000002Dx1X','MH-443%3A%E5%90%B8%E5%BC%95%E6%8C%89%E9%92%AE');
        url =  ApexPages.currentPage().getParameters().put('00N10000002FH86','%e5%8f%aa%e4%bf%ae%e7%90%86');
        url =  ApexPages.currentPage().getParameters().put('00N10000006P6Rn','%E5%8C%97%E4%BA%AC%E5%8A%9E%E4%BA%8B%E5%A4%84');
        
        url = ApexPages.currentPage().getParameters().put('CF00N10000002FIJZ_lkid','a0f1000000cS7qH');
        url = ApexPages.currentPage().getParameters().put('CF00N10000002FIJZ','OCSM-%E8%A5%BF%E5%8C%97-153PA-07878');
        url = ApexPages.currentPage().getParameters().put('CF00N10000002Dx66_lkid','0011000000V9SnP');
        url = ApexPages.currentPage().getParameters().put('CF00N10000002Dx66','%E6%B7%AE%E6%BB%A8%E5%8E%BF%E4%BA%BA%E6%B0%91%E5%8C%BB%E9%99%A2');
        url = ApexPages.currentPage().getParameters().put('CF00N10000002Dx5t_lkid','0011000000V9ZEI');
        url = ApexPages.currentPage().getParameters().put('CF00N10000002Dx5t','%E6%B7%AE%E6%BB%A8%E5%8E%BF%E4%BA%BA%E6%B0%91%E5%8C%BB%E9%99%A2+%E6%B6%88%E5%8C%96%E7%A7%91');
        url = ApexPages.currentPage().getParameters().put('CF00N10000002Dx5n_lkid','0011000000VALNX');
        url = ApexPages.currentPage().getParameters().put('CF00N10000002Dx5n','%E6%B7%AE%E6%BB%A8%E5%8E%BF%E4%BA%BA%E6%B0%91%E5%8C%BB%E9%99%A2+%E6%B6%88%E5%8C%96%E7%A7%91+%E8%83%83%E9%95%9C%E5%AE%A4');
        url = ApexPages.currentPage().getParameters().put('CF00N10000002Dx1X_lkid','02i10000004ExNO');
        url = ApexPages.currentPage().getParameters().put('CF00N10000002Dx1X','GIF-H170%3A%E7%94%B5%E5%AD%90%E4%B8%8A%E6%B6%88%E5%8C%96%E9%81%93%E5%86%85%E7%AA%A5%E9%95%9C');
        url = ApexPages.currentPage().getParameters().put('CF00N10000002EMHw_lkid','00510000005sFUG');
        url = ApexPages.currentPage().getParameters().put('CF00N10000002EMHw','%E5%90%95%20%E5%85%A8%E5%A5%BD');
        url = ApexPages.currentPage().getParameters().put('00N10000002Dx5y','2020/08/05');
        url = ApexPages.currentPage().getParameters().put('00N10000006P6SM','%E9%83%91%E5%B7%9E');
        url = ApexPages.currentPage().getParameters().put('00N10000002FH86','%E4%BB%8EQIS');
        url = ApexPages.currentPage().getParameters().put('00N10000006P6Rn','%E5%8C%97%E4%BA%AC%E5%8A%9E%E4%BA%8B%E5%A4%84');
        url = ApexPages.currentPage().getParameters().put('00N1m000005gt1l','%E4%BB%8EQIS');
        url = ApexPages.currentPage().getParameters().put('00N10000006P1dw','121212');
        url = ApexPages.currentPage().getParameters().put('00N10000008rsVT','12');
        url = ApexPages.currentPage().getParameters().put('00N10000008rsVv','其他');
        url = ApexPages.currentPage().getParameters().put('00N10000008rsW5','是');
        

        
		Repair__c repTest = TestDataUtility.CreateRepairs(1)[0];
        url = ApexPages.currentPage().getParameters().put('retURL','%'+repTest.Id);
        Test.startTest();
        ApexPages.StandardController con =  new ApexPages.StandardController(new Repair__c());
        NewRepairController repDetail = new NewRepairController(con);
        Test.stopTest();
    }
    static testMethod void testMethod3(){
        List<String> strList = new List<String>();
        strList.add('Repair__c');
        strList.add('Repair__cV2');
        strList.add('Contact');
        strList.add('Address__c');
        TestDataUtility.CreatePIPolicyConfigurations(strList);
        ApexPages.StandardController con =  new ApexPages.StandardController(new Repair__c());
        try{
            NewRepairController controllerTest = new NewRepairController(con);
            controllerTest.awsToken = 'TestToken';
            controllerTest.RepairSubOrderAWSDataId = 'RepairSubOrderAWSDataId';
        }catch(Exception e){
            system.debug('Exception from insert repair:'+e.getMessage());
        }
        
        NewRepairController.EncryptUpdate('a0J1m000001QqX');
        NewRepairController.EncryptUpdate('a0J1m000001QqXk');
    }
}