@isTest
|
private class AgencyOppUpdHandlerTest {
|
public static Account account1 = new Account();
|
public static Account account2 = new Account();
|
public static Account account3 = new Account();
|
public static Opportunity opp = new Opportunity();
|
public static Agency_Opportunity__c agency_Opp = new Agency_Opportunity__c();
|
public static Agency_Hospital_Link__c aHosLink = new Agency_Hospital_Link__c();
|
public static User user = new User();
|
public static User user2 = new User();
|
public static Contact contact2 = new Contact();
|
public static Contact contact = new Contact();
|
|
static testMethod void test_method() {
|
// 取引先
|
account1.Name = 'test1医院';
|
account1.RecordTypeId = '01210000000QemG';
|
insert account1;
|
|
account2.Name = 'test1经销商';
|
account2.RecordTypeId = '01210000000Qem1';
|
insert account2;
|
|
|
List<Account> accTestList = [SELECT Id, Name FROM Account order by Name];
|
System.assertEquals(10, accTestList.size());
|
System.assertEquals('test1医院', accTestList[0].Name);
|
|
//经销商医院データを作る
|
aHosLink.Name = 'test1经销商医院';
|
aHosLink.Hospital__c = account1.Id;
|
aHosLink.Agency__c = account2.Id;
|
insert aHosLink;
|
|
//取引先責任者
|
contact2.AccountId = account2.Id;
|
contact2.FirstName = '責任者';
|
contact2.LastName = 'test1经销商';
|
insert contact2;
|
|
//System.assertEquals('test1经销商', co.LastName);
|
//ユーザー
|
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;
|
User us = [SELECT Id, Name FROM User WHERE Id =:user.Id];
|
System.assertEquals('test_user@example.com', user.Email);
|
|
Id rtId = [select Id,DeveloperName from RecordType where IsActive = true and SobjectType = 'Agency_Opportunity__c' and DeveloperName = 'Opportunity'].Id;
|
agency_Opp.RecordTypeId = rtId;
|
agency_Opp.Name = '引合1';
|
agency_Opp.Hospital_Target__c = account1.Id;
|
agency_Opp.Agency__c = account2.Id;
|
agency_Opp.Agency_Hospital__c = aHosLink.Id;
|
agency_Opp.StageName__c = '还没申请预算';
|
agency_Opp.NewOpportunity_Agency_Apply_Status__c = '批准';
|
|
//ownerId 設定 or System.runAs(user)
|
agency_Opp.OwnerId = user.Id;
|
//agency_Opp.Opportunity__c = aHosLink.Id;
|
insert agency_Opp;
|
agency_Opp.Agency_Hospital_Target__c = aHosLink.Id;
|
update agency_Opp;
|
|
opp.Agency_Opportunity__c = agency_Opp.Id;
|
opp.Name = 'test询价';
|
opp.StageName = '目標';
|
opp.CloseDate = Date.newInstance(2222, 7, 15);
|
|
Test.startTest();
|
insert opp;
|
Oly_TriggerHandler.bypass('AgencyOppUpdHandler');
|
Oly_TriggerHandler.isBypassed('AgencyOppUpdHandler');
|
Oly_TriggerHandler.clearBypass('AgencyOppUpdHandler');
|
Oly_TriggerHandler.clearAllBypasses();
|
Test.stopTest();
|
Opportunity opptest = [SELECT Id, Name FROM Opportunity WHERE Id =:opp.Id];
|
System.assertEquals('::test询价', opptest.Name);
|
|
|
|
}
|
|
static testMethod void testAfterUpdate() {
|
// 取引先
|
account1.Name = 'test1医院';
|
account1.RecordTypeId = '01210000000QemG';
|
insert account1;
|
|
account2.Name = 'test1经销商';
|
account2.RecordTypeId = '01210000000Qem1';
|
insert account2;
|
|
|
List<Account> accTestList = [SELECT Id, Name FROM Account order by Name];
|
System.assertEquals(10, accTestList.size());
|
System.assertEquals('test1医院', accTestList[0].Name);
|
|
//经销商医院データを作る
|
aHosLink.Name = 'test1经销商医院';
|
aHosLink.Hospital__c = account1.Id;
|
aHosLink.Agency__c = account2.Id;
|
insert aHosLink;
|
|
//取引先責任者
|
contact2.AccountId = account2.Id;
|
contact2.FirstName = '責任者';
|
contact2.LastName = 'test1经销商';
|
insert contact2;
|
|
//System.assertEquals('test1经销商', co.LastName);
|
//ユーザー
|
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;
|
User us = [SELECT Id, Name FROM User WHERE Id =:user.Id];
|
System.assertEquals('test_user@example.com', user.Email);
|
|
Id rtId = [select Id,DeveloperName from RecordType where IsActive = true and SobjectType = 'Agency_Opportunity__c' and DeveloperName = 'Opportunity'].Id;
|
agency_Opp.RecordTypeId = rtId;
|
agency_Opp.Name = '引合1';
|
agency_Opp.Hospital_Target__c = account1.Id;
|
agency_Opp.Agency__c = account2.Id;
|
agency_Opp.Agency_Hospital__c = aHosLink.Id;
|
agency_Opp.StageName__c = '还没申请预算';
|
//ownerId 設定 or System.runAs(user)
|
agency_Opp.OwnerId = user.Id;
|
//agency_Opp.Opportunity__c = aHosLink.Id;
|
agency_Opp.NewOpportunity_Agency_Apply_Status__c = '批准';
|
insert agency_Opp;
|
agency_Opp.Agency_Hospital_Target__c = aHosLink.Id;
|
update agency_Opp;
|
|
opp.Agency_Opportunity__c = agency_Opp.Id;
|
opp.Name = 'test询价';
|
opp.StageName = '目標';
|
//opp.AgencyOpp_FromOCM__c = true;
|
opp.SAP_Send_OK__c = false;
|
opp.CloseDate = Date.newInstance(2222, 7, 15);
|
|
Test.startTest();
|
insert opp;
|
opp.SAP_Send_OK__c = true;
|
|
Test.stopTest();
|
Opportunity opptest = [SELECT Id, Name FROM Opportunity WHERE Id =:opp.Id];
|
System.assertEquals('::test询价', opptest.Name);
|
}
|
|
//Opportunity Owner変更 OCSM_Owner__cも変更
|
static testMethod void set_AgencyOpportunity_OCSMOwnerTest() {
|
// 取引先
|
account1.Name = 'test1医院';
|
account1.RecordTypeId = '01210000000QemG';
|
account2.Name = 'test1经销商';
|
account2.RecordTypeId = '01210000000Qem1';
|
Id AgencyRecordTypeId = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Agency').getRecordTypeId();
|
account3.Name = 'test2经销商';
|
account3.RecordTypeId = AgencyRecordTypeId;
|
|
insert new List<Account> {account1, account2, account3};
|
list<Account> aaa = [select Id from Account where Hospital_Department_Class__c =:account1.Id];
|
System.assertEquals(aaa.size(), 8);
|
// 取引先責任者
|
contact.AccountId = account1.Id;
|
contact.FirstName = '責任者';
|
contact.LastName = 'test1医院';
|
contact2.AccountId = account2.Id;
|
contact2.FirstName = '責任者';
|
contact2.LastName = 'test1经销商';
|
insert new List<contact> {contact,contact2};
|
|
|
//System.assertEquals('test1经销商', co.LastName);
|
//ユーザー
|
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 = 'テストユーザー';
|
|
Profile adminP1 = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin];
|
// ユーザー作成
|
User user2 = 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 = adminP1.id);
|
|
insert new List<User> {user, user2};
|
|
//经销商医院データを作る
|
aHosLink.Name = 'test1经销商医院';
|
aHosLink.Hospital__c = account1.Id;
|
aHosLink.Agency__c = account2.Id;
|
aHosLink.OwnerId = user.Id;
|
insert aHosLink;
|
|
Id rtId = [select Id,DeveloperName from RecordType where IsActive = true and SobjectType = 'Agency_Opportunity__c' and DeveloperName = 'Opportunity'].Id;
|
agency_Opp.RecordTypeId = rtId;
|
agency_Opp.Name = '引合1';
|
agency_Opp.Department_Cateogy__c = 'GI';
|
agency_Opp.Hospital_Target__c = account1.Id;
|
agency_Opp.Agency__c = account2.Id;
|
agency_Opp.Agency_Hospital__c = aHosLink.Id;
|
agency_Opp.StageName__c = '还没申请预算';
|
//ownerId 設定 or System.runAs(user)
|
agency_Opp.OwnerId = user.Id;
|
agency_Opp.Agency_Hospital_Target__c = aHosLink.Id;
|
agency_Opp.OCM_Change_To_Opportunity_Flg__c = true;
|
agency_Opp.NewOpportunity_Agency_Apply_Status__c = '批准';
|
insert agency_Opp;
|
|
agency_Opp.NewOpportunity_Agency_Apply_Status__c = '填写完毕';
|
update agency_Opp;
|
|
opp.Name = 'test询价';
|
opp.StageName = '目標';
|
opp.SAP_Send_OK__c = false;
|
opp.CloseDate = Date.newInstance(2222, 7, 15);
|
opp.SAP_Send_OK__c = true;
|
insert opp;
|
|
Test.startTest();
|
//updAgencyOpportunityMap
|
opp.Agency_Opportunity__c = agency_Opp.Id;
|
update opp;
|
|
agency_Opp.NewOpportunity_Agency_Apply_Status__c = '批准';
|
agency_Opp.Change_To_Opportunity__c = opp.Id;
|
update agency_Opp;
|
|
//Owner変更
|
opp.owner_not_automatically_update__c = true;
|
opp.OwnerId = user2.Id;
|
update opp;
|
Test.stopTest();
|
|
Agency_Opportunity__c agencyopportunity = [SELECT
|
Id,Name,OCSM_Owner__c,Change_To_Opportunity__c, Department_Class_Opp__c
|
FROM Agency_Opportunity__c WHERE Id =: agency_Opp.Id];
|
System.assertNotEquals(agencyopportunity.Department_Class_Opp__c, null);
|
System.assertEquals(user2.Id, opp.OwnerId);
|
System.assertEquals(user2.Id, agencyopportunity.OCSM_Owner__c);
|
|
String rowCause = Schema.Agency_Opportunity__Share.RowCause.OCSM_Owner_c_User__c;
|
List<Agency_Opportunity__Share> agencyopportunityShare = [SELECT
|
RowCause,ParentId,UserOrGroupId
|
FROM Agency_Opportunity__Share WHERE ParentId = :agencyopportunity.Id
|
AND RowCause = :rowCause];
|
System.assertEquals(1, agencyopportunityShare.size());
|
System.assertEquals('OCSM_Owner_c_User__c', agencyopportunityShare[0].RowCause);
|
System.assertEquals(user2.Id, agencyopportunityShare[0].UserOrGroupId);
|
}
|
}
|