Skip to content

Commit f242d7c

Browse files
committed
Modia oppdatering på tråd skal kun trigge cache sletting ved lukking av tråd eller sladdeforespørsel
1 parent b43f54e commit f242d7c

File tree

4 files changed

+119
-6
lines changed

4 files changed

+119
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
public with sharing class HenvendelseUpdateWrapper {
22
public Thread__c thread;
3-
public Boolean isGeneralUpdate;
4-
public Boolean isRedactionChange;
5-
public Boolean isCloseThreadChange;
3+
public Boolean isGeneralUpdate = false;
4+
public Boolean isRedactionChange = false;
5+
public Boolean isCloseThreadChange = false;
66
}

src/integration/henvendelse-cache/classes/handlers/ThreadCacheHandler.cls

-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ global class ThreadCacheHandler extends MyTriggers {
4343
isCloseThreadChange = true;
4444
}
4545

46-
system.debug(isGeneralUpdateChange);
4746
if (
4847
isGeneralUpdateChange ||
4948
isRedactionChange ||

src/integration/henvendelse-cache/classes/helpers/ThreadCacheFilterHelper.cls

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,22 @@
11
public without sharing class ThreadCacheFilterHelper {
2+
//Get thread ids for threads that require cache clear
3+
//Updates from Modia should only trigger cache clear when closing thread or redacting
24
public static Set<Id> getRecordIdsRequiringCacheClear(
35
List<HenvendelseUpdateWrapper> threadList
46
) {
57
ModiaIntegrationUser modiaIntegrationUser = new ModiaIntegrationUser();
68
Set<Id> threadIds = new Set<Id>();
79

810
for (HenvendelseUpdateWrapper wrapper : threadList) {
9-
threadIds.add(wrapper.thread.Id);
11+
if (
12+
wrapper.thread.LastModifiedById != modiaIntegrationUser.UserId
13+
) {
14+
threadIds.add(wrapper.thread.Id);
15+
} else if (wrapper.isCloseThreadChange) {
16+
threadIds.add(wrapper.thread.Id);
17+
} else if (wrapper.isRedactionChange) {
18+
threadIds.add(wrapper.thread.Id);
19+
}
1020
}
1121
return threadIds;
1222
}

src/integration/henvendelse-cache/classes/helpers/tests/ThreadCacheFilterHelperTest.cls

+105-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class ThreadCacheFilterHelperTest {
4040
}
4141

4242
@IsTest
43-
static void shouldReturnOndThreadIdForThreadUpdatedByModiaIntegrationUser() {
43+
static void shoulNotReturnAnyThreadIdsForGeneralThreadUpdatedByModiaIntegrationUser() {
4444
myTriggers.disable(MessageCacheHandler.class);
4545
myTriggers.disable(ThreadCacheHandler.class);
4646

@@ -88,6 +88,110 @@ public class ThreadCacheFilterHelperTest {
8888
);
8989
Test.stopTest();
9090

91+
Assert.areEqual(0, result.size());
92+
}
93+
94+
@IsTest
95+
static void shouldReturnOneThreadIdForClosingThreadByModiaIntegrationUser() {
96+
myTriggers.disable(MessageCacheHandler.class);
97+
myTriggers.disable(ThreadCacheHandler.class);
98+
99+
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
100+
Id experienceCloudUserId = [
101+
SELECT Id
102+
FROM User
103+
WHERE AccountId = :accountId
104+
]
105+
.Id;
106+
107+
//Create record as Modia Integration User
108+
Id profileId = [
109+
SELECT Id
110+
FROM Profile
111+
WHERE Name = 'System Administrator'
112+
LIMIT 1
113+
]
114+
.Id;
115+
User modiaIntegrationUser = (User) SharedTestDataFactory.createRecord(
116+
new User(
117+
username = '[email protected]',
118+
ProfileId = profileId
119+
)
120+
);
121+
122+
System.runAs(modiaIntegrationUser) {
123+
SharedTestDataFactory.createRecord(
124+
new Thread__c(
125+
CRM_Account__c = accountId,
126+
CRM_Thread_Type__c = 'STO',
127+
OwnerId = experienceCloudUserId
128+
)
129+
);
130+
}
131+
132+
List<Thread__c> threads = [SELECT Id, LastModifiedById FROM Thread__c];
133+
HenvendelseUpdateWrapper wrapper = new HenvendelseUpdateWrapper();
134+
wrapper.thread = threads[0];
135+
wrapper.isCloseThreadChange = true;
136+
137+
Test.startTest();
138+
Set<Id> result = ThreadCacheFilterHelper.getRecordIdsRequiringCacheClear(
139+
new List<HenvendelseUpdateWrapper>{ wrapper }
140+
);
141+
Test.stopTest();
142+
143+
Assert.areEqual(1, result.size());
144+
}
145+
146+
@IsTest
147+
static void shouldReturnOneThreadIdForRedactionRequestByModiaIntegrationUser() {
148+
myTriggers.disable(MessageCacheHandler.class);
149+
myTriggers.disable(ThreadCacheHandler.class);
150+
151+
Id accountId = [SELECT Id FROM Account LIMIT 1].Id;
152+
Id experienceCloudUserId = [
153+
SELECT Id
154+
FROM User
155+
WHERE AccountId = :accountId
156+
]
157+
.Id;
158+
159+
//Create record as Modia Integration User
160+
Id profileId = [
161+
SELECT Id
162+
FROM Profile
163+
WHERE Name = 'System Administrator'
164+
LIMIT 1
165+
]
166+
.Id;
167+
User modiaIntegrationUser = (User) SharedTestDataFactory.createRecord(
168+
new User(
169+
username = '[email protected]',
170+
ProfileId = profileId
171+
)
172+
);
173+
174+
System.runAs(modiaIntegrationUser) {
175+
SharedTestDataFactory.createRecord(
176+
new Thread__c(
177+
CRM_Account__c = accountId,
178+
CRM_Thread_Type__c = 'STO',
179+
OwnerId = experienceCloudUserId
180+
)
181+
);
182+
}
183+
184+
List<Thread__c> threads = [SELECT Id, LastModifiedById FROM Thread__c];
185+
HenvendelseUpdateWrapper wrapper = new HenvendelseUpdateWrapper();
186+
wrapper.thread = threads[0];
187+
wrapper.isRedactionChange = true;
188+
189+
Test.startTest();
190+
Set<Id> result = ThreadCacheFilterHelper.getRecordIdsRequiringCacheClear(
191+
new List<HenvendelseUpdateWrapper>{ wrapper }
192+
);
193+
Test.stopTest();
194+
91195
Assert.areEqual(1, result.size());
92196
}
93197

0 commit comments

Comments
 (0)