/** * 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 OFSHospitalLayoutControllerTest { public class TestRepo { public final Integer ASSETMAX = 8; public Account hp { get; private set; } public OFSHospitalLayout__c layout { get; private set; } public List assets { get; private set; } TestRepo() { assets = new List(); createLayout(); createHospital(); } public void createHospital() { // 病院を作る hp = new Account(); hp.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id; hp.Name = 'test hospital'; insert hp; } private void createLayout() { layout = new OFSHospitalLayout__c(); layout.Name = '医院'; layout.section1__c = '{"id":"001","title":"顾客信息","column":"2","showHeader":"true"}'; layout.field1__c = '{"sectionId":"001","api":"Name","right":"true"}'; layout.field2__c = '{"sectionId":"001","api":"Management_Code__c","right":"false"}'; layout.section2__c = '{"id":"002","title":"地址信息","column":"1","showHeader":"true"}'; layout.field3__c = '{"sectionId":"002","api":"Town__c"}'; layout.field4__c = '{"sectionId":"002", "api":{"columns":["OCM_Category__c", "Grade__c", "GI_Main__c", "SP_Main__c", "FSE_Main__c"], "lables":["OCM分类", "政府分级", "GI主担当", "SP主担当", "FSE主担当"]}, "lable":""}'; layout.recordType_devName__c = 'HP'; layout.relationList1__c = '{"object":"Asset", "condition_column":"Hospital__c", "field_set":"test"}'; layout.report1__c = '00O10000004ROGk'; layout.report1_Column__c = 'Event__c.AccountParentParentId__c'; layout.report1_Name__c = '每月拜访次数'; insert layout; } private Asset createAsset(String name, String serialNo) { Asset asset = new Asset(); asset.Name = name; asset.AccountId = hp.Id; //asset.Department_Class__c = dcId; asset.Hospital__c = hp.Id; asset.SerialNumber = serialNo; //asset.Product2Id = prId; asset.InstallDate = Date.today(); return asset; } public void initAssets() { for (Integer i= 0; i < ASSETMAX; i++) { assets.add(createAsset('testAsset'+i, '0000'+i)); } insert assets; } } static testMethod void HospitalTest() { Test.startTest(); TestRepo repo = new TestRepo(); Apexpages.currentPage().getParameters().put('id', repo.hp.Id); // FIXME yu why Id by katsu、こもじ id ですよ。 OFSHospitalLayoutController controller = new OFSHospitalLayoutController(new ApexPages.StandardController(repo.hp)); // FIXME yu StandardControllerのUnitTestだめですね。 by katsu。 // 初始化 controller.init(); system.assertEquals(2, controller.sectionList.size()); system.assertEquals('顾客信息', controller.sectionList[0].title); system.assertEquals(1, controller.sectionList[1].column); system.assertEquals(2, controller.sectionList[1].getSectionItemList().size()); // field3, field4 controller.prePage(); controller.nextPage(); controller.save(); controller.index = 1; controller.showList(); controller.irCreate(); } }