@isTest private class OrderDivisionControllerTest { // Update PIPL 20220516 By Chen Yanan Start @TestSetup static void makeData(){ TestDataUtility.CreatePIPolicyConfiguration(); } // Update PIPL 20220516 By Chen Yanan End @isTest static void test_init() { Test.setMock(HttpCalloutMock.class, new TestDataUtility.CreateMetaDataUtilityHttpMock()); // Update PIPL 20220516 By Chen Yanan Id pricebookId = Test.getStandardPricebookId(); Pricebook2 pricebook = new Pricebook2( Name = 'BS', ProductSegment__c = 'BS', TradeType__c = 'Taxation', SalesChannel__c = 'direct', MachineParts__c = 'Machine', isActive = true ); insert pricebook; Product2 product1 = new Product2(); product1.Name = 'product1'; product1.ProductCode = 'product1'; product1.Product_ECCode__c = 'product1'; product1.IsActive = true; insert product1; PricebookEntry standardPrice1 = new PricebookEntry( Pricebook2Id = pricebookId, Product2Id = product1.Id, CurrencyIsoCode = 'CNY', UnitPrice = 0, IsActive = true ); insert standardPrice1; PricebookEntry entry1 = new PricebookEntry(Pricebook2Id = pricebook.Id, Product2Id = product1.Id); entry1.UnitPrice = 0; entry1.IsActive = true; entry1.UseStandardPrice = false; entry1.CurrencyIsoCode = 'CNY'; insert entry1; List rectBS = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer BS']; Account user = new Account( Name = '*', FacilityName__c = 'user', OwnerId = UserInfo.getUserId(), PostCode__c = '123456', RecordTypeId = rectBS[0].Id ); insert user; Contact contact = new Contact( LastName = 'contact', AccountId = user.Id ); insert contact; Opportunity opp = new Opportunity( Name = 'test opp', AccountId = user.Id, StageName = 'Phase3', CurrencyIsoCode = 'CNY', OwnerId = UserInfo.getUserId(), ProductSegment__c = 'BS', CloseDate = Date.today(), NewInquiryDate__c = Date.today().addDays(-2), ExpectedOrderDate__c = Date.today().addDays(2), TradeType__c = 'Taxation', SalesChannel__c = 'direct', Machine_Parts__c = 'Machine', Pricebook2Id = pricebook.Id ); insert opp; OpportunityContactRole role = new OpportunityContactRole( Role = 'End user', IsPrimary = true, OpportunityId = opp.Id, ContactId = contact.Id ); insert role; OpportunityLineItem oli1 = new OpportunityLineItem( OpportunityId = opp.Id, PricebookEntryId = entry1.Id, Quantity = 10, UnitPrice = 10 ); insert oli1; OpportunityContactRole ocr = new OpportunityContactRole( OpportunityId = opp.Id, ContactId = contact.Id, IsPrimary = true ); insert ocr; Quote quo = new Quote( Name = 'quo', OpportunityId = opp.Id, Pricebook2Id = pricebook.Id, SetName1__c = 'setname01', SetQty1__c = 1 ); insert quo; QuoteLineItem qli1 = new QuoteLineItem( QuoteId = quo.Id, PricebookEntryId = entry1.Id, Quantity = 10, UnitPrice = 10, Custom_Price__c = 15, Set__c = 'set01' ); insert qli1; opp.SyncedQuoteId = quo.Id; update opp; Order order = new Order( Name = 'order', CurrencyIsoCode = 'CNY', AccountId = user.Id, OpportunityId = opp.Id, QuoteId = quo.Id, EffectiveDate = Date.today(), Status = 'Draft', Pricebook2Id = pricebook.Id, EndUser__c = contact.Id, EndUserD__c = contact.Id ); insert order; PageReference page = new PageReference('/apex/OrderDivision?odrId=' + order.Id + '&retURL=' + opp.Id); System.Test.setCurrentPage(page); OrderDivisionController controller = new OrderDivisionController(); controller.init(); //System.assertEquals(1, controller.lineinfo.size()); //System.assertEquals(10, controller.lineinfo[0].oi.Quantity); //System.assertEquals(20, controller.lineinfo[1].oi.Quantity); controller.lineinfo[0].divideCnt = 10; //controller.lineinfo[1].divideCnt = 11; System.Test.StartTest(); controller.saveBtn(); //system.assertEquals(null,ApexPages.getMessages()[0].getDetail()); List oiList1 = [select id, Quantity from OrderItem where OrderId = :order.Id]; //System.assertEquals(0, oiList1.size()); //System.assertEquals(9, oiList1[0].Quantity); List oiList2 = [select id, Quantity from OrderItem where OrderId <> :order.Id]; // System.assertEquals(1, oiList2.size()); //System.assertEquals(10, oiList2[0].Quantity); //System.assertEquals(11, oiList2[1].Quantity); controller.backBtn(); System.Test.StopTest(); } /* @isTest static void test_init_2() { Id pricebookId = Test.getStandardPricebookId(); Pricebook2 pricebook = new Pricebook2( Name = 'IE', ProductSegment__c = 'IE', TradeType__c = 'Taxation', SalesChannel__c = 'direct', MachineParts__c = 'Machine', isActive = true ); insert pricebook; Product2 product1 = new Product2(); product1.Name = 'product1'; product1.ProductCode = 'product1'; product1.Product_ECCode__c = 'product1'; product1.IsActive = true; insert product1; PricebookEntry standardPrice1 = new PricebookEntry( Pricebook2Id = pricebookId, Product2Id = product1.Id, UnitPrice = 0, IsActive = true ); insert standardPrice1; PricebookEntry entry1 = new PricebookEntry(Pricebook2Id = pricebook.Id, Product2Id = product1.Id); entry1.UnitPrice = 0; entry1.IsActive = true; entry1.UseStandardPrice = false; insert entry1; List rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; Account user = new Account( Name = '*', FacilityName__c = 'user', PostCode__c = '123456', RecordTypeId = rectIE[0].Id ); insert user; Opportunity opp = new Opportunity( Name = 'test opp', AccountId = user.Id, StageName = 'Prospect Created', CurrencyIsoCode = 'CNY', ProductSegment__c = 'IE', CloseDate = Date.today(), NewInquiryDate__c = Date.today().addDays(-2), ExpectedOrderDate__c = Date.today().addDays(2), TradeType__c = 'Taxation', SalesChannel__c = 'direct', Machine_Parts__c = 'Machine', Pricebook2Id = pricebook.Id ); insert opp; OpportunityLineItem oli2 = new OpportunityLineItem( OpportunityId = opp.Id, PricebookEntryId = entry1.Id, Quantity = 20, UnitPrice = 20 ); insert oli2; Quote quo = new Quote( Name = 'quo', OpportunityId = opp.Id, Pricebook2Id = pricebook.Id, SetName1__c = 'setname01', SetQty1__c = 1 ); insert quo; QuoteLineItem qli2 = new QuoteLineItem( QuoteId = quo.Id, PricebookEntryId = entry1.Id, Quantity = 20, UnitPrice = 20, Custom_Price__c = 25, Set__c = 'set01' ); insert qli2; opp.SyncedQuoteId = quo.Id; update opp; Order order = new Order( Name = 'order', CurrencyIsoCode = 'CNY', AccountId = user.Id, OpportunityId = opp.Id, QuoteId = quo.Id, EffectiveDate = Date.today(), Status = 'Draft', Pricebook2Id = pricebook.Id ); insert order; PageReference page = new PageReference('/apex/OrderDivision?odrId=' + order.Id + '&retURL=' + opp.Id); System.Test.setCurrentPage(page); OrderDivisionController controller = new OrderDivisionController(); controller.init(); System.assertEquals(1, controller.lineinfo.size()); //System.assertEquals(10, controller.lineinfo[0].oi.Quantity); System.assertEquals(20, controller.lineinfo[0].oi.Quantity); //controller.lineinfo[0].divideCnt = 10; controller.lineinfo[0].divideCnt = 11; controller.saveBtn(); //system.assertEquals(null,ApexPages.getMessages()[0].getDetail()); List oiList1 = [select id, Quantity from OrderItem where OrderId = :order.Id]; System.assertEquals(1, oiList1.size()); System.assertEquals(9, oiList1[0].Quantity); List oiList2 = [select id, Quantity from OrderItem where OrderId <> :order.Id]; System.assertEquals(1, oiList2.size()); //System.assertEquals(10, oiList2[0].Quantity); System.assertEquals(11, oiList2[0].Quantity); }*/ @isTest static void test_init2() { Test.setMock(HttpCalloutMock.class, new TestDataUtility.CreateMetaDataUtilityHttpMock()); // Update PIPL 20220516 By Chen Yanan Id pricebookId = Test.getStandardPricebookId(); Pricebook2 pricebook = new Pricebook2( Name = 'IE', ProductSegment__c = 'IE', TradeType__c = 'Taxation', SalesChannel__c = 'direct', MachineParts__c = 'Machine', isActive = true ); insert pricebook; Product2 product1 = new Product2(); product1.Name = 'product1'; product1.ProductCode = 'product1'; product1.Product_ECCode__c = 'product1'; product1.IsActive = true; insert product1; PricebookEntry standardPrice1 = new PricebookEntry( Pricebook2Id = pricebookId, Product2Id = product1.Id, UnitPrice = 0, CurrencyIsoCode = 'CNY', IsActive = true ); insert standardPrice1; PricebookEntry entry1 = new PricebookEntry(Pricebook2Id = pricebook.Id, Product2Id = product1.Id); entry1.UnitPrice = 0; entry1.IsActive = true; entry1.UseStandardPrice = false; entry1.CurrencyIsoCode = 'CNY'; insert entry1; List rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE']; Account user = new Account( Name = '*', FacilityName__c = 'user', PostCode__c = '123456', RecordTypeId = rectIE[0].Id ); insert user; Contact contact = new Contact( LastName = 'contact', AccountId = user.Id ); insert contact; Opportunity opp = new Opportunity( Name = 'test opp', AccountId = user.Id, StageName = 'Phase3', CurrencyIsoCode = 'CNY', ProductSegment__c = 'IE', CloseDate = Date.today(), NewInquiryDate__c = Date.today().addDays(-2), ExpectedOrderDate__c = Date.today().addDays(2), TradeType__c = 'Taxation', SalesChannel__c = 'direct', Machine_Parts__c = 'Machine', Pricebook2Id = pricebook.Id, IE_Custom_Price__c = 2000, IE_local_cost__c = 200, IE_ShippingHandling__c = 100 ); insert opp; OpportunityContactRole role = new OpportunityContactRole( Role = 'End user', IsPrimary = true, OpportunityId = opp.Id, ContactId = contact.Id ); insert role; OpportunityLineItem oli1 = new OpportunityLineItem( OpportunityId = opp.Id, PricebookEntryId = entry1.Id, Quantity = 10, UnitPrice = 10 ); OpportunityLineItem oli2 = new OpportunityLineItem( OpportunityId = opp.Id, PricebookEntryId = entry1.Id, Quantity = 20, UnitPrice = 20 ); OpportunityLineItem oli3 = new OpportunityLineItem( OpportunityId = opp.Id, PricebookEntryId = entry1.Id, Quantity = 30, UnitPrice = 30 ); insert new OpportunityLineItem[] {oli1, oli2, oli3}; OpportunityContactRole ocr = new OpportunityContactRole( OpportunityId = opp.Id, ContactId = contact.Id, IsPrimary = true ); insert ocr; Order order = new Order( Name = 'order', CurrencyIsoCode = 'CNY', AccountId = user.Id, OpportunityId = opp.Id, EffectiveDate = Date.today(), Status = 'Draft', Pricebook2Id = pricebook.Id, EndUser__c = contact.Id, EndUserD__c = contact.Id ); insert order; PageReference page = new PageReference('/apex/OrderDivision?odrId=' + order.Id + '&retURL=' + opp.Id); System.Test.setCurrentPage(page); OrderDivisionController controller = new OrderDivisionController(); controller.init(); System.assertEquals(3, controller.lineinfo.size()); System.assertEquals(10, controller.lineinfo[0].oi.Quantity); System.assertEquals(20, controller.lineinfo[1].oi.Quantity); System.assertEquals(30, controller.lineinfo[2].oi.Quantity); controller.lineinfo[0].divideCnt = 10; controller.lineinfo[1].divideCnt = 11; System.Test.StartTest(); controller.saveBtn(); System.Test.StopTest(); List oiList1 = [select id, Quantity from OrderItem where OrderId = :order.Id]; System.assertEquals(2, oiList1.size()); System.assertEquals(9, oiList1[0].Quantity); System.assertEquals(30, oiList1[1].Quantity); List oiList2 = [select id, Quantity from OrderItem where OrderId <> :order.Id]; System.assertEquals(2, oiList2.size()); System.assertEquals(10, oiList2[0].Quantity); System.assertEquals(11, oiList2[1].Quantity); } }