/** * This class contains unit tests for validating the behavior of Apex classes * and triggers. * * Unit tests are class methods that verify whether a particular piece * of code is working properly. Unit test methods take no arguments, * commit no data to the database, and are flagged with the testMethod * keyword in the method definition. * * All test methods in an organization are executed whenever Apex code is deployed * to a production organization to confirm correctness, ensure code * coverage, and prevent regressions. All Apex classes are * required to have at least 75% code coverage in order to be deployed * to a production organization. In addition, all triggers must have some code coverage. * * The @isTest class annotation indicates this class only contains test * methods. Classes defined with the @isTest annotation do not count against * the organization size limit for all Apex scripts. * * See the Apex Language Reference for more information about Testing and Code Coverage. */ @isTest private class OppMonthlyRatingBatchTest { static testMethod void myUnitTest() { // recode type を取得 //病院 List rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'] ; if (rectCo.size() == 0) { return; } //戦略科室分類 RecordType rectSct1 = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 普外科']; RecordType rectSct2 = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科']; //科室分類 RecordType rectDpt1 = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 普外科']; RecordType rectDpt2 = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 呼吸科']; //商談のレコードタイプ RecordType rectOpp = [select id from RecordType where IsActive = true and SobjectType = 'Opportunity' and DeveloperName = 'Opportunity' ]; Address_Level__c al1 = new Address_Level__c( Name = '四川省' ); insert al1; Address_Level2__c al2 = new Address_Level2__c( Name = '成都市', Address_Level__c = al1.Id ); insert al2; // insert Account company1 = new Account(); Account company2 = new Account(); company1.RecordTypeId = rectCo[0].Id; company1.Name = 'HPテスト1'; company1.State_Master__c = al1.Id; company1.City_Master__c = al2.Id; company2.RecordTypeId = rectCo[0].Id; company2.Name = 'HPテスト2'; company2.State_Master__c = al1.Id; company2.City_Master__c = al2.Id; List hps = new Account[] {company1, company2}; insert hps; Account dc1= [Select Id, Name, Department_Class_Label__c, Sys_Dept_Name_Change_Chk__c from Account where Parent.Id = :company1.Id and RecordTypeId =: rectSct1.Id] ; Account dc2= [Select Id, Name, Department_Class_Label__c, Sys_Dept_Name_Change_Chk__c from Account where Parent.Id = :company2.Id and RecordTypeId =: rectSct2.Id] ; Account depart1 = new Account(); depart1.RecordTypeId = rectDpt1.Id; depart1.Name = '*'; depart1.Department_Name__c = '診療科1'; depart1.ParentId = dc1.Id; depart1.Department_Class__c = dc1.Id; depart1.Hospital__c = company1.Id; Account depart2 = new Account(); depart2.RecordTypeId = rectDpt2.Id; depart2.Name = '*'; depart2.Department_Name__c = '診療科2'; depart2.ParentId = dc2.Id; depart2.Department_Class__c = dc2.Id; depart2.Hospital__c = company2.Id; insert new Account[] {depart1, depart2}; Date prevDate = Date.today().addMonths(-1); Date prevDate2 = Date.today().addMonths(-2); Opportunity opp1 = new Opportunity( Name='testOpp1', StageName='引合', CloseDate=Date.today(), AccountId=depart1.Id, Competitor__c ='A', Click_Close_Date__c = null, RecordType = rectOpp ); Opportunity opp2 = new Opportunity( Name='testOpp2', StageName='引合', CloseDate=Date.today(), AccountId=depart2.Id, Competitor__c ='B', Click_Close_Date__c = null, RecordType = rectOpp ); Opportunity opp3 = new Opportunity( Name='testOpp3', StageName='引合', CloseDate=Date.today(), AccountId=depart1.Id, Competitor__c ='C', Click_Close_Date__c = Date.today().addMonths(-5), RecordType = rectOpp ); Opportunity opp4 = new Opportunity( Name='testOpp4', StageName='引合', CloseDate=Date.today(), AccountId=depart1.Id, Competitor__c ='C', RecordType = rectOpp ); insert new Opportunity[] {opp1, opp2, opp3, opp4}; opp4.StageName = '完了'; update opp4; System.Test.StartTest(); Id execBTId = Database.executeBatch(new OppMonthlyRatingBatch(), 4); System.Test.StopTest(); Date prevYMD = Date.newInstance(prevDate.year(), prevDate.month(), 1); List oppList = [select Id from Opportunity where RecordType.DeveloperName in :ControllerUtil.oppRecordTypeDevNames and (Click_Close_Date__c = null or Click_Close_Date__c >= :prevYMD) and (id = :opp1.Id) ]; system.assertEquals(1, oppList.size()); Integer thisMonth = Date.today().month(); opp1 = [select Rating__c, Rating01__c,Rating02__c,Rating03__c,Rating04__c,Rating05__c,Rating06__c,Rating07__c,Rating08__c,Rating09__c,Rating10__c,Rating11__c,Rating12__c from Opportunity where id = :opp1.Id]; if (thisMonth == 1) { system.assertEquals(opp1.Rating__c, opp1.Rating12__c); system.assertEquals(null, opp1.Rating01__c); } else if (thisMonth == 2) { system.assertEquals(opp1.Rating__c, opp1.Rating01__c); system.assertEquals(null, opp1.Rating02__c); } else if (thisMonth == 3) { system.assertEquals(opp1.Rating__c, opp1.Rating02__c); system.assertEquals(null, opp1.Rating03__c); } else if (thisMonth == 4) { system.assertEquals(opp1.Rating__c, opp1.Rating03__c); system.assertEquals(null, opp1.Rating04__c); } else if (thisMonth == 5) { system.assertEquals(opp1.Rating__c, opp1.Rating04__c); system.assertEquals(null, opp1.Rating05__c); } else if (thisMonth == 6) { system.assertEquals(opp1.Rating__c, opp1.Rating05__c); system.assertEquals(null, opp1.Rating06__c); } else if (thisMonth == 7) { system.assertEquals(opp1.Rating__c, opp1.Rating06__c); system.assertEquals(null, opp1.Rating07__c); } else if (thisMonth == 8) { system.assertEquals(opp1.Rating__c, opp1.Rating07__c); system.assertEquals(null, opp1.Rating08__c); } else if (thisMonth == 9) { system.assertEquals(opp1.Rating__c, opp1.Rating08__c); system.assertEquals(null, opp1.Rating09__c); } else if (thisMonth == 10) { system.assertEquals(opp1.Rating__c, opp1.Rating09__c); system.assertEquals(null, opp1.Rating10__c); } else if (thisMonth == 11) { system.assertEquals(opp1.Rating__c, opp1.Rating10__c); system.assertEquals(null, opp1.Rating11__c); } else if (thisMonth == 12) { system.assertEquals(opp1.Rating__c, opp1.Rating11__c); system.assertEquals(null, opp1.Rating12__c); } else {} opp2 = [select Rating__c, Rating01__c,Rating02__c,Rating03__c,Rating04__c,Rating05__c,Rating06__c,Rating07__c,Rating08__c,Rating09__c,Rating10__c,Rating11__c,Rating12__c from Opportunity where id = :opp2.Id]; if (thisMonth == 1) { system.assertEquals(opp2.Rating__c, opp2.Rating12__c); system.assertEquals(null, opp2.Rating01__c); } else if (thisMonth == 2) { system.assertEquals(opp2.Rating__c, opp2.Rating01__c); system.assertEquals(null, opp2.Rating02__c); } else if (thisMonth == 3) { system.assertEquals(opp2.Rating__c, opp2.Rating02__c); system.assertEquals(null, opp2.Rating03__c); } else if (thisMonth == 4) { system.assertEquals(opp2.Rating__c, opp2.Rating03__c); system.assertEquals(null, opp2.Rating04__c); } else if (thisMonth == 5) { system.assertEquals(opp2.Rating__c, opp2.Rating04__c); system.assertEquals(null, opp2.Rating05__c); } else if (thisMonth == 6) { system.assertEquals(opp2.Rating__c, opp2.Rating05__c); system.assertEquals(null, opp2.Rating06__c); } else if (thisMonth == 7) { system.assertEquals(opp2.Rating__c, opp2.Rating06__c); system.assertEquals(null, opp2.Rating07__c); } else if (thisMonth == 8) { system.assertEquals(opp2.Rating__c, opp2.Rating07__c); system.assertEquals(null, opp2.Rating08__c); } else if (thisMonth == 9) { system.assertEquals(opp2.Rating__c, opp2.Rating08__c); system.assertEquals(null, opp2.Rating09__c); } else if (thisMonth == 10) { system.assertEquals(opp2.Rating__c, opp2.Rating09__c); system.assertEquals(null, opp2.Rating10__c); } else if (thisMonth == 11) { system.assertEquals(opp2.Rating__c, opp2.Rating10__c); system.assertEquals(null, opp2.Rating11__c); } else if (thisMonth == 12) { system.assertEquals(opp2.Rating__c, opp2.Rating11__c); system.assertEquals(null, opp2.Rating12__c); } else {} opp3 = [select Rating__c, Rating01__c,Rating02__c,Rating03__c,Rating04__c,Rating05__c,Rating06__c,Rating07__c,Rating08__c,Rating09__c,Rating10__c,Rating11__c,Rating12__c from Opportunity where id = :opp3.Id]; system.assertEquals(null, opp3.Rating01__c); system.assertEquals(null, opp3.Rating02__c); system.assertEquals(null, opp3.Rating03__c); system.assertEquals(null, opp3.Rating04__c); system.assertEquals(null, opp3.Rating05__c); system.assertEquals(null, opp3.Rating06__c); system.assertEquals(null, opp3.Rating07__c); system.assertEquals(null, opp3.Rating08__c); system.assertEquals(null, opp3.Rating09__c); system.assertEquals(null, opp3.Rating10__c); system.assertEquals(null, opp3.Rating11__c); system.assertEquals(null, opp3.Rating12__c); opp4 = [select Rating__c, Rating01__c,Rating02__c,Rating03__c,Rating04__c,Rating05__c,Rating06__c,Rating07__c,Rating08__c,Rating09__c,Rating10__c,Rating11__c,Rating12__c,StageName,Click_Close_Date__c from Opportunity where id = :opp4.Id]; system.assertEquals('完了', opp4.StageName); system.assertEquals(Date.today(), opp4.Click_Close_Date__c); if (thisMonth == 1) { system.assertEquals(opp4.Rating__c, opp4.Rating12__c); system.assertEquals(null, opp4.Rating01__c); } else if (thisMonth == 2) { system.assertEquals(opp4.Rating__c, opp4.Rating01__c); system.assertEquals(null, opp4.Rating02__c); } else if (thisMonth == 3) { system.assertEquals(opp4.Rating__c, opp4.Rating02__c); system.assertEquals(null, opp4.Rating03__c); } else if (thisMonth == 4) { system.assertEquals(opp4.Rating__c, opp4.Rating03__c); system.assertEquals(null, opp4.Rating04__c); } else if (thisMonth == 5) { system.assertEquals(opp4.Rating__c, opp4.Rating04__c); system.assertEquals(null, opp4.Rating05__c); } else if (thisMonth == 6) { system.assertEquals(opp4.Rating__c, opp4.Rating05__c); system.assertEquals(null, opp4.Rating06__c); } else if (thisMonth == 7) { system.assertEquals(opp4.Rating__c, opp4.Rating06__c); system.assertEquals(null, opp4.Rating07__c); } else if (thisMonth == 8) { system.assertEquals(opp4.Rating__c, opp4.Rating07__c); system.assertEquals(null, opp4.Rating08__c); } else if (thisMonth == 9) { system.assertEquals(opp4.Rating__c, opp4.Rating08__c); system.assertEquals(null, opp4.Rating09__c); } else if (thisMonth == 10) { system.assertEquals(opp4.Rating__c, opp4.Rating09__c); system.assertEquals(null, opp4.Rating10__c); } else if (thisMonth == 11) { system.assertEquals(opp4.Rating__c, opp4.Rating10__c); system.assertEquals(null, opp4.Rating11__c); } else if (thisMonth == 12) { system.assertEquals(opp4.Rating__c, opp4.Rating11__c); system.assertEquals(null, opp4.Rating12__c); } else {} } }