/**
|
* 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 RepairHpDeptUpdTriggerTest {
|
|
static testMethod void testUpdate() {
|
// recode type を取得
|
List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
|
if (rectCo.size() == 0) {
|
return;
|
}
|
List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
|
if (rectSct.size() == 0) {
|
return;
|
}
|
List<RecordType> rectDpt = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Account' and Name IN ('診療科 消化科', '診療科 呼吸科') order by Name desc];
|
if (rectDpt.size() == 0) {
|
return;
|
}
|
|
// insert
|
Account company1 = new Account();
|
Account company2 = new Account();
|
company1.RecordTypeId = rectCo[0].Id;
|
company1.Name = '病院テスト1';
|
company2.RecordTypeId = rectCo[0].Id;
|
company2.Name = '病院テスト2';
|
List<Account> hps = new Account[] {company1, company2};
|
insert hps;
|
|
List<Account> dc1s = [Select Id, Name, Department_Class_Label__c, Sys_Dept_Name_Change_Chk__c from Account where Parent.Id = :company1.Id order by Department_Class_Label__c];
|
List<Account> dc2s = [Select Id, Name, Department_Class_Label__c, Sys_Dept_Name_Change_Chk__c from Account where Parent.Id = :company2.Id order by Department_Class_Label__c];
|
|
Account depart1 = new Account();
|
depart1.RecordTypeId = rectDpt[0].Id;
|
depart1.Name = '*';
|
depart1.Department_Name__c = '診療科1';
|
depart1.ParentId = dc1s[0].Id;
|
depart1.Department_Class__c = dc1s[0].Id;
|
depart1.Hospital__c = company1.Id;
|
|
Account depart2 = new Account();
|
depart2.RecordTypeId = rectDpt[1].Id;
|
depart2.Name = '*';
|
depart2.Department_Name__c = '診療科2';
|
depart2.ParentId = dc2s[1].Id;
|
depart2.Department_Class__c = dc2s[1].Id;
|
depart2.Hospital__c = company2.Id;
|
|
insert new Account[] {depart1, depart2};
|
|
//産品を作成する
|
List<Product2> prdList = new List<Product2>();
|
Product2 prd1 = new Product2();
|
prd1.ProductCode_Ext__c = 'HistoryPrd1';
|
prd1.ProductCode = 'HistoryPrd1';
|
prd1.Repair_Product_Code__c = 'HistoryPrd1_RP';
|
prd1.Name = 'HistoryPrd1';
|
prd1.Manual_Entry__c = false;
|
prdList.add(prd1);
|
insert prdList;
|
|
//保有設備を作成する
|
Asset ast = new Asset();
|
ast.Name = '保有設備';
|
ast.AccountId = depart1.Id;
|
ast.Department_Class__c = dc1s[0].Id;
|
ast.Hospital__c = company1.Id;
|
//ast.Product2Id = prd1.Id;
|
ast.SerialNumber = 'HistorySerialNumber';
|
|
Asset ast2 = new Asset();
|
ast2.Name = '保有設備2';
|
ast2.AccountId = depart2.Id;
|
ast2.Department_Class__c = dc2s[1].Id;
|
ast2.Hospital__c = company2.Id;
|
//ast2.Product2Id = prd1.Id;
|
ast2.SerialNumber = 'HistorySerialNumber2';
|
|
insert new Asset[] {ast, ast2};
|
|
// 修理を作成する
|
List<Repair__c> repairList = new List<Repair__c>();
|
Repair__c repair1 = new Repair__c();
|
repair1.Account__c = depart1.Id;
|
repair1.Delivered_Product__c = ast.Id;
|
repair1.Department_Class__c = ast.Department_Class__c;
|
repair1.Hospital__c = ast.Hospital__c;
|
|
Repair__c repair2 = new Repair__c();
|
repair2.Account__c = depart2.Id;
|
repair2.Delivered_Product__c = ast2.Id;
|
repair2.Department_Class__c = ast2.Department_Class__c;
|
repair2.Hospital__c = ast2.Hospital__c;
|
insert new Repair__c[] {repair1, repair2};
|
|
//保有設備の診療科を変更
|
ast.AccountId = depart2.Id;
|
ast2.AccountId = depart1.Id;
|
update new Asset[] {ast, ast2};
|
|
//修理の診療科を変更
|
repair1.Account__c = depart2.Id;
|
repair2.Account__c = depart1.Id;
|
update new Repair__c[] {repair1, repair2};
|
|
Repair__c repairChanged = [Select Id, Name, Department_Class__c, Hospital__c from Repair__c where Id = :repair1.Id ];
|
System.assertEquals(repairChanged.Department_Class__c, dc2s[1].Id);
|
System.assertEquals(repairChanged.Hospital__c , company2.Id);
|
|
Repair__c repairChanged2 = [Select Id, Name, Department_Class__c, Hospital__c from Repair__c where Id = :repair2.Id];
|
System.assertEquals(repairChanged2.Department_Class__c, dc1s[0].Id);
|
System.assertEquals(repairChanged2.Hospital__c , company1.Id);
|
}
|
}
|