62 lines
2.2 KiB
C#
62 lines
2.2 KiB
C#
using FluentAssertions;
|
|
using Wino.Calendar.ViewModels.Data;
|
|
using Wino.Core.Extensions;
|
|
using Wino.Core.Domain.Entities.Calendar;
|
|
using Google.Apis.Calendar.v3.Data;
|
|
using Xunit;
|
|
|
|
namespace Wino.Core.Tests.Synchronizers;
|
|
|
|
public sealed class CalendarItemTimeZoneDisplayTests
|
|
{
|
|
[Fact]
|
|
public void AllDayEvents_KeepTheirOriginalCalendarDates_ForDisplay()
|
|
{
|
|
var calendarItem = new CalendarItem
|
|
{
|
|
Id = Guid.NewGuid(),
|
|
Title = "National Sovereignty and Children's Day",
|
|
StartDate = new DateTime(2026, 4, 23, 0, 0, 0),
|
|
DurationInSeconds = TimeSpan.FromDays(1).TotalSeconds,
|
|
StartTimeZone = "Turkey Standard Time",
|
|
EndTimeZone = "Turkey Standard Time"
|
|
};
|
|
|
|
calendarItem.IsAllDayEvent.Should().BeTrue();
|
|
calendarItem.LocalStartDate.Should().Be(new DateTime(2026, 4, 23, 0, 0, 0));
|
|
calendarItem.LocalEndDate.Should().Be(new DateTime(2026, 4, 24, 0, 0, 0));
|
|
}
|
|
|
|
[Fact]
|
|
public void EditingAllDayEventDate_DoesNotApplyTimezoneConversion()
|
|
{
|
|
var calendarItem = new CalendarItem
|
|
{
|
|
Id = Guid.NewGuid(),
|
|
Title = "Holiday",
|
|
StartDate = new DateTime(2026, 4, 23, 0, 0, 0),
|
|
DurationInSeconds = TimeSpan.FromDays(1).TotalSeconds,
|
|
StartTimeZone = "Turkey Standard Time",
|
|
EndTimeZone = "Turkey Standard Time"
|
|
};
|
|
|
|
var viewModel = new CalendarItemViewModel(calendarItem);
|
|
|
|
viewModel.StartDate = new DateTime(2026, 4, 24, 0, 0, 0);
|
|
|
|
calendarItem.StartDate.Should().Be(new DateTime(2026, 4, 24, 0, 0, 0));
|
|
}
|
|
|
|
[Fact]
|
|
public void GmailDateOnlyEvents_KeepFloatingCalendarDates()
|
|
{
|
|
var start = new EventDateTime { Date = "2026-04-23" };
|
|
var end = new EventDateTime { Date = "2026-04-24" };
|
|
|
|
GoogleIntegratorExtensions.GetEventLocalDateTime(start).Should().Be(new DateTime(2026, 4, 23, 0, 0, 0));
|
|
GoogleIntegratorExtensions.GetEventLocalDateTime(end).Should().Be(new DateTime(2026, 4, 24, 0, 0, 0));
|
|
|
|
GoogleIntegratorExtensions.GetEventDateTimeOffset(start)!.Value.UtcDateTime.Should().Be(new DateTime(2026, 4, 23, 0, 0, 0, DateTimeKind.Utc));
|
|
}
|
|
}
|