/**
 * @author shentianyi@sohobb.jp
 * @date 2017.08.24
 *
 * @description This class contains unit tests for validating
 * the behavior of LightningUtil.cls.
 *
 * This class includes nine unit test method that
 * verify whether a particular piece of code is working properly.
 *
 * This class has above 75% coverage to the LightningUtil.cls
 */
@isTest
private class LightningUtilTest {
    public static Account account1 = new Account();
    public static Account account2 = new Account();
    public static Contact contact1 = new Contact();
    public static Contact contact2 = new Contact();
    public static User user = new User();
    public static Agency_Hospital_Link__c agency_hospital_link = new Agency_Hospital_Link__c();
    public static Agency_Contact__c agency_contact = new Agency_Contact__c();
    public static ProductTypes__c product_types = new ProductTypes__c();
    // 经销商活动周报导入 update by vivek start
    public static ProductTypes__c product_types1 = new ProductTypes__c();
    public static ProductTypes__c product_types2 = new ProductTypes__c();
    public static ProductTypes__c product_types3 = new ProductTypes__c();
    // 经销商活动周报导入 update by vivek end
    public static Agency_Opportunity__c agency_opportunity = new Agency_Opportunity__c();
    public static Agency_Opportunity__c agency_opportunity2 = new Agency_Opportunity__c();
    public static OlympusCalendar__c olympus_calendar = new OlympusCalendar__c();
    public static String report_id;
    public static String report_header_id;
        
    /**
     * @description AgencyOpportunityHandlerテスト
     */
    static testMethod void unitTestAgencyOpportunityHandler() {
        Oly_TriggerHandler.bypass('AgencyReportHeaderHandler');
        Oly_TriggerHandler.bypass('AgencyHospitalHandler');
        StaticParameter.EscapeAccountTrigger = true;
        StaticParameter.EscapeNFM007Trigger = true;
        StaticParameter.EscapeOpportunityBefUpdTrigger = true;
        StaticParameter.EscapeOpportunityHpDeptUpdTrigger = true;
        StaticParameter.EscapeSyncOpportunityTrigger = true;
        StaticParameter.EventOpportunityPileUpExeFlg = true;
        StaticParameter.EscapeNFM001AgencyContractTrigger = true;
        StaticParameter.EscapeNFM001AgencyContractTrigger2 = true;
        StaticParameter.EscapeLeadTrigger = true;
        StaticParameter.EscapeOpportunityownerUpdate = true;
        ControllerUtil.EscapeNFM001Trigger = true;
        ControllerUtil.EscapeMaintenanceContractAfterUpdateTrigger = true;
        StaticParameter.EscapeNFM001Trigger = true;
        StaticParameter.EscapeMaintenanceContractAfterUpdateTrigger = true;
        // 取引先
        account1.Name = 'test1医院';
        account1.RecordTypeId = '01210000000QemG';
        insert account1;
        List < Account > acclist = [select RecordTypeId, Name
            from Account
        ];
        account2.Name = 'test1经销商';
        account2.RecordTypeId = '01210000000Qem1';
        insert account2;
        List < Account > acc2list = [select RecordTypeId, Name
            from Account
        ];
        System.assertEquals(2, acc2list.size());
        // 取引先責任者
        contact1.AccountId = account1.Id;
        contact1.FirstName = '責任者';
        contact1.LastName = 'test1医院';
        insert contact1;
        List < Contact > contactlist = [select Id, FirstName
            from Contact
        ];
        System.assertEquals('責任者', contactlist[0].FirstName);
        contact2.AccountId = account2.Id;
        contact2.FirstName = '責任者';
        contact2.LastName = 'test1经销商';
        insert contact2;
        List < Contact > contact2list = [select Id, FirstName
            from Contact
        ];
        System.assertEquals('責任者', contact2list[0].FirstName);
        // ユーザー
        //Profile p = [select Id from Profile where Name = '901_经销商周报'];
        Profile p = [select Id from Profile where Name = '901_经销商活动系统'];
        user.ProfileId = p.Id;
        user.ContactId = contact2.Id;
        user.FirstName = 'ユーザー';
        user.LastName = 'テスト';
        user.Email = 'test_user@example.com';
        user.emailencodingkey = 'UTF-8';
        user.languagelocalekey = 'zh_CN';
        user.localesidkey = 'ja_JP';
        user.timezonesidkey = 'Asia/Shanghai';
        user.Username = 'test_user@example.com' + System.now().millisecond();
        user.Alias = 'テユ';
        user.CommunityNickname = 'tu' + System.now().millisecond();
        user.SalesManager__c = UserInfo.getUserId();
        insert user;
        List < user > users = [select Id, Name, LastName, FirstName from User where LastName = 'テスト'];
        System.assertEquals('ユーザー', users[0].FirstName);
        agency_hospital_link.Name = 'test1代理店医院';
        agency_hospital_link.Hospital__c = account1.Id;
        agency_hospital_link.Agency__c = account2.Id;
        agency_hospital_link.OwnerId = user.Id;
        agency_hospital_link.Agency_Campaign_Obj__c = true;
        insert agency_hospital_link;
        List < Agency_Hospital_Link__c > agencylist = [select Id, Name from Agency_Hospital_Link__c where Id = : agency_hospital_link.Id];
        System.assertEquals('test1医院', agencylist[0].Name);
        Id rtId = Schema.SObjectType.Agency_Opportunity__c.getRecordTypeInfosByDeveloperName().get('Opportunity').getRecordTypeId();
        agency_opportunity.Agency_Person__c = contactlist[0].id;
        agency_opportunity.RecordTypeId = rtId;
        agency_opportunity.Name = '引合';
        agency_opportunity.Hospital_Target__c = account1.Id;
        agency_opportunity.Agency__c = account2.Id;
        agency_opportunity.Agency_Hospital__c = agency_hospital_link.Id;
        agency_opportunity.StageName__c = '还没申请预算';
        agency_opportunity.OwnerId = user.Id;
        agency_opportunity.NewOpportunity_Agency_Apply_Status__c = '批准';
        agency_opportunity.Department_Cateogy__c = 'ET';
        agency_opportunity.Sales_Manager__c = user.Id;
        insert agency_opportunity;
        List < Agency_Opportunity__c > opportunitylist = [select Id, Name from Agency_Opportunity__c];
        System.assertEquals(1, opportunitylist.size());
        rtId = Schema.SObjectType.Agency_Opportunity__c.getRecordTypeInfosByDeveloperName().get('Opportunity').getRecordTypeId();
        agency_opportunity2.Agency_Person__c = contact2list[0].id;
        agency_opportunity2.RecordTypeId = rtId;
        agency_opportunity2.Name = '引合2';
        agency_opportunity2.Hospital_Target__c = account1.Id;
        agency_opportunity2.Agency__c = account2.Id;
        agency_opportunity2.OwnerId = user.Id;
        agency_opportunity2.NewOpportunity_Agency_Apply_Status__c = '草案中';
        agency_opportunity2.Department_Cateogy__c = 'GS';
        agency_opportunity2.Sales_Manager__c = UserInfo.getUserId();
        insert agency_opportunity2;
        System.debug(agency_opportunity2.Name);
        List < Agency_Opportunity__c > opportunitylist2 = [select Id, Name from Agency_Opportunity__c];
        System.assertEquals(2, opportunitylist2.size());
        olympus_calendar.Date__c = Date.valueOf('2017-04-10');
        olympus_calendar.OwnerId = user.Id;
        insert olympus_calendar;
        List < OlympusCalendar__c > olympusCalendarlist = [select Id, Name, Date__c from OlympusCalendar__c];
        System.assertEquals(Date.valueOf('2017-04-10'), olympusCalendarlist[0].Date__c);
        System.runAs(user) {
            List < Agency_Opportunity__c > opportunity_data = WeeklyReportCmp.selectOpportunityByIdAndHospitalLinkId(agency_opportunity.Id, agency_hospital_link.Id);
            List < Agency_Opportunity__c > agencyopportunity = [select Id, Name, Agency__c, Agency_ID__c, Owner_Agency_ID__c,
                Agency_Hospital_All__c, Agency_Hospital__c, Agency_Hospital_Target__c
                from Agency_Opportunity__c
            ];
            System.assertEquals('::' + agency_opportunity.Name, agencyopportunity[0].Name);
            System.assertEquals(agency_opportunity.Agency__c, agencyopportunity[0].Owner_Agency_ID__c);
            System.assertEquals(agency_opportunity.Agency_Hospital_All__c, agencyopportunity[0].Agency_Hospital_Target__c);
        }
    }
    /**
     * @description AgencyReportHandlerテスト
     */
    static testMethod void unitTestAgencyReportHandler() {
        // 取引先
        account1.Name = 'test1医院';
        account1.RecordTypeId = '01210000000QemG';
        insert account1;
        account2.Name = 'test1经销商';
        account2.RecordTypeId = '01210000000Qem1';
        insert account2;
        // 取引先責任者
        contact1.AccountId = account1.Id;
        contact1.FirstName = '責任者';
        contact1.LastName = 'test1医院';
        insert contact1;
        contact2.AccountId = account2.Id;
        contact2.FirstName = '責任者';
        contact2.LastName = 'test1经销商';
        insert contact2;
        // ユーザー
        Profile p = [select Id from Profile where Name = '901_经销商活动系统'];
        user.ProfileId = p.Id;
        user.ContactId = contact2.Id;
        user.FirstName = 'ユーザー';
        user.LastName = 'テスト';
        user.Email = 'test_user@example.com';
        user.emailencodingkey = 'UTF-8';
        user.languagelocalekey = 'zh_CN';
        user.localesidkey = 'ja_JP';
        user.timezonesidkey = 'Asia/Shanghai';
        user.Username = 'test_user@example.com';
        user.Alias = 'テユ';
        user.CommunityNickname = 'テストユーザー';
        insert user;
        Date sDate = Date.newInstance(2017, 4, 10);
        //String cc = [select Id,Country__c from User where Id = :Userinfo.getUserId()].Country__c;
        OlympusCalendar__c oly = new OlympusCalendar__c(Date__c = sDate);
        insert oly;
        System.runAs(user) {
            // 週報ヘッダー作成
            String name = 'テスト ユーザー';
            String s_date = '2017-04-10';
            String s_agency = contact2.Id;
            String head_key = contact2.Id + ':20170410';
            report_header_id = WeeklyReportCmp.createReportHeader(name, s_date, s_agency, head_key);
            Agency_Report_Header__c data = [select Id, Name, Agency__c, Owner_Agency_ID__c, Agency_ID__c, Week__c, Agency_Person2__c, HeaderInputKey__c, OlympusDate__r.Date__c from Agency_Report_Header__c where HeaderInputKey__c = : head_key];
            System.assertEquals(data.Agency__c, data.Owner_Agency_ID__c);
            System.assertEquals(data.Agency_ID__c, String.valueOf(data.Owner_Agency_ID__c).substring(0, 15));
        }
    }
    /**
     * @description unitTestAgencyAccountCmp1-2はAgencyAccountCmpテストです
     */
    static testMethod void unitTestAgencyAccountCmp1() {
        testInit();
        // Implement test code
        System.runAs(user) {
            List < Agency_Contact__c > res = AgencyAccountCmp.getAccounts();
            System.assertEquals(2, res.size());
        }
    }
    static testMethod void unitTestAgencyAccountCmp2() {
        // Implement test code
        testInit();
        // Implement test code
        System.runAs(user) {
            List < Agency_Contact__c > res = AgencyAccountCmp.searchAccounts('', 'test1');
            System.assertEquals(1, res.size());
        }
    }
    /**
     * @description unitTestWeeklyReportCmp1-3はWeeklyReportCmpテストです
     */
    static testMethod void unitTestWeeklyReportCmp1() {
        //  StaticParameter.EscapeOpportunityBefUpdTrigger = true;
        // StaticParameter.EscapeOpportunityHpDeptUpdTrigger = true;
        // StaticParameter.EscapeSyncOpportunityTrigger = true;
        // StaticParameter.EscapeNFM001Trigger = true;
        saveAgencyReportTest();
        System.runAs(user) {
            String date_str = '2017-04-10';
            String person_str = '';
            WeeklyReportCmp reports = WeeklyReportCmp.getReports(date_str, person_str);
            List < Agency_Report__c > report = WeeklyReportCmp.getReportsById(report_id);
            system.assertEquals(report_id, report[0].Id);
        }
    }
    static testMethod void unitTestWeeklyReportCmp2() {
        saveAgencyReportTest();
        System.runAs(user) {
            String Department_Cateogy = '';
            String Purpose_Type = '';
            String Agency_Report_Header = '';
            String Agency_Hospital = '';
            String Person_In_Charge2 = '';
            String doctor = '';
            String Submit_date = '';
            String Product_Category = '';
            String Result = '';
            String Opportunity = '';
            Department_Cateogy = 'GI';
            Purpose_Type = '询价挖掘-会议对应';
            Agency_Report_Header = report_header_id;
            Agency_Hospital = agency_hospital_link.Id;
            Person_In_Charge2 = contact2.Id;
            doctor = agency_contact.Id;
            Submit_date = '2017-04-10';
            Product_Category = product_types.Id;
            Result = 'result_test';
            Opportunity = agency_opportunity.Id;
            Test.startTest();
            // 週報編集
            Department_Cateogy = 'BF';
            report_id = WeeklyReportCmp.editAgencyReport(report_id, Department_Cateogy, Purpose_Type, Agency_Report_Header, Agency_Hospital, Person_In_Charge2, doctor, Submit_date, Product_Category, '', '', Result, Opportunity, '', '', '', '', Submit_date);
            Agency_Report__c data = [select Id, Department_Cateogy__c, Purpose_Type__c, Agency_Report_Header__c, Agency_Hospital__c,
                Person_In_Charge2__c, doctor2__c, Submit_date__c, Product_Category__c, Result__c, Opportunity__c from Agency_Report__c where Id = : report_id
            ];
            System.assertEquals(Department_Cateogy, data.Department_Cateogy__c);
            Department_Cateogy = 'GYN';
            report_id = WeeklyReportCmp.editAgencyReport(report_id, Department_Cateogy, Purpose_Type, Agency_Report_Header, Agency_Hospital, Person_In_Charge2, doctor, Submit_date, Product_Category, '', '', Result, Opportunity, '', '', '', '', Submit_date);
            data = [select Id, Department_Cateogy__c, Purpose_Type__c, Agency_Report_Header__c, Agency_Hospital__c,
                Person_In_Charge2__c, doctor2__c, Submit_date__c, Product_Category__c, Result__c, Opportunity__c from Agency_Report__c where Id = : report_id
            ];
            System.assertEquals(Department_Cateogy, data.Department_Cateogy__c);
            Department_Cateogy = 'GS';
            report_id = WeeklyReportCmp.editAgencyReport(report_id, Department_Cateogy, Purpose_Type, Agency_Report_Header, Agency_Hospital, Person_In_Charge2, doctor, Submit_date, Product_Category, '', '', Result, Opportunity, '', '', '', '', Submit_date);
            data = [select Id, Department_Cateogy__c, Purpose_Type__c, Agency_Report_Header__c, Agency_Hospital__c,
                Person_In_Charge2__c, doctor2__c, Submit_date__c, Product_Category__c, Result__c, Opportunity__c from Agency_Report__c where Id = : report_id
            ];
            System.assertEquals(Department_Cateogy, data.Department_Cateogy__c);
            Department_Cateogy = 'URO';
            report_id = WeeklyReportCmp.editAgencyReport(report_id, Department_Cateogy, Purpose_Type, Agency_Report_Header, Agency_Hospital, Person_In_Charge2, doctor, Submit_date, Product_Category, '', '', Result, Opportunity, '', '', '', '', Submit_date);
            data = [select Id, Department_Cateogy__c, Purpose_Type__c, Agency_Report_Header__c, Agency_Hospital__c,
                Person_In_Charge2__c, doctor2__c, Submit_date__c, Product_Category__c, Result__c, Opportunity__c from Agency_Report__c where Id = : report_id
            ];
            System.assertEquals(Department_Cateogy, data.Department_Cateogy__c);
            Department_Cateogy = 'ENT';
            report_id = WeeklyReportCmp.editAgencyReport(report_id, Department_Cateogy, Purpose_Type, Agency_Report_Header, Agency_Hospital, Person_In_Charge2, doctor, Submit_date, Product_Category, '', '', Result, Opportunity, '', '', '', '', Submit_date);
            data = [select Id, Department_Cateogy__c, Purpose_Type__c, Agency_Report_Header__c, Agency_Hospital__c,
                Person_In_Charge2__c, doctor2__c, Submit_date__c, Product_Category__c, Result__c, Opportunity__c from Agency_Report__c where Id = : report_id
            ];
            System.assertEquals(Department_Cateogy, data.Department_Cateogy__c);
            Department_Cateogy = 'ET';
            report_id = WeeklyReportCmp.editAgencyReport(report_id, Department_Cateogy, Purpose_Type, Agency_Report_Header, Agency_Hospital, Person_In_Charge2, doctor, Submit_date, Product_Category, '', '', Result, Opportunity, '', '', '', '', Submit_date);
            data = [select Id, Department_Cateogy__c, Purpose_Type__c, Agency_Report_Header__c, Agency_Hospital__c,
                Person_In_Charge2__c, doctor2__c, Submit_date__c, Product_Category__c, Result__c, Opportunity__c from Agency_Report__c where Id = : report_id
            ];
            System.assertEquals(Department_Cateogy, data.Department_Cateogy__c);
            Department_Cateogy = 'OTH';
            report_id = WeeklyReportCmp.editAgencyReport(report_id, Department_Cateogy, Purpose_Type, Agency_Report_Header, Agency_Hospital, Person_In_Charge2, doctor, Submit_date, Product_Category, '', '', Result, Opportunity, '', '', '', '', Submit_date);
            data = [select Id, Department_Cateogy__c, Purpose_Type__c, Agency_Report_Header__c, Agency_Hospital__c,
                Person_In_Charge2__c, doctor2__c, Submit_date__c, Product_Category__c, Result__c, Opportunity__c from Agency_Report__c where Id = : report_id
            ];
            System.assertEquals(Department_Cateogy, data.Department_Cateogy__c);
        }
    }
    static testMethod void unitTestWeeklyReportCmp3() {
        testInit001();
        System.runAs(user) {
            // 病院リスト取得
            WeeklyReportCmp test = WeeklyReportCmp.getalldata();
            System.assertNotEquals(test, null);
        }
    }
    static testMethod void unitTestWeeklyReportCmp4() {
        // 省
        Address_Level__c al = new Address_Level__c();
        al.Name = '東京';
        al.Level1_Code__c = 'CN-99';
        al.Level1_Sys_No__c = '999999';
        insert al;
        // 市
        Address_Level2__c 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;

        // 病院を作る
        Account hospital = new Account();
        hospital.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'].id;
        hospital.Name = 'test hospital';
        hospital.Is_Active__c = '有効';
        hospital.Attribute_Type__c = '卫生部';
        hospital.Speciality_Type__c = '综合医院';
        hospital.Grade__c = '一级';
        hospital.OCM_Category__c = 'SLTV';
        hospital.Is_Medical__c = '医疗机构';
        hospital.State_Master__c = al.id;
        hospital.City_Master__c = al2.id;
        hospital.Town__c = '东京';
        insert hospital;



        // 戦略科室を得る
        Account[] strategicDep = [SELECT ID, Name FROM Account WHERE parentId = :hospital.Id AND recordType.DeveloperName = 'Department_Class_OTH'];
        // 診療科を作る
        Account dep = new Account();
        dep.recordtypeId = [Select Id FROM RecordType WHERE IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_OTH'].id;
        dep.Name = 'test dep';
        dep.AgentCode_Ext__c = '9999998';
        dep.ParentId = strategicDep[0].Id;
        dep.Department_Class__c = strategicDep[0].Id;
        dep.Hospital__c = hospital.Id;
        insert dep;

        Contact contact2 = new Contact();
        contact2.AccountId = dep.Id;
        contact2.FirstName = '責任者';
        contact2.LastName = 'test1经销商';
        insert contact2;
        
        Set<String> setStr = new Set<String>();
       String str = String.valueOf(hospital.recordtypeId);
        setStr.add(str);
         LightningUtil.selectContact(contact2.Id);
          LightningUtil.getDeptListByRecordType(hospital.Id,setStr);
        // Test.startTest();
        // WeeklyReportCmpTest.processData();
        // Test.stopTest();
    }
    private static void testInit() {
        StaticParameter.EscapeNFM007Trigger = true;
        ControllerUtil.EscapeNFM001Trigger = true;
        // 取引先
        account1.Name = 'test1医院';
        account1.RecordTypeId = '01210000000QemG';
        insert account1;
        account2.Name = 'test1经销商';
        account2.RecordTypeId = '01210000000Qem1';
        insert account2;
        // 取引先責任者
        contact1.AccountId = account1.Id;
        contact1.FirstName = '責任者';
        contact1.LastName = 'test1医院';
        insert contact1;
        contact2.AccountId = account1.Id;
        contact2.FirstName = '責任者';
        contact2.LastName = 'test2医院';
        insert contact2;
        // ユーザー
        Profile p = [select Id from Profile where Name = '901_经销商活动系统'];
        user.ProfileId = p.Id;
        user.ContactId = contact2.Id;
        user.FirstName = 'ユーザー';
        user.LastName = 'テスト';
        user.Email = 'test_user@example.com';
        user.emailencodingkey = 'UTF-8';
        user.languagelocalekey = 'zh_CN';
        user.localesidkey = 'ja_JP';
        user.timezonesidkey = 'Asia/Shanghai';
        user.Username = 'test_user@example.com';
        user.Alias = 'テユ';
        user.CommunityNickname = 'テストユーザー';
        insert user;
        // 代理店医院
        agency_hospital_link.Name = 'test1代理店医院';
        agency_hospital_link.Hospital__c = account1.Id;
        agency_hospital_link.Agency__c = account2.Id;
        agency_hospital_link.OwnerId = user.Id;
        insert agency_hospital_link;
        Agency_Contact__c ac1 = new Agency_Contact__c();
        ac1.Name = 'test1のび太';
        ac1.Agency_Hospital__c = agency_hospital_link.Id;
        insert ac1;
        List < Account > depts = [select Id from Account where Hospital_Department_Class__c = : account1.Id];
        Account dept = depts[0];
        Agency_Contact__c ac2 = new Agency_Contact__c();
        ac2.Name = 'test2のび太';
        ac2.Department_Class__c = dept.Id;
        insert ac2;
    }
    @isTest static void saveAgencyReportTest() {
        testInit001();
        System.runAs(user) {
            String name = 'テスト ユーザー';
            String s_date = '2017-04-10';
            String s_agency = contact2.Id;
            String head_key = contact2.Id + ':20170410';
            report_header_id = WeeklyReportCmp.createReportHeader(name, s_date, s_agency, head_key);
            // 週報作成
            String Department_Cateogy = '';
            String Purpose_Type = '';
            String Agency_Report_Header = '';
            String Agency_Hospital = '';
            String Person_In_Charge2 = '';
            String doctor = '';
            String Submit_date = '';
            String Product_Category = '';
            String Result = '';
            String Opportunity = '';
            Department_Cateogy = 'GI';
            Purpose_Type = '询价挖掘-会议对应';
            Agency_Report_Header = report_header_id;
            Agency_Hospital = agency_hospital_link.Id;
            Person_In_Charge2 = contact2.Id;
            doctor = agency_contact.Id;
            Submit_date = '2017-04-10';
            Product_Category = product_types.Id;
            Result = '一般';
            Opportunity = agency_opportunity.Id;
            report_id = WeeklyReportCmp.saveAgencyReport(Department_Cateogy, Purpose_Type, Agency_Report_Header, Agency_Hospital, Person_In_Charge2, doctor, Submit_date, Product_Category, '', '', Result, Opportunity, '', '', '', '', Submit_date);
            Agency_Report__c data = [select Id, Department_Cateogy__c, Purpose_Type__c, Agency_Report_Header__c, Agency_Hospital__c,
                Person_In_Charge2__c, doctor2__c, Submit_date__c, Product_Category__c, Result__c, Opportunity__c from Agency_Report__c where Id = : report_id
            ];
            System.assertEquals(Department_Cateogy, data.Department_Cateogy__c);
            System.assertEquals(Purpose_Type, data.Purpose_Type__c);
            System.assertEquals(Agency_Report_Header, data.Agency_Report_Header__c);
            System.assertEquals(Agency_Hospital, data.Agency_Hospital__c);
            System.assertEquals(Person_In_Charge2, data.Person_In_Charge2__c);
            System.assertEquals(doctor, data.doctor2__c);
            System.assertEquals(Date.valueOf(Submit_date), data.Submit_date__c);
            //System.assertEquals(Product_Category, data.Product_Category__c);
            System.assertEquals(Result, data.Result__c);
            System.assertEquals(Opportunity, data.Opportunity__c);
        }
    }
    private static void testInit001() {
        // 取引先
        account1.Name = 'test1医院';
        account1.RecordTypeId = '01210000000QemG';
        insert account1;
        account2.Name = 'test1经销商';
        account2.RecordTypeId = '01210000000Qem1';
        insert account2;
        // 取引先責任者
        contact1.AccountId = account1.Id;
        contact1.FirstName = '責任者';
        contact1.LastName = 'test1医院';
        insert contact1;
        contact2.AccountId = account2.Id;
        contact2.FirstName = '責任者';
        contact2.LastName = 'test1经销商';
        insert contact2;
        Profile p = [select Id from Profile where Name = '901_经销商活动系统'];
        user.ProfileId = p.Id;
        user.ContactId = contact2.Id;
        user.FirstName = 'ユーザー';
        user.LastName = 'テスト';
        user.Email = 'test_user@example.com';
        user.emailencodingkey = 'UTF-8';
        user.languagelocalekey = 'zh_CN';
        user.localesidkey = 'ja_JP';
        user.timezonesidkey = 'Asia/Shanghai';
        user.Username = 'test_user@example.com';
        user.Alias = 'テユ';
        user.CommunityNickname = 'テストユーザー';
        insert user;
        // 代理店医院
        agency_hospital_link.Name = 'test1代理店医院';
        agency_hospital_link.Hospital__c = account1.Id;
        agency_hospital_link.Agency__c = account2.Id;
        agency_hospital_link.OwnerId = user.Id;
        agency_hospital_link.Agency_Campaign_Obj__c = true;
        insert agency_hospital_link;
        // 先生
        agency_contact.Name = 'test1医院先生';
        agency_contact.Doctor_Division1__c = '院长';
        agency_contact.Type__c = '医生';
        agency_contact.Agency_Hospital__c = agency_hospital_link.Id;
        agency_contact.OwnerId = user.Id;
        // 经销商活动周报导入 update by vivek start
        // agency_contact.Hospital_ID18__c = agency_hospital_link.Id;
        // 经销商活动周报导入 update by vivek end
        insert agency_contact;
        // 製品区分
        product_types.Name = '製品区分1';
        product_types.OwnerId = user.Id;
        product_types.Department_Cateogy__c = 'GI;BF;ET;GYN;OTH;URO;GS;ENT';
        insert product_types;
        // 经销商活动周报导入 update by vivek start
        product_types1.OwnerId = user.Id;
        product_types1.Department_Cateogy__c = 'GI;BF;ET;GYN;OTH;URO;GS;ENT';
        product_types1.Name = '170系统';
        product_types1.OPD_Flg__c = true;
        insert product_types1;
        product_types2.OwnerId = user.Id;
        product_types2.Department_Cateogy__c = 'GI;BF;ET;GYN;OTH;URO;GS;ENT';
        product_types2.Name = 'EUS系统';
        product_types2.SIS_Flg__c = true;
        insert product_types2;
        product_types3.OwnerId = user.Id;
        product_types3.Department_Cateogy__c = 'GI;BF;ET;GYN;OTH;URO;GS;ENT';
        product_types3.Name = 'CHF胆道镜';
        insert product_types3;
        // 经销商活动周报导入 update by vivek end
        // 引合
        agency_opportunity.RecordTypeId = [select Id, DeveloperName from RecordType where IsActive = true and SobjectType = 'Agency_Opportunity__c'
            and DeveloperName = 'Opportunity'
        ].Id;
        agency_opportunity.Name = '引合1';
        agency_opportunity.Hospital_Target__c = account1.Id;
        agency_opportunity.Agency__c = account2.Id;
        agency_opportunity.Agency_Hospital__c = agency_hospital_link.Id;
        agency_opportunity.StageName__c = '还没申请预算';
        agency_opportunity.OwnerId = user.Id;
        agency_opportunity.NewOpportunity_Agency_Apply_Status__c = '批准';
        insert agency_opportunity;
        // オリンパスカレンダー
        olympus_calendar.Date__c = Date.valueOf('2017-04-10');
        olympus_calendar.OwnerId = user.Id;
        insert olympus_calendar;
    }

}