高章伟
2022-02-18 8b5f4c6c281cfa548f92de52c8021e37aa81901e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
@isTest
private class CampaignTriggerBefInsTest {
 
    // キャンペーン:内部トレーニングのレコードタイプを取得
    private static final RecordType campaignRC = [SELECT Id, DeveloperName FROM RecordType WHERE DeveloperName = 'Internal_training' AND SObjectType = 'Campaign'];
 
    // キャンペーン:外部向けのレコードタイプを取得
    private static final RecordType campaignRCSociety = [SELECT Id, DeveloperName FROM RecordType WHERE DeveloperName = 'Society' AND SObjectType = 'Campaign'];
    private static final RecordType campaignRCTraining = [SELECT Id, DeveloperName FROM RecordType WHERE DeveloperName = 'Training_event' AND SObjectType = 'Campaign'];
    private static final RecordType campaignRCService = [SELECT Id, DeveloperName FROM RecordType WHERE DeveloperName = 'Service_trainig' AND SObjectType = 'Campaign'];
    private static final RecordType ServiceEngineerTraining = [SELECT Id, DeveloperName FROM RecordType WHERE DeveloperName = 'ServiceEngineerTraining' AND SObjectType = 'Campaign'];
 
    // キャンペーンメンバー:内部向けのレコードタイプを取得
    private static final RecordType campaignMemberRC = [SELECT Id, DeveloperName FROM RecordType WHERE DeveloperName = 'Internal_training_participants' AND SObjectType = 'CampaignMember'];
 
    // キャンペーンメンバー:外部向けのレコードタイプを取得
    private static final RecordType campaignMemberOuterRC = [SELECT Id, DeveloperName FROM RecordType WHERE DeveloperName = 'Workshop' AND SObjectType = 'CampaignMember'];
 
    /**
     * キャンペーンを insertしたときに、キャンペーンメンバーのレコードタイプが強制的に
     * 決定されていることを確認する。
     * 内部キャンペーンの場合
     */
    static testMethod void testInsertInternal() {
        StaticParameter.EscapeCampain =false;
        StaticParameter.shareToOSCMFlag = false;
        Campaign target = new Campaign();
        target.Name = 'test campaign';
        target.RecordTypeId = campaignRC.Id;    // 内部トレーニング
        target.JingliApprovalManager__c = UserInfo.getUserId();
        insert target;
 
        StaticParameter.EscapeCampain =false;
        
        Campaign target1 = new Campaign();
        target1.Id = target.Id;
        target1.Name= 'test1 campaign'; 
        update target1;
 
        
        // CanpaignMemberのレコードタイプを検査
        target = [SELECT Id, CampaignMemberRecordTypeId FROM Campaign WHERE Id = :target.Id];
        System.assertEquals( campaignMemberRC.Id, target.CampaignMemberRecordTypeId);
    }
 
    /**
     * キャンペーンを insertしたときに、キャンペーンメンバーのレコードタイプが強制的に
     * 決定されていることを確認する。
     * 外部向けの場合 1
     */
    static testMethod void testInsertSociety() {
        StaticParameter.EscapeCampain =false;
        StaticParameter.shareToOSCMFlag = false;
        Campaign target = new Campaign();
        target.Name = 'test campaign';
        target.RecordTypeId = campaignRCSociety.Id;    // 内部トレーニング
        target.JingliApprovalManager__c = UserInfo.getUserId();
        target.HostName__c ='Test01';
        target.cooperatorCompany__c ='Test02';
        insert target;
        
        Campaign target1 = new Campaign();
        target1.Id = target.Id;
        target1.Name= 'test1 campaign'; 
        update target1;
         // CanpaignMemberのレコードタイプを検査
        target = [SELECT Id, CampaignMemberRecordTypeId FROM Campaign WHERE Id = :target.Id];
        System.assertEquals( campaignMemberOuterRC.Id, target.CampaignMemberRecordTypeId);
    }
 
    /**
     * キャンペーンを insertしたときに、キャンペーンメンバーのレコードタイプが強制的に
     * 決定されていることを確認する。
     * 外部向けの場合 2
     */
    static testMethod void testInsertTraining() {
        StaticParameter.EscapeCampain =false;
        StaticParameter.shareToOSCMFlag = false;
        Campaign target = new Campaign();
        target.Name = 'test campaign';
        target.RecordTypeId = campaignRCTraining.Id;    // 外部トレーニング
        target.JingliApprovalManager__c = UserInfo.getUserId();
        insert target;
        
        Campaign target1 = new Campaign();
        target1.Id = target.Id;
        target1.Name= 'test1 campaign'; 
        update target1;
         // CanpaignMemberのレコードタイプを検査
        target = [SELECT Id, CampaignMemberRecordTypeId FROM Campaign WHERE Id = :target.Id];
        System.assertEquals( campaignMemberOuterRC.Id, target.CampaignMemberRecordTypeId);
    }
    
    /**
     * キャンペーンを insertしたときに、キャンペーンメンバーのレコードタイプが強制的に
     * 決定されていることを確認する。
     * 外部向けの場合 3
     */
    static testMethod void testInsertService() {
        StaticParameter.EscapeCampain =false;
        StaticParameter.shareToOSCMFlag = false;
        Campaign target = new Campaign();
        target.Name = 'test campaign';
        target.RecordTypeId = ServiceEngineerTraining.Id;    // 外部トレーニング
        target.JingliApprovalManager__c = UserInfo.getUserId();
        insert target;
        Campaign target1 = new Campaign();
        target1.Id = target.Id;
        target1.Name= 'test1 campaign'; 
        update target1;
        
         // CanpaignMemberのレコードタイプを検査
        target = [SELECT Id, CampaignMemberRecordTypeId FROM Campaign WHERE Id = :target.Id];
        System.assertEquals( campaignMemberOuterRC.Id, target.CampaignMemberRecordTypeId);
    }
    
}