@isTest private class UpdateTotalCostPriceSetTextInquiryTest { static testMethod void testMethod1() { List rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; List rectForeignCompany = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'ForeignCompany']; Id pricebookId = Test.getStandardPricebookId(); /*PriceBook2 pricebook1 = ControllerUtil.getStandardPricebook(); Id pricebookId = pricebook1.id;*/ Pricebook2 pricebook = new Pricebook2( Name = 'IE', ProductSegment__c = 'IE', TradeType__c = 'Taxation', SalesChannel__c = 'direct', MachineParts__c = 'Machine', isActive = true ); insert pricebook; /*Pricebook2 pricebook = [select Id from PriceBook2 where ProductSegment__c = 'IE' and TradeType__c = 'Taxation' and SalesChannel__c = 'direct' and MachineParts__c = 'Machine' and isActive = true limit 1]; */ Product2 product1 = new Product2(); product1.Name = 'product1'; product1.IsActive = true; product1.ProductModels__c = false; Product2 product2 = new Product2(); product2.Name = 'product2'; product2.IsActive = true; product2.ProductModels__c = true; Product2 product3 = new Product2(); product3.Name = 'product3'; product3.IsActive = true; insert new Product2[] {product1,product2,product3}; PricebookEntry standardPrice1 = new PricebookEntry( Pricebook2Id = pricebookId, Product2Id = product1.Id, UnitPrice = 0, CurrencyIsoCode = 'CNY', IsActive = true ); PricebookEntry standardPrice2 = new PricebookEntry( Pricebook2Id = pricebookId, Product2Id = product2.Id, UnitPrice = 0, CurrencyIsoCode = 'CNY', IsActive = true ); PricebookEntry standardPrice3 = new PricebookEntry( Pricebook2Id = pricebookId, Product2Id = product3.Id, UnitPrice = 0, CurrencyIsoCode = 'CNY', IsActive = true ); insert new PricebookEntry[] {standardPrice1,standardPrice2,standardPrice3}; PricebookEntry entry1 = new PricebookEntry( Pricebook2Id=pricebook.Id, Product2Id=product1.Id); entry1.UnitPrice = 0; entry1.IsActive = true; entry1.UseStandardPrice = false; entry1.CurrencyIsoCode = 'CNY'; PricebookEntry entry2 = new PricebookEntry( Pricebook2Id=pricebook.Id, Product2Id=product2.Id); entry2.UnitPrice = 0; entry2.IsActive = true; entry2.UseStandardPrice = false; entry2.CurrencyIsoCode = 'CNY'; PricebookEntry entry3 = new PricebookEntry( Pricebook2Id=pricebook.Id, Product2Id=product3.Id); entry3.UnitPrice = 0; entry3.IsActive = true; entry3.UseStandardPrice = false; entry3.CurrencyIsoCode = 'CNY'; insert new PricebookEntry[] {entry1,entry2,entry3}; Account accIE = new Account( Name = '*', RecordTypeId = rectIE[0].Id, OwnerId = UserInfo.getUserId(), DivisionName__c='Customer IE', FacilityName__c='abc', PostCode__c = '123456' ); insert accIE; List rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity']; // 有预定下单日 Opportunity opp = new Opportunity( Name = 'test opp', AccountId = accIE.Id, RecordTypeId = rectOpp[0].Id, OwnerId = UserInfo.getUserId(), StageName = 'Phase3', CurrencyIsoCode = 'CNY', ProductSegment__c = 'IE', CloseDate = Date.today(), NewInquiryDate__c = Date.today().addDays(-2), ExpectedOrderDate__c = Date.today().addDays(2), SalesChannel__c = 'direct', TradeType__c = 'Taxation', Machine_Parts__c = 'Machine', InquiryResult__c = '112233' ); insert opp; OpportunityLineItem oli = new OpportunityLineItem(); oli.OpportunityId = opp.Id; //oli.Product2 = prd1; oli.Quantity = 2; oli.UnitPrice = 111; oli.Description = 'test'; oli.PricebookEntryId = entry1.Id; insert oli; OpportunityLineItem oli2 = new OpportunityLineItem(); oli2.OpportunityId = opp.Id; //oli2.Product2 = prd2; oli2.Quantity = 2; oli2.UnitPrice = 111; oli2.Description = 'test'; oli2.PricebookEntryId = entry1.Id; insert oli2; opp.InquiryResult__c = '112222'; update opp; /*System.assertEquals(0, opp.Model_product_cnt__c); System.assertEquals(0, opp.ProductCount__c); System.assertEquals(true, opp.OppBatchUpdate__c);*/ List ids = new List(); ids.add(opp.Id); Database.executeBatch(new UpdateTotalCostPriceSetTextInquiryBatch(), 20); Database.executeBatch(new UpdateTotalCostPriceSetTextInquiryBatch(ids), 20); UpdateTotalCostPriceSetTextInquiryBatch.executeWebSide(opp.Id); } }