Skip to content

Commit 78d6073

Browse files
Expand CacheDependencyHelper with new methods and tests
The `CacheDependencyHelper` class has been significantly expanded with new methods for creating cache keys and dependencies for content and web page items. Detailed XML documentation has been added for each method. The `CONTENT_TYPE_NAME` field in `TestContentItemFieldsSource` and `TestWebPageFieldsSource` classes has been changed from `static` to `const` in multiple test files. In `TypeExtensionsTests.cs`, the `Assert.That` method call has been updated to use square brackets for array initialization. A new test class `CacheDependencyHelperTests` has been added, including various unit tests for the methods in `CacheDependencyHelper`, with mock implementations of `IContentItemFieldsSource` and `IWebPageFieldsSource` for testing purposes.
1 parent 3232806 commit 78d6073

File tree

5 files changed

+425
-197
lines changed

5 files changed

+425
-197
lines changed

src/XperienceCommunity.DataRepository/Helpers/CacheDependencyHelper.cs

Lines changed: 191 additions & 192 deletions
Original file line numberDiff line numberDiff line change
@@ -2,201 +2,200 @@
22
using CMS.Helpers;
33
using CMS.Websites;
44

5-
namespace XperienceCommunity.DataRepository.Helpers
5+
namespace XperienceCommunity.DataRepository.Helpers;
6+
7+
/// <summary>
8+
/// Provides helper methods for creating cache dependencies for content and web page items.
9+
/// </summary>
10+
public static class CacheDependencyHelper
611
{
712
/// <summary>
8-
/// Provides helper methods for creating cache dependencies for content and web page items.
13+
/// Creates cache keys for web page items by their GUIDs.
14+
/// </summary>
15+
/// <param name="itemGuids">The GUIDs of the web page items.</param>
16+
/// <returns>An array of cache keys.</returns>
17+
public static string[] CreateContentItemGUIDKeys(IEnumerable<Guid>? itemGuids) =>
18+
itemGuids?.Select(x => CreateContentItemGUIDKey(x))?.ToArray() ?? [];
19+
20+
/// <summary>
21+
/// Creates cache keys for web page items by their GUIDs.
22+
/// </summary>
23+
/// <param name="itemGuids">The GUIDs of the web page items.</param>
24+
/// <returns>An array of cache keys.</returns>
25+
public static string[] CreateWebPageItemGUIDKeys(IEnumerable<Guid>? itemGuids) =>
26+
itemGuids?.Select(x => CreateWebPageItemGUIDKey(x))?.ToArray() ?? [];
27+
28+
/// <summary>
29+
/// Creates a cache key for a web page item by its GUID.
30+
/// </summary>
31+
/// <param name="itemGuid">The GUID of the web page item.</param>
32+
/// <returns>A cache key.</returns>
33+
public static string CreateWebPageItemGUIDKey(Guid? itemGuid) => $"webpageitem|byguid|{itemGuid}";
34+
35+
/// <summary>
36+
/// Creates a cache key for a web page item by its ID.
37+
/// </summary>
38+
/// <param name="itemId">The ID of the web page item.</param>
39+
/// <returns>A cache key.</returns>
40+
public static string CreateWebPageItemIdKey(int? itemId) => $"webpageitem|byid|{itemId}";
41+
42+
/// <summary>
43+
/// Creates a cache key for a content item by its GUID.
44+
/// </summary>
45+
/// <param name="itemGuid">The GUID of the web page item.</param>
46+
/// <returns>A cache key.</returns>
47+
public static string CreateContentItemGUIDKey(Guid? itemGuid) => $"contentitem|byguid|{itemGuid}";
48+
49+
/// <summary>
50+
/// Creates a cache key for a content item by its ID.
51+
/// </summary>
52+
/// <param name="itemId">The ID of the web page item.</param>
53+
/// <returns>A cache key.</returns>
54+
public static string CreateContentItemIdKey(int? itemId) => $"contentitem|byid|{itemId}";
55+
56+
/// <summary>
57+
/// Creates cache keys for content items by their IDs.
58+
/// </summary>
59+
/// <param name="itemIdList">The IDs of the web page items.</param>
60+
/// <returns>An array of cache keys.</returns>
61+
public static string[] CreateContentItemIdKeys(IEnumerable<int>? itemIdList) =>
62+
itemIdList?.Select(x => CreateContentItemIdKey(x))?.ToArray() ?? [];
63+
64+
/// <summary>
65+
/// Creates cache keys for web page items by their IDs.
66+
/// </summary>
67+
/// <param name="itemIdList">The IDs of the web page items.</param>
68+
/// <returns>An array of cache keys.</returns>
69+
public static string[] CreateWebPageItemIdKeys(IEnumerable<int>? itemIdList) =>
70+
itemIdList?.Select(x => CreateWebPageItemIdKey(x))?.ToArray() ?? [];
71+
72+
/// <summary>
73+
/// Creates cache keys for web page items by content type and channel name.
74+
/// </summary>
75+
/// <param name="contentTypes">The content types.</param>
76+
/// <param name="channelName">The channel name.</param>
77+
/// <returns>An array of cache keys.</returns>
78+
public static string[] CreateWebPageItemTypeKeys(IEnumerable<string>? contentTypes, string channelName) =>
79+
contentTypes?.Select(x => $"webpageitem|bychannel|{channelName}|bycontenttype|{x}")?.ToArray() ?? [];
80+
81+
/// <summary>
82+
/// Creates cache keys for content items by content type.
83+
/// </summary>
84+
/// <param name="contentTypes">The content types.</param>
85+
/// <returns>An array of cache keys.</returns>
86+
public static string[] CreateContentItemTypeKeys(IEnumerable<string>? contentTypes) =>
87+
contentTypes?.Select(x => $"contentitem|bycontenttype|{x}")?.ToArray() ?? [];
88+
89+
/// <summary>
90+
/// Creates cache keys for content items by their GUIDs.
91+
/// </summary>
92+
/// <typeparam name="T">The type of the content items.</typeparam>
93+
/// <param name="items">The content items.</param>
94+
/// <returns>An array of cache keys.</returns>
95+
public static string[] CreateContentItemKeys<T>(IEnumerable<T>? items) where T : IContentItemFieldsSource =>
96+
items?.Select(x => $"contentitem|byid|{x.SystemFields.ContentItemGUID}")?.ToArray() ?? [];
97+
98+
/// <summary>
99+
/// Creates cache keys for web page items by their IDs.
100+
/// </summary>
101+
/// <typeparam name="T">The type of the web page items.</typeparam>
102+
/// <param name="items">The web page items.</param>
103+
/// <returns>An array of cache keys.</returns>
104+
public static string[] CreateWebPageItemKeys<T>(IEnumerable<T>? items) where T : IWebPageFieldsSource =>
105+
items?.Select(x => $"webpageitem|byid|{x.SystemFields.WebPageItemID}")?.ToArray() ?? [];
106+
107+
/// <summary>
108+
/// Creates a cache dependency for the specified content items.
109+
/// </summary>
110+
/// <typeparam name="T">The type of the content items.</typeparam>
111+
/// <param name="items">The content items.</param>
112+
/// <returns>A cache dependency for the specified content items.</returns>
113+
public static CMSCacheDependency CreateContentItemCacheDependency<T>(IEnumerable<T>? items)
114+
where T : IContentItemFieldsSource
115+
{
116+
string[] contentItemKeys = CreateContentItemKeys(items);
117+
118+
return CacheHelper.GetCacheDependency(contentItemKeys);
119+
}
120+
121+
/// <summary>
122+
/// Creates a cache dependency for the specified web page items.
123+
/// </summary>
124+
/// <typeparam name="T">The type of the web page items.</typeparam>
125+
/// <param name="items">The web page items.</param>
126+
/// <returns>A cache dependency for the specified web page items.</returns>
127+
public static CMSCacheDependency CreateWebPageItemCacheDependency<T>(IEnumerable<T>? items)
128+
where T : IWebPageFieldsSource
129+
{
130+
string[] webPageItemKeys = CreateWebPageItemKeys(items);
131+
return CacheHelper.GetCacheDependency(webPageItemKeys);
132+
}
133+
134+
/// <summary>
135+
/// Creates a cache dependency for web page items by content type and channel name.
136+
/// </summary>
137+
/// <param name="contentTypes">The content types.</param>
138+
/// <param name="channelName">The channel name.</param>
139+
/// <returns>A cache dependency for the specified web page items.</returns>
140+
public static CMSCacheDependency CreateWebPageItemTypeCacheDependency(IEnumerable<string>? contentTypes,
141+
string channelName)
142+
{
143+
string[] webPageItemTypeKeys = CreateWebPageItemTypeKeys(contentTypes, channelName);
144+
return CacheHelper.GetCacheDependency(webPageItemTypeKeys);
145+
}
146+
147+
/// <summary>
148+
/// Creates a cache dependency for content items by content type.
149+
/// </summary>
150+
/// <param name="contentTypes">The content types.</param>
151+
/// <returns>A cache dependency for the specified content items.</returns>
152+
public static CMSCacheDependency CreateContentItemTypeCacheDependency(IEnumerable<string>? contentTypes)
153+
{
154+
string[] contentItemTypeKeys = CreateContentItemTypeKeys(contentTypes);
155+
return CacheHelper.GetCacheDependency(contentItemTypeKeys);
156+
}
157+
158+
/// <summary>
159+
/// Creates a cache dependency for web page items by their GUIDs.
160+
/// </summary>
161+
/// <param name="itemGuids">The GUIDs of the web page items.</param>
162+
/// <returns>A cache dependency for the specified web page items.</returns>
163+
public static CMSCacheDependency CreateWebPageItemGUIDCacheDependency(IEnumerable<Guid>? itemGuids)
164+
{
165+
string[] webPageItemGUIDKeys = CreateWebPageItemGUIDKeys(itemGuids);
166+
return CacheHelper.GetCacheDependency(webPageItemGUIDKeys);
167+
}
168+
169+
/// <summary>
170+
/// Creates a cache dependency for web page items by their IDs.
171+
/// </summary>
172+
/// <param name="itemIdList"></param>
173+
/// <returns></returns>
174+
public static CMSCacheDependency CreateWebPageItemIDCacheDependency(IEnumerable<int>? itemIdList)
175+
{
176+
string[] webPageItemIdKeys = CreateWebPageItemIdKeys(itemIdList);
177+
return CacheHelper.GetCacheDependency(webPageItemIdKeys);
178+
}
179+
180+
/// <summary>
181+
/// Creates a cache dependency for content items by their GUIDs.
182+
/// </summary>
183+
/// <param name="itemGuids">The GUIDs of the web page items.</param>
184+
/// <returns>A cache dependency for the specified web page items.</returns>
185+
public static CMSCacheDependency CreateContentItemGUIDCacheDependency(IEnumerable<Guid>? itemGuids)
186+
{
187+
string[] webPageItemGUIDKeys = CreateContentItemGUIDKeys(itemGuids);
188+
return CacheHelper.GetCacheDependency(webPageItemGUIDKeys);
189+
}
190+
191+
/// <summary>
192+
/// Creates a cache dependency for content items by their IDs.
9193
/// </summary>
10-
public static class CacheDependencyHelper
194+
/// <param name="itemIdList"></param>
195+
/// <returns></returns>
196+
public static CMSCacheDependency CreateContentItemIDCacheDependency(IEnumerable<int>? itemIdList)
11197
{
12-
/// <summary>
13-
/// Creates cache keys for web page items by their GUIDs.
14-
/// </summary>
15-
/// <param name="itemGuids">The GUIDs of the web page items.</param>
16-
/// <returns>An array of cache keys.</returns>
17-
public static string[] CreateContentItemGUIDKeys(IEnumerable<Guid>? itemGuids) =>
18-
itemGuids?.Select(x => CreateContentItemGUIDKey(x))?.ToArray() ?? [];
19-
20-
/// <summary>
21-
/// Creates cache keys for web page items by their GUIDs.
22-
/// </summary>
23-
/// <param name="itemGuids">The GUIDs of the web page items.</param>
24-
/// <returns>An array of cache keys.</returns>
25-
public static string[] CreateWebPageItemGUIDKeys(IEnumerable<Guid>? itemGuids) =>
26-
itemGuids?.Select(x => CreateWebPageItemGUIDKey(x))?.ToArray() ?? [];
27-
28-
/// <summary>
29-
/// Creates a cache key for a web page item by its GUID.
30-
/// </summary>
31-
/// <param name="itemGuid">The GUID of the web page item.</param>
32-
/// <returns>A cache key.</returns>
33-
public static string CreateWebPageItemGUIDKey(Guid? itemGuid) => $"webpageitem|byguid|{itemGuid}";
34-
35-
/// <summary>
36-
/// Creates a cache key for a web page item by its ID.
37-
/// </summary>
38-
/// <param name="itemId">The ID of the web page item.</param>
39-
/// <returns>A cache key.</returns>
40-
public static string CreateWebPageItemIdKey(int? itemId) => $"webpageitem|byid|{itemId}";
41-
42-
/// <summary>
43-
/// Creates a cache key for a content item by its GUID.
44-
/// </summary>
45-
/// <param name="itemGuid">The GUID of the web page item.</param>
46-
/// <returns>A cache key.</returns>
47-
public static string CreateContentItemGUIDKey(Guid? itemGuid) => $"contentitem|byguid|{itemGuid}";
48-
49-
/// <summary>
50-
/// Creates a cache key for a content item by its ID.
51-
/// </summary>
52-
/// <param name="itemId">The ID of the web page item.</param>
53-
/// <returns>A cache key.</returns>
54-
public static string CreateContentItemIdKey(int? itemId) => $"contentitem|byid|{itemId}";
55-
56-
/// <summary>
57-
/// Creates cache keys for content items by their IDs.
58-
/// </summary>
59-
/// <param name="itemIdList">The IDs of the web page items.</param>
60-
/// <returns>An array of cache keys.</returns>
61-
public static string[] CreateContentItemIdKeys(IEnumerable<int>? itemIdList) =>
62-
itemIdList?.Select(x => CreateContentItemIdKey(x))?.ToArray() ?? [];
63-
64-
/// <summary>
65-
/// Creates cache keys for web page items by their IDs.
66-
/// </summary>
67-
/// <param name="itemIdList">The IDs of the web page items.</param>
68-
/// <returns>An array of cache keys.</returns>
69-
public static string[] CreateWebPageItemIdKeys(IEnumerable<int>? itemIdList) =>
70-
itemIdList?.Select(x => CreateWebPageItemIdKey(x))?.ToArray() ?? [];
71-
72-
/// <summary>
73-
/// Creates cache keys for web page items by content type and channel name.
74-
/// </summary>
75-
/// <param name="contentTypes">The content types.</param>
76-
/// <param name="channelName">The channel name.</param>
77-
/// <returns>An array of cache keys.</returns>
78-
public static string[] CreateWebPageItemTypeKeys(IEnumerable<string>? contentTypes, string channelName) =>
79-
contentTypes?.Select(x => $"webpageitem|bychannel|{channelName}|bycontenttype|{x}")?.ToArray() ?? [];
80-
81-
/// <summary>
82-
/// Creates cache keys for content items by content type.
83-
/// </summary>
84-
/// <param name="contentTypes">The content types.</param>
85-
/// <returns>An array of cache keys.</returns>
86-
public static string[] CreateContentItemTypeKeys(IEnumerable<string>? contentTypes) =>
87-
contentTypes?.Select(x => $"contentitem|bycontenttype|{x}")?.ToArray() ?? [];
88-
89-
/// <summary>
90-
/// Creates cache keys for content items by their GUIDs.
91-
/// </summary>
92-
/// <typeparam name="T">The type of the content items.</typeparam>
93-
/// <param name="items">The content items.</param>
94-
/// <returns>An array of cache keys.</returns>
95-
public static string[] CreateContentItemKeys<T>(IEnumerable<T>? items) where T : IContentItemFieldsSource =>
96-
items?.Select(x => $"contentitem|byid|{x.SystemFields.ContentItemGUID}")?.ToArray() ?? [];
97-
98-
/// <summary>
99-
/// Creates cache keys for web page items by their IDs.
100-
/// </summary>
101-
/// <typeparam name="T">The type of the web page items.</typeparam>
102-
/// <param name="items">The web page items.</param>
103-
/// <returns>An array of cache keys.</returns>
104-
public static string[] CreateWebPageItemKeys<T>(IEnumerable<T>? items) where T : IWebPageFieldsSource =>
105-
items?.Select(x => $"webpageitem|byid|{x.SystemFields.WebPageItemID}")?.ToArray() ?? [];
106-
107-
/// <summary>
108-
/// Creates a cache dependency for the specified content items.
109-
/// </summary>
110-
/// <typeparam name="T">The type of the content items.</typeparam>
111-
/// <param name="items">The content items.</param>
112-
/// <returns>A cache dependency for the specified content items.</returns>
113-
public static CMSCacheDependency CreateContentItemCacheDependency<T>(IEnumerable<T>? items)
114-
where T : IContentItemFieldsSource
115-
{
116-
string[] contentItemKeys = CreateContentItemKeys(items);
117-
118-
return CacheHelper.GetCacheDependency(contentItemKeys);
119-
}
120-
121-
/// <summary>
122-
/// Creates a cache dependency for the specified web page items.
123-
/// </summary>
124-
/// <typeparam name="T">The type of the web page items.</typeparam>
125-
/// <param name="items">The web page items.</param>
126-
/// <returns>A cache dependency for the specified web page items.</returns>
127-
public static CMSCacheDependency CreateWebPageItemCacheDependency<T>(IEnumerable<T>? items)
128-
where T : IWebPageFieldsSource
129-
{
130-
string[] webPageItemKeys = CreateWebPageItemKeys(items);
131-
return CacheHelper.GetCacheDependency(webPageItemKeys);
132-
}
133-
134-
/// <summary>
135-
/// Creates a cache dependency for web page items by content type and channel name.
136-
/// </summary>
137-
/// <param name="contentTypes">The content types.</param>
138-
/// <param name="channelName">The channel name.</param>
139-
/// <returns>A cache dependency for the specified web page items.</returns>
140-
public static CMSCacheDependency CreateWebPageItemTypeCacheDependency(IEnumerable<string>? contentTypes,
141-
string channelName)
142-
{
143-
string[] webPageItemTypeKeys = CreateWebPageItemTypeKeys(contentTypes, channelName);
144-
return CacheHelper.GetCacheDependency(webPageItemTypeKeys);
145-
}
146-
147-
/// <summary>
148-
/// Creates a cache dependency for content items by content type.
149-
/// </summary>
150-
/// <param name="contentTypes">The content types.</param>
151-
/// <returns>A cache dependency for the specified content items.</returns>
152-
public static CMSCacheDependency CreateContentItemTypeCacheDependency(IEnumerable<string>? contentTypes)
153-
{
154-
string[] contentItemTypeKeys = CreateContentItemTypeKeys(contentTypes);
155-
return CacheHelper.GetCacheDependency(contentItemTypeKeys);
156-
}
157-
158-
/// <summary>
159-
/// Creates a cache dependency for web page items by their GUIDs.
160-
/// </summary>
161-
/// <param name="itemGuids">The GUIDs of the web page items.</param>
162-
/// <returns>A cache dependency for the specified web page items.</returns>
163-
public static CMSCacheDependency CreateWebPageItemGUIDCacheDependency(IEnumerable<Guid>? itemGuids)
164-
{
165-
string[] webPageItemGUIDKeys = CreateWebPageItemGUIDKeys(itemGuids);
166-
return CacheHelper.GetCacheDependency(webPageItemGUIDKeys);
167-
}
168-
169-
/// <summary>
170-
/// Creates a cache dependency for web page items by their IDs.
171-
/// </summary>
172-
/// <param name="itemIdList"></param>
173-
/// <returns></returns>
174-
public static CMSCacheDependency CreateWebPageItemIDCacheDependency(IEnumerable<int>? itemIdList)
175-
{
176-
string[] webPageItemIdKeys = CreateWebPageItemIdKeys(itemIdList);
177-
return CacheHelper.GetCacheDependency(webPageItemIdKeys);
178-
}
179-
180-
/// <summary>
181-
/// Creates a cache dependency for content items by their GUIDs.
182-
/// </summary>
183-
/// <param name="itemGuids">The GUIDs of the web page items.</param>
184-
/// <returns>A cache dependency for the specified web page items.</returns>
185-
public static CMSCacheDependency CreateContentItemGUIDCacheDependency(IEnumerable<Guid>? itemGuids)
186-
{
187-
string[] webPageItemGUIDKeys = CreateContentItemGUIDKeys(itemGuids);
188-
return CacheHelper.GetCacheDependency(webPageItemGUIDKeys);
189-
}
190-
191-
/// <summary>
192-
/// Creates a cache dependency for content items by their IDs.
193-
/// </summary>
194-
/// <param name="itemIdList"></param>
195-
/// <returns></returns>
196-
public static CMSCacheDependency CreateContentItemIDCacheDependency(IEnumerable<int>? itemIdList)
197-
{
198-
string[] webPageItemIdKeys = CreateContentItemIdKeys(itemIdList);
199-
return CacheHelper.GetCacheDependency(webPageItemIdKeys);
200-
}
198+
string[] webPageItemIdKeys = CreateContentItemIdKeys(itemIdList);
199+
return CacheHelper.GetCacheDependency(webPageItemIdKeys);
201200
}
202201
}

0 commit comments

Comments
 (0)