Skip to content

Commit

Permalink
Tests added for FluentCalendar
Browse files Browse the repository at this point in the history
  • Loading branch information
vrassouli committed Apr 15, 2024
1 parent 9e1709f commit 970b988
Show file tree
Hide file tree
Showing 2 changed files with 137 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13171,6 +13171,14 @@
<param name="culture"></param>
<returns></returns>
</member>
<member name="M:Microsoft.FluentUI.AspNetCore.Components.DateTimeExtensions.StartOfWeek(System.DateTime,System.DayOfWeek)">
<summary>
Returns the first day of the week.
</summary>
<param name="self"></param>
<param name="firstDayOfWeek"></param>
<returns></returns>
</member>
<member name="M:Microsoft.FluentUI.AspNetCore.Components.DateTimeExtensions.StartOfWeek(System.DateTime,System.Globalization.CultureInfo)">
<summary>
Returns the first day of the week.
Expand Down
129 changes: 129 additions & 0 deletions tests/Core/DateTime/FluentCalendarTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,36 @@ public void FluentCalendar_Title()
</div>");
}

[Theory]
[InlineData(2022, 02, 15, "en-US", "February 2022", "January", "March")]
[InlineData(2022, 02, 15, "fa-IR", "بهمن 1400", "دی", "اسفند")]
public void FluentCalendar_Title_ByCulture(int year, int month, int day, string cultureName, string monthNameWithYear, string prevMonthName, string nextMonthName)
{
// Arrange
using var ctx = new TestContext();

// Act
var calendar = ctx.RenderComponent<FluentCalendar>(parameters =>
{
parameters.Add(p => p.Culture, CultureInfo.GetCultureInfo(cultureName));
parameters.Add(p => p.Value, new System.DateTime(year, month, day));
});
var title = calendar.Find(".title");

// Assert
title.MarkupMatches(@$"<div class=""title"" part=""title"" aria-label=""{monthNameWithYear}"">
<div part=""label"" class=""label"">{monthNameWithYear}</div>
<div part=""move"" class=""change-period"">
<div class=""previous"" title=""{prevMonthName}"">
{FluentCalendar.ArrowUp}
</div>
<div class=""next"" title=""{nextMonthName}"">
{FluentCalendar.ArrowDown}
</div>
</div>
</div>");
}

[Fact]
public void FluentCalendar_WeekDaysTitle()
{
Expand Down Expand Up @@ -171,6 +201,29 @@ public void FluentCalendar_SetPickerMonth()
Assert.Equal(juneFirst, calendar.Instance.PickerMonth);
}

[Theory]
[InlineData("en-US", "June 2022", "2022-06-01")]
[InlineData("fa-IR", "خرداد 1401", "2022-05-22")]
public void FluentCalendar_SetPickerMonth_ByCulture(string cultureName, string expectedMonthName, string expectedPickerMonthFirst)
{
// Arrange
using var ctx = new TestContext();

// Act
var calendar = ctx.RenderComponent<FluentCalendar>(parameters =>
{
parameters.Add(p => p.Culture, CultureInfo.GetCultureInfo(cultureName));
parameters.Add(p => p.Value, new System.DateTime(2022, 02, 15));
parameters.Add(p => p.PickerMonth, new System.DateTime(2022, 06, 15));
});
var monthName = calendar.Find(".label").InnerHtml;
var pickerMonthFirst = System.DateTime.Parse(expectedPickerMonthFirst);

// Assert
Assert.Equal(expectedMonthName, monthName);
Assert.Equal(pickerMonthFirst, calendar.Instance.PickerMonth);
}

[Fact]
public void FluentCalendar_ClickAndSelectDate()
{
Expand Down Expand Up @@ -217,6 +270,30 @@ public void FluentCalendar_ClickPreviousMonth()
Assert.Equal("May 2022", monthName);
}

[Theory]
[InlineData("en-US", "May 2022")]
[InlineData("fa-IR", "اردیبهشت 1401")]
public void FluentCalendar_ClickPreviousMonth_ByCulture(string cultureName, string expectedMonthName)
{
// Arrange
using var ctx = new TestContext();

// Act
var calendar = ctx.RenderComponent<FluentCalendar>(parameters =>
{
parameters.Add(p => p.Culture, CultureInfo.GetCultureInfo(cultureName));
parameters.Add(p => p.PickerMonth, System.DateTime.Parse("2022-06-15"));
});

// Click on Previous Month button
var buttonMove = calendar.Find(".previous");
buttonMove.Click();

// Assert
var monthName = calendar.Find(".label").InnerHtml;
Assert.Equal(expectedMonthName, monthName);
}

[Fact]
public void FluentCalendar_ClickNextMonth()
{
Expand All @@ -239,6 +316,30 @@ public void FluentCalendar_ClickNextMonth()
Assert.Equal("July 2022", monthName);
}

[Theory]
[InlineData("en-US", "July 2022")]
[InlineData("fa-IR", "تیر 1401")]
public void FluentCalendar_ClickNextMonth_ByCulture(string cultureName, string expectedMonthName)
{
// Arrange
using var ctx = new TestContext();

// Act
var calendar = ctx.RenderComponent<FluentCalendar>(parameters =>
{
parameters.Add(p => p.Culture, CultureInfo.GetCultureInfo(cultureName));
parameters.Add(p => p.PickerMonth, System.DateTime.Parse("2022-06-15"));
});

// Click on Previous Month button
var buttonMove = calendar.Find(".next");
buttonMove.Click();

// Assert
var monthName = calendar.Find(".label").InnerHtml;
Assert.Equal(expectedMonthName, monthName);
}

[Fact]
public void FluentCalendar_GetDayOfMonthTwoDigit()
{
Expand Down Expand Up @@ -288,4 +389,32 @@ public void FluentCalendar_GetDayOfMonthNumeric()

Assert.Equal("1", selectedDay.TextContent);
}

[Theory]
[InlineData("en-US", "1")]
[InlineData("fa-IR", "11")]
public void FluentCalendar_GetDayOfMonthNumeric_ByCulture(string cultureName, string expectedDayNumber)
{
const string DAY = "2022-06-01";

// Arrange
using var ctx = new TestContext();

// Act
var calendar = ctx.RenderComponent<FluentCalendar>(parameters =>
{
parameters.Add(p => p.Culture, CultureInfo.GetCultureInfo(cultureName));
parameters.Add(p => p.PickerMonth, System.DateTime.Parse(DAY));
parameters.Add(p => p.DayFormat, DayFormat.Numeric);
});

// Click to select 2022-06-01
var day = calendar.Find($"div[value='{DAY}']");
day?.Click();

// Assert
var selectedDay = calendar.Find($"div[value='{DAY}']");

Assert.Equal(expectedDayNumber, selectedDay.TextContent);
}
}

0 comments on commit 970b988

Please sign in to comment.