@isTest private class ReceivingNoteExaminationControllerTest { 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('固定资产,个体管理'); Id rnsId = factory.rnsMap.get('固定资产,个体管理').Id; PageReference ref = new PageReference('/apex/ReceivingNoteExamination?id=' + rnsId); Test.setCurrentPage(ref); ReceivingNoteExaminationController controller = new ReceivingNoteExaminationController(); 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.DataConfirmation__c = true; rnd.unknow_serial_NO_product__c = 'TRUE'; rnd.Loaner_accsessary__c = 'FALSE'; upsert rnd Product_Serial_No__c; // 一览收货确认 ReceivingNoteSummary__c rns = factory.rnsMap.get('固定资产,个体管理'); rns.Received_Confirm_Time__c = System.Now(); upsert rns Internal_Asset_number__c; // 明细验收 rnd.AcceptanceTime__c = System.Now(); rnd.AcceptanceResult__c = 'OK'; upsert rnd Product_Serial_No__c; PageReference ref = new PageReference('/apex/ReceivingNoteExamination?id=' + rns.Id); Test.setCurrentPage(ref); ReceivingNoteExaminationController controller = new ReceivingNoteExaminationController(); Test.startTest(); controller.init(); System.assertEquals(1, controller.esdList.size()); rnd = [ SELECT Inspection_result_after__c , After_Inspection_time__c , Inspection_staff_After__c , RND_Status__c FROM ReceivingNoteDetail__c WHERE Id =: controller.esdList[0].rnd.Id ]; System.assertEquals(true, controller.esdList[0].editable); System.assertEquals(null, rnd.Inspection_result_after__c); System.assertEquals(null, rnd.After_Inspection_time__c); System.assertEquals(null, rnd.Inspection_staff_After__c); System.assertEquals(FixtureUtil.RNDStatusMap.get(FixtureUtil.RNDStatus.Yi_Qing_Dian.ordinal()),rnd.RND_Status__c); // 页面上修改数据 ReceivingNoteDetail__c rndPage = controller.esdList[0].rnd; rndPage.Inspection_result_after__c = 'OK'; rndPage.Inspection_Comment__c = 'comment'; controller.esdList[0].isChecked = true; controller.save(); rnd = [ SELECT Inspection_result_after__c , After_Inspection_time__c , Inspection_Comment__c , Inspection_staff_After__c , RND_Status__c FROM ReceivingNoteDetail__c WHERE Id =: controller.esdList[0].rnd.Id ]; System.assertEquals('OK', rnd.Inspection_result_after__c); System.assertNotEquals(null, rnd.After_Inspection_time__c); System.assertEquals('comment', rnd.Inspection_Comment__c); System.assertEquals(Userinfo.getUserId(), rnd.Inspection_staff_After__c); System.assertEquals(FixtureUtil.RNDStatusMap.get(FixtureUtil.RNDStatus.Yi_Yan_Shou.ordinal()), rnd.RND_Status__c); Test.stopTest(); } /** @description 测试detailEquals()方法 */ static testMethod void unitTestDetailEquals(){ ReceivingNoteDetail__c rnd1 = new ReceivingNoteDetail__c(); ReceivingNoteDetail__c rnd2 = new ReceivingNoteDetail__c(); Test.startTest(); ReceivingNoteExaminationController controller = new ReceivingNoteExaminationController(); rnd1.Inspection_result_after__c = 'OK'; rnd1.Inspection_Comment__c = 'COMMENT'; rnd1.Product_Name_Check__c = 'OK'; rnd1.Model_Check__c = 'OK'; rnd1.NMPA_Approbation_No_Check__c = 'OK'; rnd1.Production_Date_Check__c = 'OK'; rnd1.Guarantee_End_Check__c = 'OK'; rnd1.Produce_Company_Check__c = 'OK'; rnd1.Vender_Check__c = 'OK'; rnd2.Inspection_result_after__c = 'NG'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.Inspection_result_after__c = 'OK'; rnd2.Inspection_Comment__c = 'COMMENT2'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.Inspection_Comment__c = 'COMMENT'; rnd2.Product_Name_Check__c = 'NG'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.Product_Name_Check__c = 'OK'; rnd2.Model_Check__c = 'NG'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.Model_Check__c = 'OK'; rnd2.NMPA_Approbation_No_Check__c = 'NG'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.NMPA_Approbation_No_Check__c = 'OK'; rnd2.Production_Date_Check__c = 'NG'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.Production_Date_Check__c = 'OK'; rnd2.Guarantee_End_Check__c = 'NG'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.Guarantee_End_Check__c = 'OK'; rnd2.Produce_Company_Check__c = 'NG'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.Produce_Company_Check__c = 'OK'; rnd2.Vender_Check__c = 'NG'; System.assertEquals(false, controller.detailEquals(rnd1,rnd2)); rnd2.Vender_Check__c = 'OK'; System.assertEquals(true, controller.detailEquals(rnd1,rnd2)); Test.stopTest(); } /** @description 测试detailEquals()方法 */ static testMethod void unitTestStringEquals(){ Test.startTest(); ReceivingNoteExaminationController controller = new ReceivingNoteExaminationController(); 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(); } }