@isTest private class ReceivingNoteAcceptanceControllerTest { static ReceivingNoteTestDataFactory factory; /** @description 安装master数据 */ @testSetup static void setupMasterData(){ factory = new ReceivingNoteTestDataFactory(); factory.setupMasterData(); } /** @param typeStringListString 格式:'备品类型,管理种类;备品类型,管理种类...' @description 造出指定类型的清单数据,并插入数据库 */ static void setupTestData(String typeStringListString){ factory = new ReceivingNoteTestDataFactory(); if(String.isBlank(typeStringListString)){ typeStringListString = '固定资产,个体管理;附属品,个体管理;附属品,数量管理;耗材,数量管理;低值易耗品,数量管理'; } List typeStringList = typeStringListString.split(';'); factory.setupReceivingNoteData(typeStringList); } /** @description 初始化 */ static testMethod void unitTestInit() { setupTestData('固定资产,个体管理'); ReceivingNoteSummary__c rns = factory.rnsMap.get('固定资产,个体管理'); PageReference ref = new PageReference('/apex/ReceivingNoteAcceptance?id=' + rns.Id); Test.setCurrentPage(ref); ReceivingNoteAcceptanceController controller = new ReceivingNoteAcceptanceController(); Test.startTest(); controller.init(); System.assertEquals(1, controller.esdList.size()); Test.stopTest(); } /** @description 测试保存功能 */ static testMethod void unitTestSave(){ // 状态调整为已收货 setupTestData('固定资产,个体管理'); // 数据确认 ReceivingNoteDetail__c rnd = factory.rndMap.get('固定资产,个体管理'); //rnd.unknow_serial_NO_product__c = 'FALSE'; rnd.Loaner_accsessary__c = 'TRUE'; rnd.DataConfirmation__c = true; rnd.SerialNumber__c = null; upsert rnd Product_Serial_No__c; // 收货 ReceivingNoteSummary__c rns = factory.rnsMap.get('固定资产,个体管理'); rns.Received_Confirm_Time__c = System.Now(); rns.Package_Status__c = 'OK'; upsert rns Internal_Asset_number__c; PageReference ref = new PageReference('/apex/ReceivingNoteAcceptance?id=' + rns.Id); Test.setCurrentPage(ref); ReceivingNoteAcceptanceController controller = new ReceivingNoteAcceptanceController(); Test.startTest(); controller.init(); System.assertEquals(1, controller.esdList.size()); // 修改前 ReceivingNoteDetail__c rndPage = controller.esdList[0].rnd; System.assertEquals(null, rndPage.AcceptanceResult__c); System.assertEquals(null, rndPage.AcceptanceComments__c); System.assertEquals(null, rndPage.unknow_serial_NO_product__c); System.assertEquals(null, rndPage.SerialNumber__c); System.assertEquals(null, rndPage.PeriodOfUse_Final__c); // 勾选【无编号设备】, 不填写【机身编号】 rndPage.AcceptanceResult__c = 'OK' ; rndPage.AcceptanceComments__c = 'COMMENT'; rndPage.unknow_serial_NO_product__c = 'TRUE'; rndPage.SerialNumber__c = null; rndPage.PeriodOfUse_Final__c = System.today(); controller.save(); // 检查修改后结果 rnd = [ SELECT AcceptanceResult__c , AcceptanceComments__c , unknow_serial_NO_product__c , SerialNumber__c , PeriodOfUse_Final__c FROM ReceivingNoteDetail__c]; System.assertEquals('OK', rnd.AcceptanceResult__c); System.assertEquals('COMMENT', rnd.AcceptanceComments__c); System.assertEquals('TRUE', rnd.unknow_serial_NO_product__c); System.assertEquals(null, rnd.SerialNumber__c); System.assertEquals(System.today(), rnd.PeriodOfUse_Final__c); // 不勾选【无编号设备】, 填写【机身编号】 rndPage.AcceptanceResult__c = 'NG' ; rndPage.AcceptanceComments__c = 'COMMENT2'; rndPage.unknow_serial_NO_product__c = 'FALSE'; rndPage.SerialNumber__c = '123'; controller.save(); // 检查修改后结果 rnd = [ SELECT AcceptanceResult__c , AcceptanceComments__c , unknow_serial_NO_product__c , SerialNumber__c FROM ReceivingNoteDetail__c ]; System.assertEquals('NG', rnd.AcceptanceResult__c); System.assertEquals('COMMENT2', rnd.AcceptanceComments__c); System.assertEquals('FALSE', rnd.unknow_serial_NO_product__c); System.assertEquals('123', rnd.SerialNumber__c); Test.stopTest(); } /** @description 测试附属品调整, 在ReceivingNoteDetailSelectControllerTest中测试 */ static testMethod void unitTestAddAccessory(){ setupTestData('固定资产,个体管理'); ReceivingNoteSummary__c rns = factory.rnsMap.get('固定资产,个体管理'); PageReference ref = new PageReference('/apex/ReceivingNoteAcceptance?id=' + rns.Id); Test.setCurrentPage(ref); ReceivingNoteAcceptanceController controller = new ReceivingNoteAcceptanceController(); Test.startTest(); controller.init(); Test.stopTest(); } /** @description 测试detailEquals()方法 */ static testMethod void unitTestDetailEquals(){ ReceivingNoteDetail__c rnd1 = new ReceivingNoteDetail__c(); ReceivingNoteDetail__c rnd2 = new ReceivingNoteDetail__c(); Test.startTest(); ReceivingNoteAcceptanceController controller = new ReceivingNoteAcceptanceController(); rnd1.AcceptanceResult__c = 'OK'; rnd1.AcceptanceComments__c = 'COMMENT'; rnd1.Fixture_QRCode__c = 'QRCODE'; rnd1.Barcode__c = 'BARCODE'; rnd1.unknow_serial_NO_product__c='TRUE'; rnd1.SerialNumber__c = '123'; rnd2.AcceptanceResult__c = 'OK'; rnd2.AcceptanceComments__c = 'COMMENT'; rnd2.Fixture_QRCode__c = 'QRCODE'; rnd2.Barcode__c = 'BARCODE'; rnd2.unknow_serial_NO_product__c='TRUE'; rnd2.SerialNumber__c = '123'; rnd2.AcceptanceResult__c = 'NG'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.AcceptanceResult__c = 'OK'; rnd2.AcceptanceComments__c = 'COMMENT2'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.AcceptanceComments__c = 'COMMENT'; rnd2.unknow_serial_NO_product__c='FALSE'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.unknow_serial_NO_product__c='TRUE'; rnd2.SerialNumber__c = '321'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.SerialNumber__c = '123'; System.assertEquals(true, controller.detailEquals(rnd1,rnd2)); Test.stopTest(); } /** @description 测试detailEquals()方法 */ static testMethod void unitTestStringEquals(){ Test.startTest(); ReceivingNoteAcceptanceController controller = new ReceivingNoteAcceptanceController(); String s1 = 'abc'; String s2 = 'cba'; System.assertEquals(false,controller.stringEquals(s1,s2)); s2 = ''; System.assertEquals(false,controller.stringEquals(s1,s2)); s2 = null; System.assertEquals(false,controller.stringEquals(s1,s2)); s1 = ''; s2 = 'cba'; System.assertEquals(false,controller.stringEquals(s1,s2)); s2 = ''; System.assertEquals(true,controller.stringEquals(s1,s2)); s2 = null; System.assertEquals(true,controller.stringEquals(s1,s2)); s1 = null; s2 = 'cba'; System.assertEquals(false,controller.stringEquals(s1,s2)); s2 = ''; System.assertEquals(true,controller.stringEquals(s1,s2)); s2 = null; System.assertEquals(true,controller.stringEquals(s1,s2)); Test.stopTest(); } }