@isTest private class ReceivingNoteListFirstControllerTest { static ReceivingNoteTestDataFactory factory; static User user; /** @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); User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()]; System.runAs (thisUser) { Profile p = [SELECT Id FROM Profile WHERE Name LIKE '%2B3%' Limit 1]; UserRole r = [SELECT Id FROM UserRole WHERE DeveloperName = 'Stock_Article_Management_Member' Limit 1]; user = new User(alias = 'test', email='test@acme.com', emailencodingkey='UTF-8', lastname='test', languagelocalekey='en_US', localesidkey='en_US', profileid = p.Id, userroleid = r.Id, timezonesidkey='Asia/Shanghai', username='test@acme.com' + Datetime.now().getTime()); insert user; } } /** @description 测试检索功能:按不同条件检索,并检查检索结果 */ static testMethod void unitTestSearch() { setupTestData(''); System.runAs(user){ PageReference ref = new PageReference('/apex/ReceivingNoteListFirst'); Test.setCurrentPage(ref); ReceivingNoteListFirstController controller = new ReceivingNoteListFirstController(); CreateRelationListPagingCmpCtrl cmp = new CreateRelationListPagingCmpCtrl(); cmp.pageController = controller; controller.myComponentController.init(); Test.startTest(); controller.init(); controller.getbieCunFangDiOps(); controller.getbieBenBuOps(); controller.getbieChanPinFenLeiOps(); controller.getbieBeiPinFenLeiOps(); controller.getAsset_loaner_categoryOps(); controller.getRNStatusOpss(); controller.searchOpp(); // 不加检索条件显示所有清单 System.assertEquals(5, controller.viewList.size()); // 存放地 controller.bieCunFangDi = '北京 备品中心'; controller.orderCode = null; controller.approvalNumber = null; controller.asset_loaner_category = null; controller.dateOfDelivery = null; controller.status = null; controller.searchOpp(); System.assertEquals(5, controller.viewList.size()); for(CreateRelationListPagingCtrlBase.WrapperInfo v : controller.viewList){ ReceivingNote__c rn = (ReceivingNote__c) v.sobj ; System.assertEquals('北京 备品中心', rn.Internal_asset_location__c ); } // 订单编码 controller.bieCunFangDi = null; controller.orderCode='SB-ORDERCODE-1'; controller.approvalNumber = null; controller.asset_loaner_category = null; controller.dateOfDelivery = null; controller.status = null; controller.searchOpp(); System.assertEquals(1, controller.viewList.size()); ReceivingNote__c rn1 = (ReceivingNote__c) controller.viewList[0].sobj ; System.assertEquals('SB-ORDERCODE-1', rn1.OrderCode__c); //裁决号 controller.bieCunFangDi = null; controller.orderCode = null; controller.approvalNumber = 'SB-APPROVALNUMBER-2'; controller.asset_loaner_category = null; controller.dateOfDelivery = null; controller.status = null; controller.searchOpp(); System.assertEquals(1, controller.viewList.size()); ReceivingNote__c rn2 = (ReceivingNote__c) controller.viewList[0].sobj ; System.assertEquals('SB-APPROVALNUMBER-2', rn2.ApprovalNumber__c); // 备品类别 controller.bieCunFangDi = null; controller.orderCode = null; controller.approvalNumber = null; controller.asset_loaner_category = '附属品'; controller.dateOfDelivery = null; controller.status = null; controller.searchOpp(); System.assertEquals(2, controller.viewList.size()); for(CreateRelationListPagingCtrlBase.WrapperInfo v : controller.viewList){ ReceivingNote__c rn = (ReceivingNote__c) v.sobj ; System.assertEquals('附属品', rn.Asset_loaner_category__c ); } // 发货日 controller.bieCunFangDi = null; controller.orderCode = null; controller.approvalNumber = null; controller.asset_loaner_category = null; String todayStr = System.Now().format('yyyy-MM-dd'); controller.dateOfDelivery = todayStr; controller.status = null; controller.searchOpp(); System.assertEquals(5, controller.viewList.size()); for(CreateRelationListPagingCtrlBase.WrapperInfo v : controller.viewList){ ReceivingNote__c rn = (ReceivingNote__c) v.sobj ; System.assertEquals(Date.Today(), rn.DateOfDelivery__c); } // 收货状态 controller.bieCunFangDi = null; controller.orderCode = null; controller.approvalNumber = null; controller.asset_loaner_category = null; controller.dateOfDelivery = null; controller.status = '待数据确认'; controller.searchOpp(); System.assertEquals(5, controller.viewList.size()); for(CreateRelationListPagingCtrlBase.WrapperInfo v : controller.viewList){ ReceivingNote__c rn = (ReceivingNote__c) v.sobj ; System.assertEquals('待数据确认', rn.RN_Status__c); } Test.stopTest(); } } /** @description 测试入库指示 */ static testMethod void unitTestInStockRequest() { // 造出可以做入库指示的明细 setupTestData('固定资产,个体管理'); ReceivingNoteDetail__c rnd = factory.rndMap.get('固定资产,个体管理'); ReceivingNoteSummary__c rns = factory.rnsMap.get('固定资产,个体管理'); // 数据确认 rnd.unknow_serial_NO_product__c = 'TRUE'; rnd.Loaner_accsessary__c = 'TRUE'; rnd.DataConfirmation__c = true; // 收货 rns.Received_Confirm_Time__c = Datetime.now(); rns.Package_Status__c = 'OK'; upsert rns Id; // 清点 rnd.AcceptanceResult__c = 'OK'; rnd.AcceptanceTime__c = Datetime.now(); // 验收 rnd.Inspection_result_after__c = 'OK'; rnd.After_Inspection_time__c = Datetime.now(); // 再确认 rnd.DataConfirmationAgain__c = true; upsert rnd Id; System.runAs(user){ PageReference ref = new PageReference('/apex/ReceivingNoteListFirst'); Test.setCurrentPage(ref); ReceivingNoteListFirstController controller = new ReceivingNoteListFirstController(); CreateRelationListPagingCmpCtrl cmp = new CreateRelationListPagingCmpCtrl(); cmp.pageController = controller; controller.myComponentController.init(); Test.startTest(); controller.init(); controller.status = '待入库指示'; controller.searchOpp(); // 不加检索条件显示所有清单 System.assertEquals(1, controller.viewList.size()); // 入库指示 controller.viewList[0].check = true; controller.inStockRequest(); ReceivingNoteDetail__c newRnd = [ SELECT Arrival_wh_Request_time__c FROM ReceivingNoteDetail__c WHERE Id =: rnd.Id ]; System.assertNotEquals(null, newRnd.Arrival_wh_Request_time__c); Test.stopTest(); } } }