@Istest
public class lexRepairAgainAnControllerTest {
   static testMethod void testMethod01(){
    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 testOwner = new User(Test_staff__c = true, LastName = 'test', FirstName = 'owner', Alias = 'test', CommunityNickname = 'testOwner', Email = 'olympus_test@sunbridge.com', Username = 'olympus_test@sunbridge.com', IsActive = true, EmailEncodingKey = 'ISO-2022-JP', TimeZoneSidKey = 'Asia/Tokyo', LocaleSidKey = 'ja_JP', LanguageLocaleKey = 'ja', ProfileId = p.id);
    insert testOwner;
    List<RecordType> rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'];
    List<RecordType> rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI'];
    if (rectDpt.size() == 0) {
        return;
    }
    Account hp = new Account(RecordTypeId = rectHp[0].Id, Name = 'SoakupTestHp', 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 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;
    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;
    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 = '上海';
    repair01.Service_Repair_No__c = 'SAP0001';
    repair01.Incharge_Staff__c = hpOwner.Id;
    repair01.On_site_repair__c = 'RC修理';
    repair01.work_location_select__c = '北京办事处';
    repair01.SAPRepairNo__c = 'RepairAgain';
    insert repair01;

    Repair__c repair02 = new Repair__c();
    repair02.Account__c = dpt.Id;
    repair02.Department_Class__c = dc.Id;
    repair02.Hospital__c = hp.Id;
    repair02.Delivered_Product__c = asset.Id;
    repair02.SERVICE_CONTRACT_JUDEGE_DAY__C = Date.today().addDays(0); 
    repair02.FSE_Work_Location__c = '上海';
    repair02.Service_Repair_No__c = 'SAP0002';
    repair02.Incharge_Staff__c = hpOwner.Id;
    repair02.On_site_repair__c = 'RC修理';
    repair02.work_location_select__c = '北京办事处';
    repair02.SAPRepairNo__c = 'RepairAgain1';
    insert repair02;


    RepairAgainAn__c ra = new RepairAgainAn__c();
    ra.Name = 'TestRa2';
    ra.Repair__c = repair01.Id;
    insert ra;


    lexRepairAgainAnController.initRepair(repair01.id);
    lexRepairAgainAnController.init(ra.id);
    lexRepairAgainAnController.updateStatus(ra.id,'RC填写完毕');
    lexRepairAgainAnController.updateRepairAgainStatus(ra.id,'OSH受理');
    lexRepairAgainAnController.updateRepairAgainAnApproveStatus(ra.id,'OSH填写完毕');
    lexRepairAgainAnController.updateRepairAgainAnApproveStatus2(ra.id,'OSH填写完毕');
   }
}