Browse Source

feat(notifications): 通知数据应交由具体实现者来处理数据

pull/1019/head
colin 1 year ago
parent
commit
f4f96f0247
  1. 30
      aspnet-core/framework/exporter/LINGYUN.Abp.Exporter.MagicodesIE.Excel/FodyWeavers.xsd
  2. 2
      aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.Emailing/LINGYUN/Abp/Notifications/Emailing/AbpNotificationsEmailingModule.cs
  3. 3
      aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.SignalR/LINGYUN/Abp/Notifications/SignalR/AbpNotificationsSignalRModule.cs
  4. 7
      aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.Sms/LINGYUN/Abp/Notifications/Sms/AbpNotificationsSmsModule.cs
  5. 4
      aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.Sms/README.md
  6. 5
      aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.WeChat.MiniProgram/LINGYUN/Abp/Notifications/WeChat/MiniProgram/AbpNotificationsWeChatMiniProgramModule.cs
  7. 4
      aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.WeChat.MiniProgram/LINGYUN/Abp/Notifications/WeChat/MiniProgram/AbpNotificationsWeChatMiniProgramOptions.cs
  8. 3
      aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.WeChat.MiniProgram/README.md
  9. 5
      aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications/LINGYUN/Abp/Notifications/AbpNotificationsPublishOptions.cs
  10. 6
      aspnet-core/services/LY.MicroService.Applications.Single/BackgroundJobs/NotificationPublishJob.cs
  11. 15
      aspnet-core/services/LY.MicroService.Applications.Single/EventBus/Distributed/NotificationEventHandler.cs
  12. 2
      aspnet-core/services/LY.MicroService.Applications.Single/Properties/launchSettings.json
  13. 8
      aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json
  14. 28
      aspnet-core/services/LY.MicroService.RealtimeMessage.HttpApi.Host/BackgroundJobs/NotificationPublishJob.cs
  15. 10
      aspnet-core/services/LY.MicroService.RealtimeMessage.HttpApi.Host/EventBus/Distributed/NotificationEventHandler.cs
  16. 17
      aspnet-core/tests/LINGYUN.Abp.Notifications.Sms.Tests/LINGYUN/Abp/Notifications/Sms/AbpNotificationsSmsTestsModule.cs
  17. 58
      aspnet-core/tests/LINGYUN.Abp.Notifications.Sms.Tests/LINGYUN/Abp/Notifications/Sms/SmsNotificationDataMapping_Tests.cs
  18. 15
      aspnet-core/tests/LINGYUN.Abp.Notifications.WeChat.MiniProgram.Tests/LINGYUN/Abp/Notifications/WeChat/MiniProgram/AbpNotificationsWeChatMiniProgramTestsModule.cs
  19. 50
      aspnet-core/tests/LINGYUN.Abp.Notifications.WeChat.MiniProgram.Tests/LINGYUN/Abp/Notifications/WeChat/WeChatMiniProgramNotificationDataMapping_Tests.cs

30
aspnet-core/framework/exporter/LINGYUN.Abp.Exporter.MagicodesIE.Excel/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

2
aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.Emailing/LINGYUN/Abp/Notifications/Emailing/AbpNotificationsEmailingModule.cs

@ -15,8 +15,6 @@ public class AbpNotificationsEmailingModule : AbpModule
Configure<AbpNotificationsPublishOptions>(options =>
{
options.PublishProviders.Add<EmailingNotificationPublishProvider>();
options.NotificationDataMappings
.MappingDefault(EmailingNotificationPublishProvider.ProviderName, data => data);
});
}
}

3
aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.SignalR/LINGYUN/Abp/Notifications/SignalR/AbpNotificationsSignalRModule.cs

@ -13,9 +13,6 @@ public class AbpNotificationsSignalRModule : AbpModule
Configure<AbpNotificationsPublishOptions>(options =>
{
options.PublishProviders.Add<SignalRNotificationPublishProvider>();
options.NotificationDataMappings
.MappingDefault(SignalRNotificationPublishProvider.ProviderName,
data => data.ToSignalRData());
});
}
}

7
aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.Sms/LINGYUN/Abp/Notifications/Sms/AbpNotificationsSmsModule.cs

@ -20,13 +20,6 @@ public class AbpNotificationsSmsModule : AbpModule
Configure<AbpNotificationsPublishOptions>(options =>
{
options.PublishProviders.Add<SmsNotificationPublishProvider>();
var smsOptions = preSmsActions.Configure();
options.NotificationDataMappings
.MappingDefault(
SmsNotificationPublishProvider.ProviderName,
data => NotificationData.ToStandardData(smsOptions.TemplateParamsPrefix, data));
});
}
}

4
aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.Sms/README.md

@ -9,10 +9,6 @@
自定义的发送方法可以通过实现 ##ISmsNotificationSender## 接口或重写 ##SmsNotificationSender## 即可
内置了通知数据 NotificationDataMappings 方法
可通过 NotificationDataMappings.MappingAll(SmsNotificationPublishProvider.ProviderName, Func<NotificationData, NotificationData> func) 来自定义规则
## 配置使用
* 此配置项将在下一个短信相关大版本移除

5
aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.WeChat.MiniProgram/LINGYUN/Abp/Notifications/WeChat/MiniProgram/AbpNotificationsWeChatMiniProgramModule.cs

@ -21,11 +21,6 @@ public class AbpNotificationsWeChatMiniProgramModule : AbpModule
Configure<AbpNotificationsPublishOptions>(options =>
{
options.PublishProviders.Add<WeChatMiniProgramNotificationPublishProvider>();
var wechatOptions = preActions.Configure();
options.NotificationDataMappings
.MappingDefault(WeChatMiniProgramNotificationPublishProvider.ProviderName,
data => NotificationData.ToStandardData(wechatOptions.DefaultMsgPrefix, data));
});
}
}

4
aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.WeChat.MiniProgram/LINGYUN/Abp/Notifications/WeChat/MiniProgram/AbpNotificationsWeChatMiniProgramOptions.cs

@ -5,10 +5,6 @@
/// </summary>
public class AbpNotificationsWeChatMiniProgramOptions
{
/// <summary>
/// 默认消息头部标记
/// </summary>
public string DefaultMsgPrefix { get; set; } = "[wmp]";
/// <summary>
/// 默认小程序模板
/// </summary>

3
aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.WeChat.MiniProgram/README.md

@ -7,9 +7,6 @@
#### 注意
内置了通知数据 NotificationDataMappings 方法
可通过 NotificationDataMappings.MappingAll(WeChatMiniProgramNotificationPublishProvider.ProviderName, Func<NotificationData, NotificationData> func) 来自定义规则
## 配置使用
* 此配置项将在下一个微信相关大版本移除,合并到 LINGYUN.Abp.WeChat.MiniProgram.AbpWeChatMiniProgramOptions

5
aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications/LINGYUN/Abp/Notifications/AbpNotificationsPublishOptions.cs

@ -11,10 +11,6 @@ public class AbpNotificationsPublishOptions
/// </summary>
public ITypeList<INotificationPublishProvider> PublishProviders { get; }
/// <summary>
/// 可以自定义某个通知的格式
/// </summary>
public NotificationDataMappingDictionary NotificationDataMappings { get; }
/// <summary>
/// 过期时间
/// 默认60天
/// </summary>
@ -29,7 +25,6 @@ public class AbpNotificationsPublishOptions
public AbpNotificationsPublishOptions()
{
PublishProviders = new TypeList<INotificationPublishProvider>();
NotificationDataMappings = new NotificationDataMappingDictionary();
ExpirationTime = TimeSpan.FromDays(60);
DateTimeFormat = DefaultDateTimeFormat;

6
aspnet-core/services/LY.MicroService.Applications.Single/BackgroundJobs/NotificationPublishJob.cs

@ -31,12 +31,6 @@ public class NotificationPublishJob : AsyncBackgroundJob<NotificationPublishJobA
var notification = await store.GetNotificationOrNullAsync(args.TenantId, args.NotificationId);
notification.Data = NotificationDataSerializer.Serialize(notification.Data);
var notifacationDataMapping = Options.NotificationDataMappings
.GetMapItemOrDefault(notification.Name, publishProvider.Name);
if (notifacationDataMapping != null)
{
notification.Data = notifacationDataMapping.MappingFunc(notification.Data);
}
await publishProvider.PublishAsync(notification, args.UserIdentifiers);
}
}

15
aspnet-core/services/LY.MicroService.Applications.Single/EventBus/Distributed/NotificationEventHandler.cs

@ -413,12 +413,15 @@ namespace LY.MicroService.Applications.Single.EventBus.Distributed
try
{
Logger.LogDebug($"Sending notification with provider {provider.Name}");
var notifacationDataMapping = Options.NotificationDataMappings
.GetMapItemOrDefault(provider.Name, notificationInfo.Name);
if (notifacationDataMapping != null)
{
notificationInfo.Data = notifacationDataMapping.MappingFunc(notificationInfo.Data);
}
// 2024-10-10: 框架层面应该取消通知数据转换,而是交给提供商来实现
//var notifacationDataMapping = Options.NotificationDataMappings
// .GetMapItemOrDefault(provider.Name, notificationInfo.Name);
//if (notifacationDataMapping != null)
//{
// notificationInfo.Data = notifacationDataMapping.MappingFunc(notificationInfo.Data);
//}
// 发布
await provider.PublishAsync(notificationInfo, subscriptionUsers);

2
aspnet-core/services/LY.MicroService.Applications.Single/Properties/launchSettings.json

@ -14,7 +14,7 @@
"launchBrowser": false,
"applicationUrl": "http://0.0.0.0:30001",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
"ASPNETCORE_ENVIRONMENT": "Production"
}
}
}

8
aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json

@ -127,6 +127,14 @@
"Configuration": "127.0.0.1,defaultDatabase=15",
"InstanceName": "LINGYUN.Abp.Application"
},
"Features": {
"Validation": {
"Redis": {
"Configuration": "127.0.0.1,defaultDatabase=13",
"InstanceName": "LINGYUN.Abp.Application"
}
}
},
"AuthServer": {
"UseOpenIddict": true,
"Authority": "http://127.0.0.1:30001/",

28
aspnet-core/services/LY.MicroService.RealtimeMessage.HttpApi.Host/BackgroundJobs/NotificationPublishJob.cs

@ -1,13 +1,13 @@
using LINGYUN.Abp.Notifications;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using System;
using System.Threading.Tasks;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.DependencyInjection;
namespace LY.MicroService.RealtimeMessage.BackgroundJobs;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using System;
using System.Threading.Tasks;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.DependencyInjection;
namespace LY.MicroService.RealtimeMessage.BackgroundJobs;
public class NotificationPublishJob : AsyncBackgroundJob<NotificationPublishJobArgs>, ITransientDependency
{
protected AbpNotificationsPublishOptions Options { get; }
@ -33,15 +33,9 @@ public class NotificationPublishJob : AsyncBackgroundJob<NotificationPublishJobA
var store = scope.ServiceProvider.GetRequiredService<INotificationStore>();
var notification = await store.GetNotificationOrNullAsync(args.TenantId, args.NotificationId);
notification.Data = NotificationDataSerializer.Serialize(notification.Data);
var notifacationDataMapping = Options.NotificationDataMappings
.GetMapItemOrDefault(notification.Name, publishProvider.Name);
if (notifacationDataMapping != null)
{
notification.Data = notifacationDataMapping.MappingFunc(notification.Data);
}
await publishProvider.PublishAsync(notification, args.UserIdentifiers);
}
}
}
}
}

10
aspnet-core/services/LY.MicroService.RealtimeMessage.HttpApi.Host/EventBus/Distributed/NotificationEventHandler.cs

@ -418,16 +418,6 @@ namespace LY.MicroService.RealtimeMessage.EventBus.Distributed
try
{
Logger.LogDebug($"Sending notification with provider {provider.Name}");
if (notificationInfo.Type != NotificationType.ServiceCallback)
{
var notifacationDataMapping = Options.NotificationDataMappings
.GetMapItemOrDefault(provider.Name, notificationInfo.Name);
if (notifacationDataMapping != null)
{
notificationInfo.Data = notifacationDataMapping.MappingFunc(notificationInfo.Data);
}
}
// 发布
await provider.PublishAsync(notificationInfo, subscriptionUsers);

17
aspnet-core/tests/LINGYUN.Abp.Notifications.Sms.Tests/LINGYUN/Abp/Notifications/Sms/AbpNotificationsSmsTestsModule.cs

@ -11,7 +11,7 @@ namespace LINGYUN.Abp.Notifications.Sms
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
// 改变默认数据前缀方法
// �ı�Ĭ������ǰ׺����
PreConfigure<AbpNotificationsSmsOptions>(options =>
{
options.TemplateParamsPrefix = "[sms-override]";
@ -20,22 +20,9 @@ namespace LINGYUN.Abp.Notifications.Sms
public override void ConfigureServices(ServiceConfigurationContext context)
{
// 自定义数据处理方法
// �Զ������ݴ�������
Configure<AbpNotificationOptions>(options =>
{
// 这条通知返回标准化的通知
options.NotificationDataMappings
.Mapping(
SmsNotificationPublishProvider.ProviderName,
NotificationsTestsNames.Test2,
data => NotificationData.ToStandardData(data));
// 这条通知不做任何处理
options.NotificationDataMappings
.Mapping(
SmsNotificationPublishProvider.ProviderName,
NotificationsTestsNames.Test3,
data => data);
});
}
}

58
aspnet-core/tests/LINGYUN.Abp.Notifications.Sms.Tests/LINGYUN/Abp/Notifications/Sms/SmsNotificationDataMapping_Tests.cs

@ -30,53 +30,53 @@ namespace LINGYUN.Abp.Notifications.Sms
[Fact]
public void Mapping_Sms_Notification_Data_Test()
{
var mappingSmsItem = NotificationOptions
.NotificationDataMappings
.GetMapItemOrDefault(SmsNotificationPublishProvider.ProviderName, NotificationsTestsNames.Test1);
// var mappingSmsItem = NotificationOptions
// .NotificationDataMappings
// .GetMapItemOrDefault(SmsNotificationPublishProvider.ProviderName, NotificationsTestsNames.Test1);
mappingSmsItem.ShouldNotBeNull();
// mappingSmsItem.ShouldNotBeNull();
var mappingSmsData = mappingSmsItem.MappingFunc(_notificationData);
mappingSmsData.TryGetData("phoneNumber").ShouldNotBeNull();
mappingSmsData.TryGetData("phoneNumber").ToString().ShouldBe("13800138000");
// var mappingSmsData = mappingSmsItem.MappingFunc(_notificationData);
// mappingSmsData.TryGetData("phoneNumber").ShouldNotBeNull();
// mappingSmsData.TryGetData("phoneNumber").ToString().ShouldBe("13800138000");
mappingSmsData.TryGetData("template").ShouldNotBeNull();
mappingSmsData.TryGetData("template").ToString().ShouldBe("SM_202011250901");
// mappingSmsData.TryGetData("template").ShouldNotBeNull();
// mappingSmsData.TryGetData("template").ToString().ShouldBe("SM_202011250901");
// 按照预定义规则,这条数据被丢弃
mappingSmsData.TryGetData("otherDataKey").ShouldBeNull();
// // 按照预定义规则,这条数据被丢弃
// mappingSmsData.TryGetData("otherDataKey").ShouldBeNull();
}
[Fact]
public void Mapping_Standard_Notification_Data_Test()
{
var mappingStandardItem = NotificationOptions
.NotificationDataMappings
.GetMapItemOrDefault(SmsNotificationPublishProvider.ProviderName, NotificationsTestsNames.Test2);
// var mappingStandardItem = NotificationOptions
// .NotificationDataMappings
// .GetMapItemOrDefault(SmsNotificationPublishProvider.ProviderName, NotificationsTestsNames.Test2);
var mappingStandardData = mappingStandardItem.MappingFunc(_notificationData);
// var mappingStandardData = mappingStandardItem.MappingFunc(_notificationData);
// 按照自定义规则,其他数据被丢弃
mappingStandardData.TryGetData("phoneNumber").ShouldBeNull();
mappingStandardData.TryGetData("template").ShouldBeNull();
mappingStandardData.TryGetData("otherDataKey").ShouldBeNull();
mappingStandardData.ExtraProperties.Count.ShouldBe(6);
// // 按照自定义规则,其他数据被丢弃
// mappingStandardData.TryGetData("phoneNumber").ShouldBeNull();
// mappingStandardData.TryGetData("template").ShouldBeNull();
// mappingStandardData.TryGetData("otherDataKey").ShouldBeNull();
// mappingStandardData.ExtraProperties.Count.ShouldBe(6);
}
[Fact]
public void Mapping_Origin_Notification_Data_Test()
{
var mappingOriginItem = NotificationOptions
.NotificationDataMappings
.GetMapItemOrDefault(SmsNotificationPublishProvider.ProviderName, NotificationsTestsNames.Test3);
// var mappingOriginItem = NotificationOptions
// .NotificationDataMappings
// .GetMapItemOrDefault(SmsNotificationPublishProvider.ProviderName, NotificationsTestsNames.Test3);
var mappingOriginData = mappingOriginItem.MappingFunc(_notificationData);
// var mappingOriginData = mappingOriginItem.MappingFunc(_notificationData);
// 按照自定义规则,所有数据被保留
mappingOriginData.TryGetData(NotificationSmsOptions.TemplateParamsPrefix + "phoneNumber").ShouldNotBeNull();
mappingOriginData.TryGetData(NotificationSmsOptions.TemplateParamsPrefix + "template").ShouldNotBeNull();
mappingOriginData.TryGetData("otherDataKey").ShouldNotBeNull();
mappingOriginData.ExtraProperties.Count.ShouldBe(9);
// // 按照自定义规则,所有数据被保留
// mappingOriginData.TryGetData(NotificationSmsOptions.TemplateParamsPrefix + "phoneNumber").ShouldNotBeNull();
// mappingOriginData.TryGetData(NotificationSmsOptions.TemplateParamsPrefix + "template").ShouldNotBeNull();
// mappingOriginData.TryGetData("otherDataKey").ShouldNotBeNull();
// mappingOriginData.ExtraProperties.Count.ShouldBe(9);
}
}
}

15
aspnet-core/tests/LINGYUN.Abp.Notifications.WeChat.MiniProgram.Tests/LINGYUN/Abp/Notifications/WeChat/MiniProgram/AbpNotificationsWeChatMiniProgramTestsModule.cs

@ -19,22 +19,9 @@ namespace LINGYUN.Abp.Notifications.WeChat.MiniProgram
public override void ConfigureServices(ServiceConfigurationContext context)
{
// 自定义数据处理方法
// �Զ������ݴ�������
Configure<AbpNotificationsPublishOptions>(options =>
{
// 这条通知返回标准化的通知
options.NotificationDataMappings
.Mapping(
WeChatMiniProgramNotificationPublishProvider.ProviderName,
NotificationsTestsNames.Test2,
data => NotificationData.ToStandardData(data));
// 这条通知不做任何处理
options.NotificationDataMappings
.Mapping(
WeChatMiniProgramNotificationPublishProvider.ProviderName,
NotificationsTestsNames.Test3,
data => data);
});
}
}

50
aspnet-core/tests/LINGYUN.Abp.Notifications.WeChat.MiniProgram.Tests/LINGYUN/Abp/Notifications/WeChat/WeChatMiniProgramNotificationDataMapping_Tests.cs

@ -30,48 +30,48 @@ namespace LINGYUN.Abp.Notifications.WeChat.MiniProgram
[Fact]
public void Mapping_WeChatMiniProgram_Notification_Data_Test()
{
var mappingOpenIdItem = NotificationsPublishOptions
.NotificationDataMappings
.GetMapItemOrDefault(WeChatMiniProgramNotificationPublishProvider.ProviderName, NotificationsTestsNames.Test1);
// var mappingOpenIdItem = NotificationsPublishOptions
// .NotificationDataMappings
// .GetMapItemOrDefault(WeChatMiniProgramNotificationPublishProvider.ProviderName, NotificationsTestsNames.Test1);
mappingOpenIdItem.ShouldNotBeNull();
// mappingOpenIdItem.ShouldNotBeNull();
var mappingOpenIdData = mappingOpenIdItem.MappingFunc(_notificationData);
mappingOpenIdData.TryGetData("openid").ShouldNotBeNull();
mappingOpenIdData.TryGetData("openid").ToString().ShouldBe("TEST");
// var mappingOpenIdData = mappingOpenIdItem.MappingFunc(_notificationData);
// mappingOpenIdData.TryGetData("openid").ShouldNotBeNull();
// mappingOpenIdData.TryGetData("openid").ToString().ShouldBe("TEST");
// 按照预定义规则,这条数据被丢弃
mappingOpenIdData.TryGetData("otherDataKey").ShouldBeNull();
// // 按照预定义规则,这条数据被丢弃
// mappingOpenIdData.TryGetData("otherDataKey").ShouldBeNull();
}
[Fact]
public void Mapping_Standard_Notification_Data_Test()
{
var mappingStandardItem = NotificationsPublishOptions
.NotificationDataMappings
.GetMapItemOrDefault(WeChatMiniProgramNotificationPublishProvider.ProviderName, NotificationsTestsNames.Test2);
// var mappingStandardItem = NotificationsPublishOptions
// .NotificationDataMappings
// .GetMapItemOrDefault(WeChatMiniProgramNotificationPublishProvider.ProviderName, NotificationsTestsNames.Test2);
var mappingStandardData = mappingStandardItem.MappingFunc(_notificationData);
// var mappingStandardData = mappingStandardItem.MappingFunc(_notificationData);
// 按照自定义规则,其他数据被丢弃
mappingStandardData.TryGetData("openid").ShouldBeNull();
mappingStandardData.TryGetData("otherDataKey").ShouldBeNull();
mappingStandardData.ExtraProperties.Count.ShouldBe(6);
// // 按照自定义规则,其他数据被丢弃
// mappingStandardData.TryGetData("openid").ShouldBeNull();
// mappingStandardData.TryGetData("otherDataKey").ShouldBeNull();
// mappingStandardData.ExtraProperties.Count.ShouldBe(6);
}
[Fact]
public void Mapping_Origin_Notification_Data_Test()
{
var mappingOriginItem = NotificationsPublishOptions
.NotificationDataMappings
.GetMapItemOrDefault(WeChatMiniProgramNotificationPublishProvider.ProviderName, NotificationsTestsNames.Test3);
// var mappingOriginItem = NotificationsPublishOptions
// .NotificationDataMappings
// .GetMapItemOrDefault(WeChatMiniProgramNotificationPublishProvider.ProviderName, NotificationsTestsNames.Test3);
var mappingOriginData = mappingOriginItem.MappingFunc(_notificationData);
// var mappingOriginData = mappingOriginItem.MappingFunc(_notificationData);
// 按照自定义规则,所有数据被保留
mappingOriginData.TryGetData(NotificationWeChatMiniProgramOptions.DefaultMsgPrefix + "openid").ShouldNotBeNull();
mappingOriginData.TryGetData("otherDataKey").ShouldNotBeNull();
mappingOriginData.ExtraProperties.Count.ShouldBe(8);
// // 按照自定义规则,所有数据被保留
// mappingOriginData.TryGetData(NotificationWeChatMiniProgramOptions.DefaultMsgPrefix + "openid").ShouldNotBeNull();
// mappingOriginData.TryGetData("otherDataKey").ShouldNotBeNull();
// mappingOriginData.ExtraProperties.Count.ShouldBe(8);
}
}
}

Loading…
Cancel
Save