/** * 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 public class AccountTriggerTest { private static Address_Level__c al { get; set; } private static Address_Level2__c al2 { get; set; } private static void init() { al = new Address_Level__c(); al.Name = '東京'; al.Level1_Code__c = 'CN-99'; al.Level1_Sys_No__c = '999999'; insert al; al2 = new Address_Level2__c(); al2.Level1_Code__c = 'CN-99'; al2.Level1_Sys_No__c = '999999'; al2.Level1_Name__c = '東京'; al2.Name = '渋谷区'; al2.Level2_Code__c = 'CN-9999'; al2.Level2_Sys_No__c = '9999999'; al2.Address_Level__c = al.id; insert al2; } // MB_客户 @isTest public static void syncMBAccountTest() { init(); Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin]; // ユーザー作成 User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner; // 取引先作成 List rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP']; List mbaccounts = [select Id, Account__c from MB_Account__c]; System.assertEquals(0, mbaccounts.size()); Account hp = new Account(RecordTypeId = rectHp[0].Id, Name = 'SoakupTestHp', OwnerId = hpOwner.Id); insert hp; List mbaccounts2 = [select Id, Account__c, State_Text__c from MB_Account__c order by Account__c]; // System.assertEquals(9, mbaccounts2.size()); // MB_Account__c mbaccount1 = [select Id, Account__c, State_Text__c from MB_Account__c where Account__c = :hp.Id]; // System.assertEquals(hp.Id, mbaccount1.Account__c); // System.assertEquals(null, mbaccount1.State_Text__c); hp.State_Master__c = al.id; hp.City_Master__c = al2.id; hp.ownerid = hpOwner.id; NFM001Controller.isRunning = false; update hp; // mbaccount1 = [select Id, Account__c, State_Text__c from MB_Account__c where Account__c = :hp.Id]; // System.assertEquals(hp.Id, mbaccount1.Account__c); //System.assertEquals('東京', mbaccount1.State_Text__c); mbaccounts2 = [select Id, Account__c, State_Text__c from MB_Account__c order by Account__c]; // System.assertEquals(9, mbaccounts2.size()); // System.assertEquals(hp.Id, mbaccounts2[0].Account__c); delete hp; List mbaccounts3 = [select Id, Account__c from MB_Account__c]; // System.assertEquals(8, mbaccounts3.size()); } // 客户2 @isTest static void syncAccount2Test() { init(); List rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP']; if (rectHp.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_Class_GI']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI']; if (rectDpt.size() == 0) { return; } Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin]; // ユーザー作成 User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner; List acc2s = [select Id, Name, Account_OrgId__c, Account_Org__c, Account__c, RecordType_DeveloperName__c from Account2__c]; System.assertEquals(0, acc2s.size()); // 病院作成 Account hp = new Account(RecordTypeId = rectHp[0].Id, Name = 'syncAccount2Hp', OwnerId = hpOwner.Id); insert hp; hp = [select Id, Name, RecordType_DeveloperName__c, Account2__c from Account where Id = :hp.Id]; Account dc = [select Id, Name, RecordType_DeveloperName__c, Account2__c from Account where ParentId = :hp.Id and RecordType_DeveloperName__c = 'Department_Class_GI']; Account2__c hp2 = [select Id, Name, Account_OrgId__c, Account_Org__c, Account__c, RecordType_DeveloperName__c from Account2__c where Account_Org__c = :hp.Id]; List dc2List = [select Id, Name, Account_OrgId__c, Account_Org__c, Account__c, RecordType_DeveloperName__c from Account2__c where Account_Org__r.ParentId = :hp.Id]; Account2__c dc2 = [select Id, Name, Account_OrgId__c, Account_Org__c, Account__c, RecordType_DeveloperName__c from Account2__c where Account_Org__r.ParentId = :hp.Id and RecordType_DeveloperName__c = 'Department_Class_GI']; System.assertEquals(hp.Name, hp2.Name); System.assertEquals(hp.Id, hp2.Account__c); System.assertEquals(hp.Id, hp2.Account_Org__c); System.assertEquals(hp.Id, hp2.Account_OrgId__c); System.assertEquals(hp.RecordType_DeveloperName__c, hp2.RecordType_DeveloperName__c); System.assertEquals(hp.Account2__c, hp2.Id); System.assertEquals(8, dc2List.size()); System.assertEquals(dc.Name, dc2.Name); System.assertEquals(dc.Account2__c, dc2.Id); System.assertEquals(dc.Id, dc2.Account__c); System.assertEquals(dc.Id, dc2.Account_Org__c); System.assertEquals(dc.Id, dc2.Account_OrgId__c); // 診療科を作る NFM001Controller.isRunning = false; Account dpt = new Account(RecordTypeId = rectDpt[0].Id); dpt.Name = '*'; dpt.Department_Name__c = 'TestDepart'; dpt.ParentId = dc.Id; dpt.Department_Class__c = dc.Id; dpt.Hospital__c = hp.Id; insert dpt; dpt = [select Id, ParentId, Name, RecordType_DeveloperName__c, Account2__c from Account where Id = :dpt.Id]; Account2__c dpt2 = [select Id, Name, Account_OrgId__c, Account_Org__c, Account__c, RecordType_DeveloperName__c from Account2__c where Account_Org__c = :dpt.Id]; System.assertEquals(dpt.Name, dpt2.Name); System.assertEquals(dpt.Account2__c, dpt2.Id); System.assertEquals(dpt.ParentId, dpt2.Account__c); System.assertEquals(dpt.Id, dpt2.Account_Org__c); System.assertEquals(dpt.Id, dpt2.Account_OrgId__c); System.assertEquals(dpt.RecordType_DeveloperName__c, dpt2.RecordType_DeveloperName__c); // 名前変更 NFM001Controller.isRunning = false; hp.Name = 'syncAccount2_Hp'; update hp; hp = [select Id, Name, RecordType_DeveloperName__c, Account2__c from Account where Id = :hp.Id]; dc = [select Id, Name, RecordType_DeveloperName__c, Account2__c from Account where ParentId = :hp.Id and RecordType_DeveloperName__c = 'Department_Class_GI']; dpt = [select Id, ParentId, Name, RecordType_DeveloperName__c, Account2__c from Account where Id = :dpt.Id]; hp2 = [select Id, Name, Account_OrgId__c, Account_Org__c, Account__c, RecordType_DeveloperName__c from Account2__c where Account_Org__c = :hp.Id]; dc2 = [select Id, Name, Account_OrgId__c, Account_Org__c, Account__c, RecordType_DeveloperName__c from Account2__c where Account_Org__r.ParentId = :hp.Id and RecordType_DeveloperName__c = 'Department_Class_GI']; dpt2 = [select Id, Name, Account_OrgId__c, Account_Org__c, Account__c, RecordType_DeveloperName__c from Account2__c where Account_Org__c = :dpt.Id]; System.assertEquals(hp.Name, hp2.Name); System.assertEquals(hp.Account2__c, hp2.Id); System.assertEquals(hp.Id, hp2.Account__c); System.assertEquals(hp.Id, hp2.Account_Org__c); System.assertEquals(hp.Id, hp2.Account_OrgId__c); System.assertEquals(hp.RecordType_DeveloperName__c, hp2.RecordType_DeveloperName__c); System.assertEquals(dc.Name, dc2.Name); System.assertEquals(dc.Account2__c, dc2.Id); System.assertEquals(dpt.Name, dpt2.Name); System.assertEquals(dpt.Account2__c, dpt2.Id); List acc2List = [select Id, Account__c, Account_Org__c from Account2__c order by Account_Org__c]; System.assertEquals(10, acc2List.size()); // HP(1) + DC(8) + DPT(1) System.assertEquals(hp.Id, acc2List[0].Account__c); // 削除 NFM001Controller.isRunning = false; delete dpt; acc2List = [select Id, Account__c from Account2__c]; System.assertEquals(9, acc2List.size()); } @isTest static void changeOwnerTest() { init(); List rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP']; if (rectHp.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_Class_GI']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI']; if (rectDpt.size() == 0) { return; } Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin]; // ユーザー作成 User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner; User hpOwner2 = new User(Test_staff__c = true, LastName = 'hp2', FirstName = 'owner', Alias = 'hp2', CommunityNickname = 'hpOwner2', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner2@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner2; // 病院作成 Account hp = new Account(RecordTypeId = rectHp[0].Id, Name = 'hp', OwnerId = hpOwner.Id); insert hp; Account dc = [select Id, Name, RecordType_DeveloperName__c, Account2__c from Account where ParentId = :hp.Id and RecordType_DeveloperName__c = 'Department_Class_GI']; Account dc2 = [select Id, Name, RecordType_DeveloperName__c, Account2__c from Account where ParentId = :hp.Id and RecordType_DeveloperName__c = 'Department_Class_BF']; // 診療科を作る NFM001Controller.isRunning = false; Account dpt = new Account(RecordTypeId = rectDpt[0].Id); dpt.Name = '*'; dpt.Department_Name__c = 'TestDepart'; dpt.ParentId = dc.Id; dpt.Department_Class__c = dc.Id; dpt.Hospital__c = hp.Id; insert dpt; dc.OwnerId = hpOwner2.Id; dc2.OwnerId = hpOwner2.Id; update new Account[] {dc, dc2}; } @isTest static void fseChangeToUpdRepairTest() { List rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP']; if (rectHp.size() == 0) { return; } List rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_Class_GI']; if (rectSct.size() == 0) { return; } List rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI']; if (rectDpt.size() == 0) { return; } Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin]; User hpOwner = new User(Test_staff__c = true, LastName = 'hp', FirstName = 'owner', Alias = 'hp', Work_Location__c = '北京', CommunityNickname = 'hpOwner', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner; User hpOwner2 = new User(Test_staff__c = true, LastName = 'hp2', FirstName = 'owner', Alias = 'hp2', Work_Location__c = '重庆', CommunityNickname = 'hpOwner2', Email = 'olympus_hpowner@sunbridge.com', Username = 'olympus_hpowner2@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id); insert hpOwner2; // 病院作成 Account hp = new Account(RecordTypeId = rectHp[0].Id, Name = 'hp', OwnerId = hpOwner.Id); hp.FSE_GI_Main_Leader__c = hpOwner.Id; hp.FSE_SP_Main_Leader__c = hpOwner2.Id; insert hp; Account dc = [select Id, Name, RecordType_DeveloperName__c, Account2__c from Account where ParentId = :hp.Id and RecordType_DeveloperName__c = 'Department_Class_GI']; // 診療科を作る Account dpt = new Account(RecordTypeId = rectDpt[0].Id); dpt.Name = '*'; dpt.Department_Name__c = 'TestDepart'; dpt.ParentId = dc.Id; dpt.Department_Class__c = dc.Id; dpt.Hospital__c = hp.Id; insert dpt; //Product2 productA = new Product2( Name='テスト商品'); //insert productA; //// 価格表エントリを作成する //PricebookEntry entry = new PricebookEntry( Pricebook2Id=pricebookId, Product2Id=productA.Id); //entry.UnitPrice = 0; //entry.IsActive = true; //entry.UseStandardPrice = false; //entry.CurrencyIsoCode = 'CNY'; //entry.Product2Id = productA.Id; //insert entry; // 納入機器を作成する Asset asset = new Asset(); asset.Name = 'テスト機器'; asset.AccountId = dpt.Id; asset.Department_Class__c = dc.Id; asset.Hospital__c = hp.Id; asset.SerialNumber = 'testserial'; insert asset; // 修理を作成する01 Repair__c repair01 = new Repair__c(); repair01.Account__c = dpt.Id; repair01.Department_Class__c = dc.Id; repair01.Hospital__c = hp.Id; repair01.Delivered_Product__c = asset.Id; repair01.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today().addDays(0); // 维修合同判断日がサービス契約の中間辺りの日付 repair01.FSE_Work_Location__c = '上海'; insert repair01; hp.FSE_GI_Main_Leader__c = hpOwner2.Id; hp.FSE_SP_Main_Leader__c = hpOwner.Id; update hp; } @isTest static void FirstparagraphTest(){ Account dealers = new Account(); dealers.RecordTypeId = '01210000000Qem1'; dealers.Name = 'Test Dealers'; dealers.MonthlyPayment__c = false; insert dealers; dealers.MonthlyPayment__c = true; update dealers; } }