@isTest private class SSOpportunityBatchTest { private static Product2 product = null; private static Id pricebookId = ControllerUtil.getStandardPricebook().Id; static { product = new Product2( Name='テスト商品'); insert product; } private static PricebookEntry buildPB(String input) { PricebookEntry entry = new PricebookEntry(Pricebook2Id=pricebookId, Product2Id=product.Id); entry.UnitPrice = 0; entry.IsActive = true; entry.UseStandardPrice = false; entry.CurrencyIsoCode = input; insert entry; return entry; } @isTest(SeeAllData=true) static void makeSqlTest() { // データを作って、データ移行の項目をテスト // テストデータ insertSSTest と同じするする Opportunity opp1 = new Opportunity(Name='aiueo1', StageName='出荷', CurrencyIsoCode='USD', CloseDate=Date.today(),Trade__c = '外貿'); Opportunity opp2 = new Opportunity(Name='aiueo2', StageName='出荷', CurrencyIsoCode='CNY', CloseDate=Date.today(),Trade__c = '内貿'); insert new Opportunity[] {opp1, opp2}; // PricebookEntry entryUSD = buildPB('USD'); // opp1用 PricebookEntry entryCNY = buildPB('CNY'); // opp2用 OpportunityLineItem oli21 = new OpportunityLineItem(OpportunityId=opp2.Id, Name__c='oli21', Quantity=21, UnitPrice=100, PricebookEntryId=entryCNY.Id); OpportunityLineItem oli22 = new OpportunityLineItem(OpportunityId=opp2.Id, Name__c='oli22', Quantity=22, UnitPrice=200, PricebookEntryId=entryCNY.Id); insert new OpportunityLineItem[] {oli21, oli22}; Statu_Achievements__c sta11 = new Statu_Achievements__c(Opportunity__c=opp1.Id, ContractNO__c='sta11', DeliveryStatus__c = '未交付',ContractAmount__c = 11); Statu_Achievements__c sta12 = new Statu_Achievements__c(Opportunity__c=opp1.Id, ContractNO__c='sta12', DeliveryStatus__c = '部分交货',ContractAmount__c = 11); insert new Statu_Achievements__c[] {sta11, sta12}; Id execBTId = Database.executeBatch(new SSOpportunityBatch(new Id[] {opp1.Id}), 1); execBTId = Database.executeBatch(new SSBackorderBatch(new Id[] {sta11.Id}), 1); // ExceptionがなければOK // 念のため、再度 select sql の確認 SS_Batch_Column_Mapping__c setting = SS_Batch_Column_Mapping__c.getValues('Opportunity'); //for (SS_Batch_Column_Mapping__c setting : settingList) { String soql = SSOpportunityBatch.makeSql(setting, new Set()); soql += ' limit 1'; Database.query(soql); // ExceptionがなければOK //} } @isTest static void updateOppTest() { // カスタム設定を定義 SS_Batch_Column_Mapping__c oppMapping = new SS_Batch_Column_Mapping__c(Name = 'Opportunity', SS_TableName__c='SS_Prospect_5days_list__c'); oppMapping.From_Column_001__c = 'Id'; oppMapping.SS_Column_001__c = 'Opportunity.Name'; oppMapping.From_Column_002__c = 'Id'; // 重複してもエラーにはならない oppMapping.SS_Column_002__c = 'Opportunity.Name'; SS_Batch_Column_Mapping__c oliMapping = new SS_Batch_Column_Mapping__c(Name = 'OpportunityLineItem', SS_TableName__c='SS_Prospect_detail_product__c'); SS_Batch_Column_Mapping__c staMapping = new SS_Batch_Column_Mapping__c(Name = 'Statu_Achievements__c', SS_TableName__c='SS_backorder_list__c'); staMapping.From_Column_001__c = 'Id'; staMapping.SS_Column_001__c = 'Statu_Achievements__c.Name'; insert new SS_Batch_Column_Mapping__c[] {oppMapping, oliMapping, staMapping}; // テストデータ Opportunity opp1 = new Opportunity(Name='aiueo1', StageName='引合', CloseDate=Date.today()); Opportunity opp2 = new Opportunity(Name='aiueo2', StageName='引合', CloseDate=Date.today()); insert new Opportunity[] {opp1, opp2}; Statu_Achievements__c st1 = new Statu_Achievements__c(Name='st1', Opportunity__c=opp1.Id,ContractAmount__c = 11); Statu_Achievements__c st2 = new Statu_Achievements__c(Name='st2', Opportunity__c=opp2.Id,ContractAmount__c = 11); insert new Statu_Achievements__c[] {st1, st2}; System.Test.StartTest(); Id execBTId = Database.executeBatch(new SSOpportunityBatch(null), 5); execBTId = Database.executeBatch(new SSBackorderBatch(null), 5); System.Test.StopTest(); opp1 = [Select Id, Name from Opportunity where Id = :opp1.Id]; opp2 = [Select Id, Name from Opportunity where Id = :opp2.Id]; System.assertEquals('::' + opp1.Id, opp1.Name); System.assertEquals('::' + opp2.Id, opp2.Name); st1 = [Select Id, Name from Statu_Achievements__c where Id = :st1.Id]; st2 = [Select Id, Name from Statu_Achievements__c where Id = :st2.Id]; System.assertEquals(st1.Id, st1.Name); System.assertEquals(st2.Id, st2.Name); // TODO 预测发货日必须大于预测OCM签约日 の テスト //wangweipeng 测试SSBackorderBatch的reuseUpdate方法 start SSBackorderBatch ssba = new SSBackorderBatch(null); List reuseUpdateList = new List(); reuseUpdateList.add(new Statu_Achievements__c(Name='st1', Opportunity__c=opp1.Id,ContractAmount__c = 11)); ssba.reuseUpdate(reuseUpdateList,1); //wangweipeng 测试SSBackorderBatch的reuseUpdate方法 end } @isTest static void insertSSTest() { // カスタム設定を定義 SS_Batch_Column_Mapping__c oppMapping = new SS_Batch_Column_Mapping__c(Name = 'Opportunity', SS_TableName__c='SS_Prospect_5days_list__c'); oppMapping.From_Column_001__c = 'Name'; oppMapping.SS_Column_001__c = 'Opportunity_Name__c'; oppMapping.From_Column_002__c = 'Owner.Alias'; oppMapping.SS_Column_002__c = 'Account_Name__c'; SS_Batch_Column_Mapping__c oliMapping = new SS_Batch_Column_Mapping__c(Name = 'OpportunityLineItem', SS_TableName__c='SS_Prospect_detail_product__c'); oliMapping.From_Column_001__c = 'Name__c'; oliMapping.SS_Column_001__c = 'Product_name__c'; oliMapping.From_Column_002__c = 'Quantity'; oliMapping.SS_Column_002__c = 'Number__c'; SS_Batch_Column_Mapping__c staMapping = new SS_Batch_Column_Mapping__c(Name = 'Statu_Achievements__c', SS_TableName__c='SS_backorder_list__c'); staMapping.From_Column_001__c = 'ContractNO__c'; staMapping.From_Column_002__c = 'Id'; staMapping.SS_Column_001__c = 'ContractNO__c'; staMapping.SS_Column_002__c = 'BackorderID__c'; insert new SS_Batch_Column_Mapping__c[] {oppMapping, oliMapping, staMapping}; // テストデータ Opportunity opp1 = new Opportunity(Name='aiueo1', StageName='引合', CurrencyIsoCode='USD', CloseDate=Date.today()); Opportunity opp2 = new Opportunity(Name='aiueo2', StageName='引合', CurrencyIsoCode='CNY', CloseDate=Date.today()); insert new Opportunity[] {opp1, opp2}; // PricebookEntry entryUSD = buildPB('USD'); // opp1用 PricebookEntry entryCNY = buildPB('CNY'); // opp2用 OpportunityLineItem oli21 = new OpportunityLineItem(OpportunityId=opp2.Id, Name__c='oli21', Quantity=21, UnitPrice=100, PricebookEntryId=entryCNY.Id); OpportunityLineItem oli22 = new OpportunityLineItem(OpportunityId=opp2.Id, Name__c='oli22', Quantity=22, UnitPrice=200, PricebookEntryId=entryCNY.Id); insert new OpportunityLineItem[] {oli21, oli22}; Statu_Achievements__c sta11 = new Statu_Achievements__c(Opportunity__c=opp1.Id, ContractNO__c='sta11', DeliveryStatus__c = '未交付',ContractAmount__c = 11); Statu_Achievements__c sta12 = new Statu_Achievements__c(Opportunity__c=opp1.Id, ContractNO__c='sta12', DeliveryStatus__c = '部分交货',ContractAmount__c = 11); insert new Statu_Achievements__c[] {sta11, sta12}; System.Test.StartTest(); Id execBTId = Database.executeBatch(new SSOpportunityBatch(null), 5); execBTId = Database.executeBatch(new SSBackorderBatch(null), 5); System.Test.StopTest(); // assert opp1 = [Select Id, Name from Opportunity where Id = :opp1.Id]; opp2 = [Select Id, Name from Opportunity where Id = :opp2.Id]; List ssOppList = [Select Id, Opportunity_Name__c from SS_Prospect_5days_list__c order by Name]; System.assertEquals(2, ssOppList.size()); System.assertEquals(opp1.Name, ssOppList[0].Opportunity_Name__c); System.assertEquals(opp2.Name, ssOppList[1].Opportunity_Name__c); List ssOliList = [Select Id, Product_name__c from SS_Prospect_detail_product__c order by number__c]; System.assertEquals(2, ssOliList.size()); System.assertEquals(oli21.Name__c, ssOliList[0].Product_name__c); System.assertEquals(oli22.Name__c, ssOliList[1].Product_name__c); List ssStaList = [Select Id, ContractNO__c from SS_backorder_list__c order by ContractNO__c]; System.assertEquals(2, ssStaList.size()); System.assertEquals(sta11.ContractNO__c, ssStaList[0].ContractNO__c); System.assertEquals(sta12.ContractNO__c, ssStaList[1].ContractNO__c); sta11 = [select SS_backorderID__c from Statu_Achievements__c where Id = :sta11.Id]; System.assertEquals(ssStaList[0].Id, sta11.SS_backorderID__c); sta12 = [select SS_backorderID__c from Statu_Achievements__c where Id = :sta12.Id]; System.assertEquals(ssStaList[1].Id, sta12.SS_backorderID__c); } }