mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-19 12:59:39 -07:00
fix(notifications): 🐛 This is a fix for some of the duplicate notification issues #3825
This commit is contained in:
parent
53bff29795
commit
22bb4226ea
4 changed files with 55 additions and 10 deletions
42
src/Ombi.Notifications.Tests/NotificationServiceTests.cs
Normal file
42
src/Ombi.Notifications.Tests/NotificationServiceTests.cs
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Microsoft.Extensions.Logging.Abstractions;
|
||||||
|
using Moq.AutoMock;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Ombi.Notifications.Tests
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class NotificationServiceTests
|
||||||
|
{
|
||||||
|
|
||||||
|
private NotitficationServiceTestFacade _subject;
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void Setup()
|
||||||
|
{
|
||||||
|
var mocker = new AutoMocker();
|
||||||
|
mocker.Use(NullLogger.Instance);
|
||||||
|
_subject = mocker.CreateInstance<NotitficationServiceTestFacade>();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void PopulateAgentsTests()
|
||||||
|
{
|
||||||
|
Assert.That(_subject.Agents, Has.Count.EqualTo(12));
|
||||||
|
Assert.That(_subject.Agents.DistinctBy(x => x.NotificationName).ToList(), Has.Count.EqualTo(12));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class NotitficationServiceTestFacade : NotificationService
|
||||||
|
{
|
||||||
|
public NotitficationServiceTestFacade(IServiceProvider provider, ILogger<NotificationService> log) : base(provider, log)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<INotification> Agents => base.NotificationAgents;
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,6 +13,7 @@
|
||||||
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="6.0.0" />
|
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="6.0.0" />
|
||||||
<packagereference Include="Microsoft.NET.Test.Sdk" Version="16.8.0"></packagereference>
|
<packagereference Include="Microsoft.NET.Test.Sdk" Version="16.8.0"></packagereference>
|
||||||
<PackageReference Include="Moq" Version="4.10.0" />
|
<PackageReference Include="Moq" Version="4.10.0" />
|
||||||
|
<PackageReference Include="Moq.AutoMock" Version="0.4.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace Ombi.Notifications
|
||||||
AlbumRepository = album;
|
AlbumRepository = album;
|
||||||
UserNotificationPreferences = notificationUserPreferences;
|
UserNotificationPreferences = notificationUserPreferences;
|
||||||
_userManager = um;
|
_userManager = um;
|
||||||
Settings.ClearCache();
|
Settings?.ClearCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ISettingsService<T> Settings { get; }
|
protected ISettingsService<T> Settings { get; }
|
||||||
|
@ -64,7 +64,11 @@ namespace Ombi.Notifications
|
||||||
|
|
||||||
public async Task NotifyAsync(NotificationOptions model, Settings.Settings.Models.Settings settings)
|
public async Task NotifyAsync(NotificationOptions model, Settings.Settings.Models.Settings settings)
|
||||||
{
|
{
|
||||||
if (settings == null) await NotifyAsync(model);
|
if (settings == null)
|
||||||
|
{
|
||||||
|
await NotifyAsync(model);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var notificationSettings = (T)settings;
|
var notificationSettings = (T)settings;
|
||||||
|
|
||||||
|
@ -114,15 +118,13 @@ namespace Ombi.Notifications
|
||||||
case NotificationType.IssueComment:
|
case NotificationType.IssueComment:
|
||||||
await IssueComment(model, notificationSettings);
|
await IssueComment(model, notificationSettings);
|
||||||
break;
|
break;
|
||||||
case NotificationType.AdminNote:
|
|
||||||
break;
|
|
||||||
case NotificationType.WelcomeEmail:
|
|
||||||
break;
|
|
||||||
case NotificationType.Newsletter:
|
|
||||||
break;
|
|
||||||
case NotificationType.PartiallyAvailable:
|
case NotificationType.PartiallyAvailable:
|
||||||
await PartiallyAvailable(model, notificationSettings);
|
await PartiallyAvailable(model, notificationSettings);
|
||||||
break;
|
break;
|
||||||
|
case NotificationType.AdminNote:
|
||||||
|
case NotificationType.WelcomeEmail:
|
||||||
|
case NotificationType.Newsletter:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
throw new ArgumentOutOfRangeException();
|
throw new ArgumentOutOfRangeException();
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace Ombi.Notifications
|
||||||
PopulateAgents();
|
PopulateAgents();
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<INotification> NotificationAgents { get; }
|
protected List<INotification> NotificationAgents { get; }
|
||||||
private ILogger<NotificationService> Log { get; }
|
private ILogger<NotificationService> Log { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -55,7 +55,7 @@ namespace Ombi.Notifications
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PopulateAgents()
|
protected void PopulateAgents()
|
||||||
{
|
{
|
||||||
var baseSearchType = typeof(BaseNotification<>).Name;
|
var baseSearchType = typeof(BaseNotification<>).Name;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue