90 lines
4.0 KiB
C#
90 lines
4.0 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using Oqtane.Shared;
|
|
using Xunit;
|
|
|
|
namespace Oqtane.Test.Oqtane.Shared.Tests
|
|
{
|
|
public class UtilitiesTests
|
|
{
|
|
[Theory]
|
|
[InlineData("contoso", "login", "returnUrl=/admin", "/contoso/login/!/returnUrl=/admin")]
|
|
[InlineData("contoso", "admin", "", "/contoso/admin")]
|
|
[InlineData("contoso", "", "pageId=4", "/contoso?pageId=4")]
|
|
[InlineData("contoso", "", "pageId=4&moduleId=10", "/contoso?pageId=4&moduleId=10")]
|
|
[InlineData("contoso", "", "", "/contoso")]
|
|
[InlineData("", "login", "returnUrl=/admin", "/login/!/returnUrl=/admin")]
|
|
[InlineData("", "admin", "", "/admin")]
|
|
[InlineData("", "", "pageId=4", "/?pageId=4")]
|
|
[InlineData("", "", "pageId=4&moduleId=10", "/?pageId=4&moduleId=10")]
|
|
[InlineData("", "", "", "/")]
|
|
public void NavigateUrlTest(string alias, string path, string parameters, string expectedUrl)
|
|
{
|
|
// Arrange
|
|
var navigatedUrl = string.Empty;
|
|
|
|
// Act
|
|
navigatedUrl = Utilities.NavigateUrl(alias, path, parameters);
|
|
|
|
// Assert
|
|
Assert.Equal(expectedUrl, navigatedUrl);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(2022, 02, 01, "21:00", "Eastern Standard Time", 2022, 2, 2, 2)]
|
|
[InlineData(2022, 02, 02, "15:00", "Eastern Standard Time", 2022, 2, 2, 20)]
|
|
[InlineData(2022, 02, 02, "", "Eastern Standard Time", 2022, 2, 2, 5)]
|
|
[InlineData(0, 0, 0, "", "Eastern Standard Time", 0, 0, 0, 0)]
|
|
public void LocalDateAndTimeAsUtcTest(int yr, int mo, int day, string timeString, string zone, int yrUtc, int moUtc, int dayUtc, int hrUtc)
|
|
{
|
|
// Arrange
|
|
DateTime? srcDate = null;
|
|
if (yr > 0)
|
|
{
|
|
srcDate = new DateTime(yr, mo, day);
|
|
}
|
|
|
|
// Act
|
|
var dateTime = Utilities.LocalDateAndTimeAsUtc(srcDate, timeString, TimeZoneInfo.FindSystemTimeZoneById(zone));
|
|
|
|
// Assert
|
|
DateTime? expected = null;
|
|
if (yrUtc > 0)
|
|
{
|
|
expected = new DateTime(yrUtc, moUtc, dayUtc, hrUtc, 0, 0, DateTimeKind.Utc);
|
|
}
|
|
Assert.Equal(expected, dateTime);
|
|
}
|
|
|
|
[Theory]
|
|
// Standard Time
|
|
[InlineData(2022, 2, 2, 2, DateTimeKind.Unspecified, "Eastern Standard Time", "2022/02/01", "21:00")]
|
|
[InlineData(2022, 2, 2, 2, DateTimeKind.Utc, "Eastern Standard Time", "2022/02/01", "21:00")]
|
|
[InlineData(2022, 2, 2, 20, DateTimeKind.Unspecified, "Eastern Standard Time", "2022/02/02", "15:00")]
|
|
[InlineData(2022, 2, 2, 20, DateTimeKind.Utc, "Eastern Standard Time", "2022/02/02", "15:00")]
|
|
[InlineData(2022, 2, 2, 5, DateTimeKind.Unspecified, "Eastern Standard Time", "2022/02/02", "")]
|
|
[InlineData(2022, 2, 2, 5, DateTimeKind.Utc, "Eastern Standard Time", "2022/02/02", "")]
|
|
// Daylight Savings Time
|
|
[InlineData(2022, 7, 2, 20, DateTimeKind.Unspecified, "Eastern Standard Time", "2022/07/02", "16:00")]
|
|
[InlineData(2022, 7, 2, 20, DateTimeKind.Utc, "Eastern Standard Time", "2022/07/02", "16:00")]
|
|
[InlineData(2022, 7, 2, 4, DateTimeKind.Unspecified, "Eastern Standard Time", "2022/07/02", "")]
|
|
[InlineData(2022, 7, 2, 4, DateTimeKind.Utc, "Eastern Standard Time", "2022/07/02", "")]
|
|
public void UtcAsLocalDateAndTimeTest(int yr, int mo, int day, int hr, DateTimeKind dateTimeKind, string zone, string expectedDate, string expectedTime)
|
|
{
|
|
// Arrange
|
|
DateTime? srcDate = null;
|
|
if (yr > 0)
|
|
{
|
|
srcDate = new DateTime(yr, mo, day, hr, 0, 0, dateTimeKind);
|
|
}
|
|
|
|
// Act
|
|
var dateAndTime = Utilities.UtcAsLocalDateAndTime(srcDate, TimeZoneInfo.FindSystemTimeZoneById(zone));
|
|
|
|
// Assert
|
|
Assert.Equal(expectedDate, dateAndTime.date.Value.ToString("yyyy/MM/dd"));
|
|
Assert.Equal(expectedTime, dateAndTime.time);
|
|
}
|
|
}
|
|
}
|