Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @author javier.garcia
- * @date 26/03/2018
- * @copyright Frontiers Software S.L.
- */
- @IsTest
- public with sharing class DuplicateAggregatorTest {
- @IsTest
- static void testAssignSameIdWhenEmailsMatch() {
- TriggerTemplateV2.allTriggersDisabled = true; // Reason: It's not an integration test.
- Contact con = new Contact(Email = 'test@email.com', LastName = 'Smith');
- insert con;
- Contact dupCon = new Contact(Email = 'test@email.com', LastName = 'Green');
- Test.startTest();
- List<Contact> recalculatedContacts = DuplicateAggregator.recalculateEmailSetId(new List<Contact> { dupCon });
- Test.stopTest();
- System.assertEquals(2, recalculatedContacts.size());
- System.assertEquals(recalculatedContacts[0].EmailSetId__c, recalculatedContacts[1].EmailSetId__c);
- }
- @IsTest
- static void testAssignSameIdWhenEmailsMatchComparingLeadAndContact() {
- TriggerTemplateV2.allTriggersDisabled = true; // Reason: It's not an integration test.
- Contact con = new Contact(Email = 'test@email.com', LastName = 'Smith');
- insert con;
- Lead dupLead = new Lead(Email = 'test@email.com', LastName = 'Green', Company = 'Unknown');
- Test.startTest();
- List<SObject> recalculatedRecords = DuplicateAggregator.recalculateEmailSetId(new List<Lead> { dupLead });
- Test.stopTest();
- System.assertEquals(2, recalculatedRecords.size());
- System.assertEquals(recalculatedRecords[0].get('EmailSetId__c'), recalculatedRecords[1].get('EmailSetId__c'));
- }
- @IsTest
- static void testAssignSameIdWhenEmailsMatch_Multiple() {
- TriggerTemplateV2.allTriggersDisabled = true; // Reason: It's not an integration test.
- Contact con = new Contact(Email = 'test@email.com', LastName = 'Smith');
- Contact con2 = new Contact(AlternativeEmailAddress1__c = 'test@email.com', LastName = 'Smith2');
- Contact con3 = new Contact(AlternativeEmailAddress2__c = 'test@email.com', LastName = 'Smith3');
- Contact con4 = new Contact(AlternativeEmailAddress3__c = 'test@email.com', LastName = 'Smith4');
- Contact con5 = new Contact(AlternativeEmailAddress4__c = 'test@email.com', LastName = 'Smith5');
- Contact con6 = new Contact(AlternativeEmailAddress5__c = 'test@email.com', LastName = 'Smith6');
- insert new List<Contact> {con, con2, con3, con4, con5, con6};
- Contact dupCon = new Contact(Email = 'test@email.com', LastName = 'Green');
- Test.startTest();
- List<Contact> recalculatedContacts = DuplicateAggregator.recalculateEmailSetId(new List<Contact> { dupCon });
- Test.stopTest();
- System.assertEquals(7, recalculatedContacts.size());
- System.assertEquals(recalculatedContacts[0].EmailSetId__c, recalculatedContacts[1].EmailSetId__c);
- System.assertEquals(recalculatedContacts[1].EmailSetId__c, recalculatedContacts[2].EmailSetId__c);
- System.assertEquals(recalculatedContacts[2].EmailSetId__c, recalculatedContacts[3].EmailSetId__c);
- System.assertEquals(recalculatedContacts[3].EmailSetId__c, recalculatedContacts[4].EmailSetId__c);
- System.assertEquals(recalculatedContacts[4].EmailSetId__c, recalculatedContacts[5].EmailSetId__c);
- System.assertEquals(recalculatedContacts[5].EmailSetId__c, recalculatedContacts[6].EmailSetId__c);
- }
- @IsTest
- static void testAssignDifferentIdsWhenEmailsDontMatch() {
- TriggerTemplateV2.allTriggersDisabled = true; // Reason: It's not an integration test.
- Contact con = new Contact(Email = 'one@email.com', LastName = 'Smith', EmailSetId__c = '12345');
- insert con;
- Contact dupCon = new Contact(Email = 'two@email.com', LastName = 'Green');
- Test.startTest();
- List<Contact> recalculatedContacts = DuplicateAggregator.recalculateEmailSetId(new List<Contact> { dupCon });
- Test.stopTest();
- System.assertEquals(1, recalculatedContacts.size());
- System.assertEquals(dupCon.Email, recalculatedContacts[0].Email);
- System.assertNotEquals(null, recalculatedContacts[0].EmailSetId__c);
- }
- @IsTest
- static void testAssignDifferentIdsWhenEmailsDontMatchComparingLeadAndContact() {
- TriggerTemplateV2.allTriggersDisabled = true; // Reason: It's not an integration test.
- Contact con = new Contact(Email = 'one@email.com', LastName = 'Smith', EmailSetId__c = '12345');
- insert con;
- Lead dupCon = new Lead(Email = 'two@email.com', LastName = 'Green', Company = 'Unknown');
- Test.startTest();
- List<SObject> recalculatedRecords = DuplicateAggregator.recalculateEmailSetId(new List<Lead> { dupCon });
- Test.stopTest();
- System.assertEquals(1, recalculatedRecords.size());
- System.assertEquals(dupCon.Email, recalculatedRecords[0].get('Email'));
- System.assertNotEquals(null, recalculatedRecords[0].get('EmailSetId__c'));
- }
- @IsTest
- static void testAssignDifferentIdsWhenIdsMatchButEmailsDiffer() {
- TriggerTemplateV2.allTriggersDisabled = true; // Reason: It's not an integration test.
- Contact con = new Contact(Email = 'cool@email.com', LastName = 'Smith', EmailSetId__c = 'qwerty');
- Contact con2 = new Contact(Email = 'pretty@email.com', LastName = 'Blue', EmailSetId__c = 'qwerty');
- insert new List<Contact> { con, con2 };
- Contact nonDupCon = new Contact(Email = 'nice@email.com', LastName = 'Green', EmailSetId__c = 'qwerty');
- Test.startTest();
- List<Contact> recalculatedContacts = DuplicateAggregator.recalculateEmailSetId(new List<Contact> { nonDupCon });
- Test.stopTest();
- System.assertEquals(2, recalculatedContacts.size());
- System.assertNotEquals(recalculatedContacts[0].EmailSetId__c, recalculatedContacts[1].EmailSetId__c);
- System.assertNotEquals(recalculatedContacts[0].EmailSetId__c, nonDupCon.EmailSetId__c);
- System.assertNotEquals(recalculatedContacts[1].EmailSetId__c, nonDupCon.EmailSetId__c);
- }
- @IsTest
- static void testAssignDifferentIdsWhenIdsMatchButEmailsDifferComparingLeadAndContact() {
- TriggerTemplateV2.allTriggersDisabled = true; // Reason: It's not an integration test.
- Contact con = new Contact(Email = 'cool@email.com', LastName = 'Smith', EmailSetId__c = 'qwerty');
- Lead ld = new Lead(Email = 'pretty@email.com', LastName = 'Blue', EmailSetId__c = 'qwerty', Company = 'Unknown');
- insert new List<SObject> { con, ld };
- Contact nonDupCon = new Contact(Email = 'nice@email.com', LastName = 'Green', EmailSetId__c = 'qwerty');
- Test.startTest();
- List<SObject> recalculatedContacts = DuplicateAggregator.recalculateEmailSetId(new List<SObject> { nonDupCon });
- Test.stopTest();
- System.assertEquals(2, recalculatedContacts.size());
- System.assertNotEquals(recalculatedContacts[0].get('EmailSetId__c'), recalculatedContacts[1].get('EmailSetId__c'));
- System.assertNotEquals(recalculatedContacts[0].get('EmailSetId__c'), nonDupCon.EmailSetId__c);
- System.assertNotEquals(recalculatedContacts[1].get('EmailSetId__c'), nonDupCon.EmailSetId__c);
- }
- @IsTest
- static void testAssignDifferentIdsWhenEmailIsEmpty() {
- //TODO - si vienen contactos sin email, no son duplicados de nada.
- }
- @IsTest
- static void testAssignSameIdWhenEmailsMatchDisjointContacts() {
- TriggerTemplateV2.allTriggersDisabled = true; // Reason: It's not an integration test.
- Contact con = new Contact(Email = 'one@email.com', AlternativeEmailAddress1__c = 'two@email.com', LastName = 'Smith');
- Contact con2 = new Contact(Email = 'two@email.com', AlternativeEmailAddress1__c = 'three@email.com', LastName = 'Smith');
- Contact con3 = new Contact(Email = 'three@email.com', AlternativeEmailAddress1__c = 'four@email.com', LastName = 'Smith');
- insert new List<Contact> { con, con2, con3 };
- Contact dupCon = new Contact(Email = 'four@email.com', LastName = 'Green');
- Test.startTest();
- List<Contact> recalculatedContacts = DuplicateAggregator.recalculateEmailSetId(new List<Contact> { dupCon });
- Test.stopTest();
- System.assertEquals(4, recalculatedContacts.size());
- System.assertEquals(recalculatedContacts[0].EmailSetId__c, recalculatedContacts[1].EmailSetId__c);
- System.assertEquals(recalculatedContacts[1].EmailSetId__c, recalculatedContacts[2].EmailSetId__c);
- System.assertEquals(recalculatedContacts[2].EmailSetId__c, recalculatedContacts[3].EmailSetId__c);
- }
- @IsTest
- static void testAssignSameIdWhenEmailsMatchDisjointLeadsAndContacts() {
- TriggerTemplateV2.allTriggersDisabled = true; // Reason: It's not an integration test.
- Contact con = new Contact(Email = 'one@email.com', AlternativeEmailAddress1__c = 'two@email.com', LastName = 'Smith');
- Contact con2 = new Contact(Email = 'two@email.com', AlternativeEmailAddress1__c = 'three@email.com', LastName = 'Smith');
- Contact con3 = new Contact(Email = 'three@email.com', AlternativeEmailAddress1__c = 'four@email.com', LastName = 'Smith');
- insert new List<Contact> { con, con2, con3 };
- Lead ld1 = new Lead(Email = 'four@email.com', AlternativeEmailAddress1__c = 'five@email.com', LastName = 'Smith', Company = 'Unknown');
- Lead ld2 = new Lead(Email = 'five@email.com', AlternativeEmailAddress1__c = 'six@email.com', LastName = 'Smith', Company = 'Unknown');
- Lead ld3 = new Lead(Email = 'six@email.com', AlternativeEmailAddress1__c = 'seven@email.com', LastName = 'Smith', Company = 'Unknown');
- insert new List<Lead> { ld1, ld2, ld3 };
- Contact dupCon = new Contact(Email = 'seven@email.com', LastName = 'Green');
- Test.startTest();
- List<SObject> recalculatedRecords = DuplicateAggregator.recalculateEmailSetId(new List<Contact> { dupCon });
- Test.stopTest();
- System.assertEquals(7, recalculatedRecords.size());
- System.assertEquals(recalculatedRecords[0].get('EmailSetId__c'), recalculatedRecords[1].get('EmailSetId__c'));
- System.assertEquals(recalculatedRecords[1].get('EmailSetId__c'), recalculatedRecords[2].get('EmailSetId__c'));
- System.assertEquals(recalculatedRecords[2].get('EmailSetId__c'), recalculatedRecords[3].get('EmailSetId__c'));
- System.assertEquals(recalculatedRecords[3].get('EmailSetId__c'), recalculatedRecords[4].get('EmailSetId__c'));
- System.assertEquals(recalculatedRecords[5].get('EmailSetId__c'), recalculatedRecords[6].get('EmailSetId__c'));
- }
- @IsTest
- static void testPerformanceAssigningSameIdWhenEmailsMatch_200Records() {
- TriggerTemplateV2.allTriggersDisabled = true; // Reason: It's not an integration test.
- List<Contact> contacts = new List<Contact>();
- for(Integer i = 0; i < 100; i++) {
- Contact contact = new Contact(Email = i + 'one@email.com', AlternativeEmailAddress1__c = 'three@email.com', LastName = 'Smith');
- contacts.add(contact);
- }
- for(Integer i = 0; i < 100; i++) {
- Contact contact = new Contact(Email = i + 'two@email.com', AlternativeEmailAddress1__c = 'three@email.com', LastName = 'John');
- contacts.add(contact);
- }
- insert contacts;
- Contact dupCon = new Contact(Email = 'three@email.com', LastName = 'Green');
- Test.startTest();
- List<Contact> recalculatedContacts = DuplicateAggregator.recalculateEmailSetId(new List<Contact> { dupCon });
- Test.stopTest();
- System.assertEquals(201, recalculatedContacts.size());
- for(Integer i = 1; i < 199; i++) {
- System.assertEquals(recalculatedContacts[i - 1].EmailSetId__c, recalculatedContacts[i].EmailSetId__c);
- }
- }
- @IsTest
- static void testPerformanceAssigningSameIdWhenEmailsMatch_500Records() {
- TriggerTemplateV2.allTriggersDisabled = true; // Reason: It's not an integration test.
- List<Contact> contacts = new List<Contact>();
- for(Integer i = 0; i < 250; i++) {
- Contact contact = new Contact(Email = i + 'email@email.com', AlternativeEmailAddress1__c = (i+1) + 'email@email.com', LastName = 'Smith');
- contacts.add(contact);
- }
- for(Integer i = 250; i < 500; i++) {
- Contact contact = new Contact(Email = i + 'email@email.com', AlternativeEmailAddress1__c = (i+1) + 'email@email.com', LastName = 'John');
- contacts.add(contact);
- }
- insert contacts;
- Contact dupCon = new Contact(Email = 'three@email.com', LastName = 'Green');
- Test.startTest();
- List<Contact> recalculatedContacts = DuplicateAggregator.recalculateEmailSetId(new List<Contact> { dupCon });
- Test.stopTest();
- System.assertEquals(501, recalculatedContacts.size());
- for(Integer i = 1; i < 499; i++) {
- System.assertEquals(recalculatedContacts[i - 1].EmailSetId__c, recalculatedContacts[i].EmailSetId__c);
- }
- }
- //TODO - cambiar un email, pero que siga siendo duplicado.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement