@isTest private class ReceivingNoteSummarySelectControllerTest { static ReceivingNoteTestDataFactory factory; /** @param typeStringListString 格式:'备品类型,管理种类;备品类型,管理种类...' @description 造出指定类型的清单数据,并插入数据库 */ static void setupTestData(String typeStringListString){ factory = new ReceivingNoteTestDataFactory(); factory.setupMasterData(); if(String.isBlank(typeStringListString)){ typeStringListString = '固定资产,个体管理;附属品,个体管理;附属品,数量管理;耗材,数量管理;低值易耗品,数量管理'; } List typeStringList = typeStringListString.split(';'); factory.setupReceivingNoteData(typeStringList); } /** @description 测试searchOpp()方法 */ static testMethod void unitTestSearchOpp(){ setupTestData('固定资产,个体管理'); Id rnId = factory.rnMap.get('固定资产,个体管理').Id; Id rnsId = factory.rnsMap.get('固定资产,个体管理').Id; ReceivingNoteSummary__c rns = factory.rnsMap.get('固定资产,个体管理'); rns.Fixture_Set__c = null; upsert rns Internal_Asset_number__c; PageReference ref = new PageReference('ReceivingNoteSummarySelect?pt_recid='+rnId+'&raesid='+rnsId); Test.setCurrentPage(ref); ReceivingNoteSummarySelectController controller = new ReceivingNoteSummarySelectController(); CreateRelationListPagingCmpCtrl cmp = new CreateRelationListPagingCmpCtrl(); cmp.pageController = controller; controller.myComponentController.init(); Test.startTest(); controller.init(); // 初始时一览中的配套字段没有被赋值 rns = [select Fixture_Set__c from ReceivingNoteSummary__c WHERE Id=:rnsId]; System.assertEquals(null, rns.Fixture_Set__c); // 查找配套 controller.keyword = 'SB-FS-01'; controller.searchOpp(); // 查找方法中包括保存配套字段的操作 System.assertEquals(1, controller.viewList.size()); Test.stopTest(); } /** @description 给一览对象的配套字段赋值 */ static testMethod void unitTestSave(){ setupTestData('固定资产,个体管理'); Id rnId = factory.rnMap.get('固定资产,个体管理').Id; Id rnsId = factory.rnsMap.get('固定资产,个体管理').Id; ReceivingNoteSummary__c rns = factory.rnsMap.get('固定资产,个体管理'); rns.Fixture_Set__c = null; upsert rns Internal_Asset_number__c; PageReference ref = new PageReference('ReceivingNoteSummarySelect?pt_recid='+rnId+'&raesid='+rnsId); Test.setCurrentPage(ref); ReceivingNoteSummarySelectController controller = new ReceivingNoteSummarySelectController(); CreateRelationListPagingCmpCtrl cmp = new CreateRelationListPagingCmpCtrl(); cmp.pageController = controller; controller.myComponentController.init(); Test.startTest(); controller.init(); // 初始时一览中的配套字段没有被赋值 rns = [SELECT Fixture_Set__c FROM ReceivingNoteSummary__c WHERE Id=:rnsId]; System.assertEquals(null, rns.Fixture_Set__c); // 不加检索关键词会显示所有可选配套 controller.keyword = ''; controller.searchOpp(); System.assertEquals(1, controller.viewList.size()); // 勾选配套 controller.viewList[0].check = true; // 保存 controller.save(); // 查看是否被赋上值 ReceivingNoteSummary__c newRns = [select Fixture_Set__r.Fixture_Set_Body_Model_No__c from ReceivingNoteSummary__c WHERE Id=:rnsId]; System.assertEquals('SB-FS-MODEL-01', newRns.Fixture_Set__r.Fixture_Set_Body_Model_No__c); Test.stopTest(); } /** @description 发送邮件 */ static testMethod void unitTestSendEmail() { setupTestData('固定资产,个体管理'); Id rnId = factory.rnMap.get('固定资产,个体管理').Id; Id rnsId = factory.rnsMap.get('固定资产,个体管理').Id; PageReference ref = new PageReference('ReceivingNoteSummarySelect?pt_recid='+rnId+'&raesid='+rnsId); Test.setCurrentPage(ref); ReceivingNoteSummarySelectController controller = new ReceivingNoteSummarySelectController(); ReceivingNoteSummary__c rns = [select Name, No_Matching_Reminder_Email_Text__c from ReceivingNoteSummary__c WHERE Id=:rnsId ]; System.assertEquals(null, rns.No_Matching_Reminder_Email_Text__c); Test.startTest(); // 初始化 controller.init(); String emailMsg = rns.Name; String emailBody = 'ARE YOU OK?'; ref.getParameters().put('emailBody', emailBody); controller.sendEmail(); ReceivingNoteSummary__c newRns = [select No_Matching_Reminder_Email_Text__c from ReceivingNoteSummary__c WHERE Id=:rnsId ]; System.assertEquals('【自由填写内容】\nARE YOU OK?\n备品配套:\nSB-FS-01', newRns.No_Matching_Reminder_Email_Text__c); Test.stopTest(); } static testMethod void unitTestCleanFixtureSet(){ setupTestData('固定资产,个体管理'); Id rnId = factory.rnMap.get('固定资产,个体管理').Id; Id rnsId = factory.rnsMap.get('固定资产,个体管理').Id; ReceivingNoteDetail__c newRnd = new ReceivingNoteDetail__c(); newRnd.Fixture_Set_Detail__c = factory.fsdList[1].Id; newRnd.ReceivingNoteSummary__c = rnsId; insert newRnd; List rndList = [ SELECT Id, Fixture_Set_Detail__c FROM ReceivingNoteDetail__c WHERE ReceivingNoteSummary__c=:rnsId]; System.assertEquals(2, rndList.size()); System.assertNotEquals(null, rndList[0].Fixture_Set_Detail__c); List rnsList = [SELECT Id, Fixture_Set__c FROM ReceivingNoteSummary__c WHERE Id=:rnsId]; System.assertNotEquals(null, rnsList[0].Fixture_Set__c); PageReference ref = new PageReference('ReceivingNoteSummarySelect?pt_recid='+rnId+'&raesid='+rnsId); Test.setCurrentPage(ref); ReceivingNoteSummarySelectController controller = new ReceivingNoteSummarySelectController(); ReceivingNoteSummary__c rns = [select Name, No_Matching_Reminder_Email_Text__c from ReceivingNoteSummary__c WHERE Id=:rnsId ]; System.assertEquals(null, rns.No_Matching_Reminder_Email_Text__c); Test.startTest(); // 初始化 controller.init(); controller.cleanFixtureSet(); Test.stopTest(); rndList = [SELECT Id, Fixture_Set_Detail__c FROM ReceivingNoteDetail__c]; System.assertEquals(1, rndList.size()); System.assertEquals(null, rndList[0].Fixture_Set_Detail__c); rnsList = [SELECT Id, Fixture_Set__c FROM ReceivingNoteSummary__c]; System.assertEquals(null, rnsList[0].Fixture_Set__c); } }