Restore dual mail and calendar app entries
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
using FluentAssertions;
|
||||
using Wino.Core.Activation;
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Xunit;
|
||||
|
||||
namespace Wino.Core.Tests;
|
||||
|
||||
public class AppModeActivationResolverTests
|
||||
{
|
||||
[Theory]
|
||||
[InlineData("--wino-mail", WinoApplicationMode.Calendar, WinoApplicationMode.Mail)]
|
||||
[InlineData("--wino-calendar", WinoApplicationMode.Mail, WinoApplicationMode.Calendar)]
|
||||
[InlineData("--mode=mail", WinoApplicationMode.Calendar, WinoApplicationMode.Mail)]
|
||||
[InlineData("--mode=calendar", WinoApplicationMode.Mail, WinoApplicationMode.Calendar)]
|
||||
[InlineData("CalendarApp", WinoApplicationMode.Mail, WinoApplicationMode.Calendar)]
|
||||
[InlineData("App", WinoApplicationMode.Calendar, WinoApplicationMode.Mail)]
|
||||
public void Resolve_PrefersKnownMailCalendarSignals(string source, WinoApplicationMode defaultMode, WinoApplicationMode expectedMode)
|
||||
{
|
||||
var resolvedMode = AppModeActivationResolver.Resolve(source, null, null, defaultMode);
|
||||
|
||||
resolvedMode.Should().Be(expectedMode);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Resolve_ToggleDefaultArgumentFlipsBetweenMailAndCalendar()
|
||||
{
|
||||
AppModeActivationResolver.Resolve("--mode=toggle-default", null, null, WinoApplicationMode.Mail)
|
||||
.Should().Be(WinoApplicationMode.Calendar);
|
||||
|
||||
AppModeActivationResolver.Resolve("--mode=toggle-default", null, null, WinoApplicationMode.Calendar)
|
||||
.Should().Be(WinoApplicationMode.Mail);
|
||||
}
|
||||
}
|
||||
@@ -47,7 +47,7 @@ public class CalendarPageViewModelTests
|
||||
viewModel.CurrentVisibleRange.EndDate.Should().Be(new DateOnly(2026, 3, 22));
|
||||
viewModel.LoadedDateWindow.StartDate.Should().Be(new DateTime(2026, 3, 9));
|
||||
viewModel.LoadedDateWindow.EndDate.Should().Be(new DateTime(2026, 3, 30));
|
||||
viewModel.VisibleDateRangeText.Should().Be("March 16 - March 22");
|
||||
viewModel.VisibleDateRangeText.Should().Be("March 16 - 22");
|
||||
|
||||
requestedPeriod.Should().NotBeNull();
|
||||
requestedPeriod!.Start.Should().Be(new DateTime(2026, 3, 9));
|
||||
@@ -242,6 +242,45 @@ public class CalendarPageViewModelTests
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ApplyDisplayRequestAsync_ClearsCalendarBadgeOnlyOncePerPageLifetime()
|
||||
{
|
||||
var settings = CreateSettings();
|
||||
var preferencesService = CreatePreferencesService(settings);
|
||||
var calendarService = new Mock<ICalendarService>();
|
||||
var notificationBuilder = new Mock<INotificationBuilder>();
|
||||
|
||||
calendarService
|
||||
.Setup(service => service.GetCalendarEventsAsync(It.IsAny<IAccountCalendar>(), It.IsAny<ITimePeriod>()))
|
||||
.ReturnsAsync([]);
|
||||
|
||||
notificationBuilder
|
||||
.Setup(builder => builder.ClearCalendarTaskbarBadgeAsync())
|
||||
.Returns(Task.CompletedTask);
|
||||
|
||||
var viewModel = CreateViewModel(
|
||||
calendarService.Object,
|
||||
preferencesService.Object,
|
||||
new DateOnly(2026, 3, 20),
|
||||
notificationBuilder: notificationBuilder.Object);
|
||||
|
||||
viewModel.OnNavigatedTo(NavigationMode.New, null!);
|
||||
|
||||
try
|
||||
{
|
||||
var request = new CalendarDisplayRequest(CalendarDisplayType.Day, new DateOnly(2026, 3, 20));
|
||||
|
||||
await viewModel.ApplyDisplayRequestAsync(request);
|
||||
await viewModel.ApplyDisplayRequestAsync(request, forceReload: true);
|
||||
|
||||
notificationBuilder.Verify(builder => builder.ClearCalendarTaskbarBadgeAsync(), Times.Once);
|
||||
}
|
||||
finally
|
||||
{
|
||||
viewModel.OnNavigatedFrom(NavigationMode.Back, null!);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CalendarItemAddedMessage_ReconcilesTrackedLocalPreviewInPlace()
|
||||
{
|
||||
@@ -332,6 +371,15 @@ public class CalendarPageViewModelTests
|
||||
ICalendarService calendarService,
|
||||
IPreferencesService preferencesService,
|
||||
DateOnly today)
|
||||
{
|
||||
return CreateViewModel(calendarService, preferencesService, today, notificationBuilder: null);
|
||||
}
|
||||
|
||||
private static CalendarPageViewModel CreateViewModel(
|
||||
ICalendarService calendarService,
|
||||
IPreferencesService preferencesService,
|
||||
DateOnly today,
|
||||
INotificationBuilder? notificationBuilder)
|
||||
{
|
||||
var account = CreateAccount();
|
||||
|
||||
@@ -339,7 +387,7 @@ public class CalendarPageViewModelTests
|
||||
var accountCalendarViewModel = new AccountCalendarViewModel(account, calendar);
|
||||
var accountCalendarStateService = new FakeAccountCalendarStateService([accountCalendarViewModel]);
|
||||
|
||||
return CreateViewModel(calendarService, preferencesService, today, accountCalendarStateService);
|
||||
return CreateViewModel(calendarService, preferencesService, today, accountCalendarStateService, notificationBuilder: notificationBuilder);
|
||||
}
|
||||
|
||||
private static CalendarPageViewModel CreateViewModel(
|
||||
@@ -356,6 +404,7 @@ public class CalendarPageViewModelTests
|
||||
IAccountCalendarStateService accountCalendarStateService,
|
||||
INavigationService? navigationService = null,
|
||||
INativeAppService? nativeAppService = null,
|
||||
INotificationBuilder? notificationBuilder = null,
|
||||
IWinoRequestDelegator? requestDelegator = null,
|
||||
IMailDialogService? dialogService = null)
|
||||
{
|
||||
@@ -371,6 +420,7 @@ public class CalendarPageViewModelTests
|
||||
Mock.Of<IKeyPressService>(),
|
||||
nativeAppService ?? Mock.Of<INativeAppService>(),
|
||||
accountCalendarStateService,
|
||||
notificationBuilder ?? Mock.Of<INotificationBuilder>(),
|
||||
preferencesService,
|
||||
requestDelegator ?? Mock.Of<IWinoRequestDelegator>(),
|
||||
dialogService ?? Mock.Of<IMailDialogService>(),
|
||||
|
||||
@@ -159,7 +159,7 @@ public class CalendarRangeResolverTests
|
||||
|
||||
var text = formatter.Format(range, new TestDateContextProvider("de-DE", today: new DateOnly(2026, 3, 20)));
|
||||
|
||||
text.Should().Be("16. März - 22. März");
|
||||
text.Should().Be("16. März - 22");
|
||||
}
|
||||
|
||||
private static CalendarSettings CreateSettings(
|
||||
|
||||
Reference in New Issue
Block a user