@isTest
private class NFM511ControllerTest {

    @IsTest
	static void TestMethod01() {
        List<BatchIF_Transfer__c> NFM511GainEndTimeTransfers = new List<BatchIF_Transfer__c>();
		BatchIF_Transfer__c transfer2 = new BatchIF_Transfer__c();
		transfer2.Table__c          = 'NFM511GainEndTime';
		transfer2.NFM501_Gain_End_Time__c = Datetime.now();
		NFM511GainEndTimeTransfers.add(transfer2);
		insert NFM511GainEndTimeTransfers;

		List<BatchIF_Transfer__c> NFM511TokenTransfers = new List<BatchIF_Transfer__c>();
		BatchIF_Transfer__c transfer3 = new BatchIF_Transfer__c();
		transfer3.Table__c          = 'NFM511Token';
		transfer3.NFM501_Token__c = null;
		NFM511TokenTransfers.add(transfer3);
		insert NFM511TokenTransfers;

        BatchIF_Log__c rowData = new BatchIF_Log__c();
		rowData.Type__c = 'NFM511';
		rowData.RowDataFlg__c = true;
        rowData.retry_cnt__c = 0;
		// rowData.MessageGroupNumber__c = transfer1.Internal_Value__c;
		insert rowData;

		BatchIF_Log__c iflog = new BatchIF_Log__c();
		iflog.Type__c = 'NFM511';
		iflog.RowDataFlg__c = false;
		iflog.Log__c = ' ';
		iflog.ErrorLog__c = ' ';
		// iflog.MessageGroupNumber__c = rowData.MessageGroupNumber__c;
		insert iflog;

        BatchIF_Log__c rowData1 = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c,
		                          Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c,
		                          Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c,
		                          NFM501Future_Count__c,
		                          NFM501_Web_Annex_Count__c from BatchIF_Log__c
		                          where RowDataFlg__c = true];
		BatchIF_Log__c iflog1 = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c,
		                        Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c,
		                        Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c,
		                        NFM501Future_Count__c,
		                        NFM501_Web_Annex_Count__c from BatchIF_Log__c Limit 1];

        // String tokennew = NFM511Controller.getZCToken();

        Test.startTest();
        NFM511Controller.sendRequest(rowData.Id, iflog.Id);
        Test.stopTest();
	}

    @IsTest
    static void TestMethod02() {
        List<BatchIF_Transfer__c> NFM511GainEndTimeTransfers = new List<BatchIF_Transfer__c>();
		BatchIF_Transfer__c transfer2 = new BatchIF_Transfer__c();
		transfer2.Table__c          = 'NFM511GainEndTime';
		transfer2.NFM501_Gain_End_Time__c = Datetime.now();
		NFM511GainEndTimeTransfers.add(transfer2);
		insert NFM511GainEndTimeTransfers;

		List<BatchIF_Transfer__c> NFM511TokenTransfers = new List<BatchIF_Transfer__c>();
		BatchIF_Transfer__c transfer3 = new BatchIF_Transfer__c();
		transfer3.Table__c          = 'NFM511Token';
		transfer3.NFM501_Token__c = null;
        transfer3.CreatedDate = Date.today().addDays(-3);
        transfer3.LastModifiedDate = Date.today().addDays(-2);
		NFM511TokenTransfers.add(transfer3);
		insert NFM511TokenTransfers;

        BatchIF_Log__c rowData = new BatchIF_Log__c();
		rowData.Type__c = 'NFM511';
		rowData.RowDataFlg__c = true;
        rowData.retry_cnt__c = 0;
		// rowData.MessageGroupNumber__c = transfer1.Internal_Value__c;
		insert rowData;

		BatchIF_Log__c iflog = new BatchIF_Log__c();
		iflog.Type__c = 'NFM511';
		iflog.RowDataFlg__c = false;
		iflog.Log__c = ' ';
		iflog.ErrorLog__c = ' ';
		// iflog.MessageGroupNumber__c = rowData.MessageGroupNumber__c;
		insert iflog;

        BatchIF_Log__c rowData1 = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c,
		                          Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c,
		                          Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c,
		                          NFM501Future_Count__c,
		                          NFM501_Web_Annex_Count__c from BatchIF_Log__c
		                          where RowDataFlg__c = true];
		BatchIF_Log__c iflog1 = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c,
		                        Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c,
		                        Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c,
		                        NFM501Future_Count__c,
		                        NFM501_Web_Annex_Count__c from BatchIF_Log__c Limit 1];

        // String tokennew = NFM511Controller.getZCToken();
		//111111
		// String token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzeXN0ZW1JZCI6IjEwMDEiLCJ1c2VyX25hbWUiOiIxMzY5MDAwMDAxMiIsInVzZXJOYW1lIjoiMTM2OTAwMDAwMTIiLCJsb2dpbk5vIjoiMDRjNzQ4YWYyODMzNGUwMWE2ZmQ2ZTgxZjA0ZmExODgiLCJhdXRob3JpdGllcyI6WyIxMDAxNzMiXSwiY2xpZW50X2lkIjoiZUNsb3VkIiwicmVhbE5hbWUiOiLlpaXliKnlt7Tmlq8iLCJncmFudF90eXBlIjoicGFzc3dvcmQiLCJ0b2tlblZlcnNpb24iOm51bGwsInNjb3BlIjpbIjEwMDEiXSwidGVsIjoiMTM2OTAwMDAwMTIiLCJpZCI6IjE2ODkxNzM5NDQ3Mzg4MTE5MDYiLCJleHAiOjE2OTY5MjkwMTQsImp0aSI6IjUyOWNjY2QyLTg1OTctNDdiMS04MDYyLWIzNWE0MWE2OGFkOSJ9.gQqYsP50Qu31CNbd_YxMZIQyw5Vi1T7LaBZ3vUL3I48';
		// String loginNo = '04c748af28334e01a6fd6e81f04fa188';
		// String systemId = '1001';
		// String pindex = '2';
		// String yestoday = system.now().format('yyyy-MM-dd') + '%2000:00:00';
		// String totoday = system.now().format('yyyy-MM-dd') + '%2023:59:55';
		// //1111111
		// NFM511Controller.sendToZCRet(token, loginNo, systemId, pindex, yestoday,totoday);
        Test.setMock(HttpCalloutMock.class, new NFM501HttpCallMock());
        Test.startTest();
        NFM511Controller.sendRequest(rowData.Id, iflog.Id);
        System.enqueueJob(new NFM511Controller());
        Test.stopTest();
	}

    static testMethod void TestMethod03() {
        List<BatchIF_Transfer__c> NFM511GainEndTimeTransfers = new List<BatchIF_Transfer__c>();
		BatchIF_Transfer__c transfer2 = new BatchIF_Transfer__c();
		transfer2.Table__c          = 'NFM511GainEndTime';
		transfer2.NFM501_Gain_End_Time__c = Datetime.now();
		NFM511GainEndTimeTransfers.add(transfer2);
		insert NFM511GainEndTimeTransfers;

		List<BatchIF_Transfer__c> NFM511TokenTransfers = new List<BatchIF_Transfer__c>();
		BatchIF_Transfer__c transfer3 = new BatchIF_Transfer__c();
		transfer3.Table__c          = 'NFM511Token';
		transfer3.NFM501_Token__c = null;
        transfer3.CreatedDate = Date.today().addDays(-3);
        transfer3.LastModifiedDate = Date.today().addDays(-2);
		NFM511TokenTransfers.add(transfer3);
		insert NFM511TokenTransfers;

        BatchIF_Log__c rowData = new BatchIF_Log__c();
		rowData.Type__c = 'NFM511';
		rowData.RowDataFlg__c = true;
        rowData.retry_cnt__c = 0;
		// rowData.MessageGroupNumber__c = transfer1.Internal_Value__c;
		insert rowData;

		BatchIF_Log__c iflog = new BatchIF_Log__c();
		iflog.Type__c = 'NFM511';
		iflog.RowDataFlg__c = false;
		iflog.Log__c = ' ';
		iflog.ErrorLog__c = ' ';
		// iflog.MessageGroupNumber__c = rowData.MessageGroupNumber__c;
		insert iflog;

        BatchIF_Log__c rowData1 = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c,
		                          Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c,
		                          Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c,
		                          NFM501Future_Count__c,
		                          NFM501_Web_Annex_Count__c from BatchIF_Log__c
		                          where RowDataFlg__c = true];
		BatchIF_Log__c iflog1 = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c,
		                        Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c,
		                        Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c,
		                        NFM501Future_Count__c,
		                        NFM501_Web_Annex_Count__c from BatchIF_Log__c Limit 1];

		Test.setMock(HttpCalloutMock.class, new HttpMock());
        // String tokennew = NFM511Controller.getZCToken();
		//111111
		String token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzeXN0ZW1JZCI6IjEwMDEiLCJ1c2VyX25hbWUiOiIxMzY5MDAwMDAxMiIsInVzZXJOYW1lIjoiMTM2OTAwMDAwMTIiLCJsb2dpbk5vIjoiMDRjNzQ4YWYyODMzNGUwMWE2ZmQ2ZTgxZjA0ZmExODgiLCJhdXRob3JpdGllcyI6WyIxMDAxNzMiXSwiY2xpZW50X2lkIjoiZUNsb3VkIiwicmVhbE5hbWUiOiLlpaXliKnlt7Tmlq8iLCJncmFudF90eXBlIjoicGFzc3dvcmQiLCJ0b2tlblZlcnNpb24iOm51bGwsInNjb3BlIjpbIjEwMDEiXSwidGVsIjoiMTM2OTAwMDAwMTIiLCJpZCI6IjE2ODkxNzM5NDQ3Mzg4MTE5MDYiLCJleHAiOjE2OTY5MjkwMTQsImp0aSI6IjUyOWNjY2QyLTg1OTctNDdiMS04MDYyLWIzNWE0MWE2OGFkOSJ9.gQqYsP50Qu31CNbd_YxMZIQyw5Vi1T7LaBZ3vUL3I48';
		String loginNo = '04c748af28334e01a6fd6e81f04fa188';
		String systemId = '1001';
		String pindex = '2';
		String yestoday = system.now().format('yyyy-MM-dd') + '%2000:00:00';
		String totoday = system.now().format('yyyy-MM-dd') + '%2023:59:55';
		//1111111
		// NFM511Controller.sendToZCRet(token, loginNo, systemId, pindex, yestoday,totoday);
        // Test.setMock(HttpCalloutMock.class, new NFM501HttpCallMock());
        Test.startTest();
        NFM511Controller.sendRequest(rowData.Id, iflog.Id);
        System.enqueueJob(new NFM511Controller());
        Test.stopTest();
	}

	static testMethod void TestMethod04() {
		Test.setMock(HttpCalloutMock.class, new HttpMock());

		String token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzeXN0ZW1JZCI6IjEwMDEiLCJ1c2VyX25hbWUiOiIxMzY5MDAwMDAxMiIsInVzZXJOYW1lIjoiMTM2OTAwMDAwMTIiLCJsb2dpbk5vIjoiMDRjNzQ4YWYyODMzNGUwMWE2ZmQ2ZTgxZjA0ZmExODgiLCJhdXRob3JpdGllcyI6WyIxMDAxNzMiXSwiY2xpZW50X2lkIjoiZUNsb3VkIiwicmVhbE5hbWUiOiLlpaXliKnlt7Tmlq8iLCJncmFudF90eXBlIjoicGFzc3dvcmQiLCJ0b2tlblZlcnNpb24iOm51bGwsInNjb3BlIjpbIjEwMDEiXSwidGVsIjoiMTM2OTAwMDAwMTIiLCJpZCI6IjE2ODkxNzM5NDQ3Mzg4MTE5MDYiLCJleHAiOjE2OTY5MjkwMTQsImp0aSI6IjUyOWNjY2QyLTg1OTctNDdiMS04MDYyLWIzNWE0MWE2OGFkOSJ9.gQqYsP50Qu31CNbd_YxMZIQyw5Vi1T7LaBZ3vUL3I48';
		String loginNo = '04c748af28334e01a6fd6e81f04fa188';
		String systemId = '1001';
		String pindex = '2';
		String yestoday = system.now().format('yyyy-MM-dd') + '%2000:00:00';
		String totoday = system.now().format('yyyy-MM-dd') + '%2023:59:55';
        Test.startTest();
		NFM511Controller.sendToZCRet(token, loginNo, systemId, pindex, yestoday,totoday);
        Test.stopTest();
	}

	class HttpMock implements HttpCalloutMock{
        
        public HTTPResponse respond(HTTPRequest request) {
        // 创建一个假的回应
        System.debug('------------------------------------------------------');
        HttpResponse response = new HttpResponse();
        string body = '';
        system.debug(request.getEndpoint());
        if(request.getEndpoint().contains('token')){
            system.debug('url=token');
            response.setHeader('Content-Type', 'application/json');
      body='{ "message": "", "object": "freqfewqfewewfewfew", "status": "", "success": true, "timestamp": 0, "txId": "" }';          
        } else if(request.getEndpoint().contains('insert')){
            system.debug('url=Insert');
            response.setHeader('Content-Type', 'application/json');
      body='{ "message": "", "object": [ { "dataId": "123456", "directShippmentAddress": "", "directShippmentAddressEncrypt": "", "isDelete": 0, "phoneNumber": "", "phoneNumberEncrypt": "", "sfRecordId": "a2R1m0000007BPD" } ], "status": "", "success": true, "timestamp": 0, "txId": "" }';          
        } else if(request.getEndpoint().contains('update')){
            system.debug('url=update');
            response.setHeader('Content-Type', 'application/json');
      body='{ "message": "", "object": [ { "dataId": "123456", "directShippmentAddress": "", "directShippmentAddressEncrypt": "", "isDelete": 0, "phoneNumber": "", "phoneNumberEncrypt": "", "sfRecordId": "a2R1m0000007BPD" } ], "status": "", "success": true, "timestamp": 0, "txId": "" }';          
        } else{
          
        }
        
        response.setBody(body);
        response.setStatus('OK');
        response.setStatusCode(200);
        return response;
        // }
    }
    }

    // @IsTest
    // static void TestMethod03() {
        
	// }

}