@isTest private class SSOpportunityBatch2Test { 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()); 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}; Id execBTId = Database.executeBatch(new SSOpportunityBatch2(new Id[] {opp1.Id}), 1); // ExceptionがなければOK // 念のため、再度 select sql の確認 List settingList = SS_Batch_Column_Mapping__c.getall().values(); System.debug('maping 值'+settingList);//niwu add for (SS_Batch_Column_Mapping__c setting : settingList) { String soql = SSOpportunityBatch2.makeSql(setting, new Set()); soql += ' limit 1'; System.debug('sql 语句'+soql);//niwu add 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'; oppMapping.From_Column_003__c = 'Forecast_last_month__c'; oppMapping.SS_Column_003__c = 'Forecast_this_month__c'; oppMapping.From_Column_004__c = 'Last_Shipping_Date_backup__c'; oppMapping.SS_Column_004__c = 'Last_Shipping_Date__c'; SS_Batch_Column_Mapping__c oliMapping = new SS_Batch_Column_Mapping__c(Name = 'OpportunityLineItem', SS_TableName__c='SS_Prospect_detail_product__c'); insert new SS_Batch_Column_Mapping__c[] {oppMapping, oliMapping}; // テストデータ 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}; System.Test.StartTest(); Id execBTId = Database.executeBatch(new SSOpportunityBatch2(null), 5); System.Test.StopTest(); } @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'; oppMapping.From_Column_003__c = 'Forecast_last_month__c'; oppMapping.SS_Column_003__c = 'Forecast_this_month__c'; oppMapping.From_Column_004__c = 'Last_Shipping_Date_backup__c'; oppMapping.SS_Column_004__c = 'Last_Shipping_Date__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'; insert new SS_Batch_Column_Mapping__c[] {oppMapping, oliMapping}; // テストデータ 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}; System.Test.StartTest(); Id execBTId = Database.executeBatch(new SSOpportunityBatch2(null), 5); System.Test.StopTest(); } }