Skip to content

Commit 0f31cf8

Browse files
Refactoring DateTime "Add" Helpers and unit tests (#118)
* Refactoring Datetime Add Helpers and unit tests * PR Suggestions --------- Co-authored-by: Fabiano Suet da Silva <Fabiano.Suet@match.com>
1 parent ae4c973 commit 0f31cf8

3 files changed

Lines changed: 328 additions & 219 deletions

File tree

src/Handlebars.Net.Helpers/Helpers/DateTimeHelpers.cs

Lines changed: 62 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,24 +47,69 @@ public DateTime ParseExact(string value, string format)
4747
return DateTime.ParseExact(value, format, Context.Configuration.FormatProvider);
4848
}
4949

50+
[HandlebarsWriter(WriterType.Value, Name = "DateTime.AddYears")]
51+
public DateTime AddYears(object value, int increment, string? format = null)
52+
{
53+
return GetDateTimeNonNullabe(value, format).AddYears(increment);
54+
}
55+
56+
[HandlebarsWriter(WriterType.Value, Name = "DateTime.AddMonths")]
57+
public DateTime AddMonths(object value, int increment, string? format = null)
58+
{
59+
return GetDateTimeNonNullabe(value, format).AddMonths(increment);
60+
}
61+
62+
[HandlebarsWriter(WriterType.Value, Name = "DateTime.AddDays")]
63+
public DateTime AddDays(object value, int increment, string? format = null)
64+
{
65+
return GetDateTimeNonNullabe(value, format).AddDays(increment);
66+
}
67+
68+
[HandlebarsWriter(WriterType.Value, Name = "DateTime.AddHours")]
69+
public DateTime AddHours(object value, int increment, string? format = null)
70+
{
71+
return GetDateTimeNonNullabe(value, format).AddHours(increment);
72+
}
73+
74+
[HandlebarsWriter(WriterType.Value, Name = "DateTime.AddMinutes")]
75+
public DateTime AddMinutes(object value, int increment, string? format = null)
76+
{
77+
return GetDateTimeNonNullabe(value, format).AddMinutes(increment);
78+
}
79+
80+
[HandlebarsWriter(WriterType.Value, Name = "DateTime.AddSeconds")]
81+
public DateTime AddSeconds(object value, int increment, string? format = null)
82+
{
83+
return GetDateTimeNonNullabe(value, format).AddSeconds(increment);
84+
}
85+
86+
[HandlebarsWriter(WriterType.Value, Name = "DateTime.AddMilliseconds")]
87+
public DateTime AddMilliseconds(object value, int increment, string? format = null)
88+
{
89+
return GetDateTimeNonNullabe(value, format).AddMilliseconds(increment);
90+
}
91+
92+
[HandlebarsWriter(WriterType.Value, Name = "DateTime.AddTicks")]
93+
public DateTime AddTicks(object value, int increment, string? format = null)
94+
{
95+
return GetDateTimeNonNullabe(value, format).AddTicks(increment);
96+
}
97+
5098
[HandlebarsWriter(WriterType.Value, Name = "DateTime.Add")]
5199
public DateTime Add(object value, int increment, string datePart, string? format = null)
52100
{
53-
Guard.NotNull(value);
54-
Guard.NotNullOrEmpty(datePart);
55-
56-
var dateTime = Guard.NotNull(GetDatetime(value, format))!;
101+
var dateTime = GetDateTimeNonNullabe(value, format)!;
57102

58103
return datePart switch
59104
{
60-
"years" => dateTime.Value.AddYears(increment),
61-
"months" => dateTime.Value.AddMonths(increment),
62-
"days" => dateTime.Value.AddDays(increment),
63-
"hours" => dateTime.Value.AddHours(increment),
64-
"minutes" => dateTime.Value.AddMinutes(increment),
65-
"seconds" => dateTime.Value.AddSeconds(increment),
66-
"milliseconds" => dateTime.Value.AddMilliseconds(increment),
67-
"ticks" => dateTime.Value.AddTicks(increment),
105+
"years" => dateTime.AddYears(increment),
106+
"months" => dateTime.AddMonths(increment),
107+
"days" => dateTime.AddDays(increment),
108+
"hours" => dateTime.AddHours(increment),
109+
"minutes" => dateTime.AddMinutes(increment),
110+
"seconds" => dateTime.AddSeconds(increment),
111+
"milliseconds" => dateTime.AddMilliseconds(increment),
112+
"ticks" => dateTime.AddTicks(increment),
68113
_ => throw new ArgumentException("Invalid date part. It must be one of: [years, months, days, hours, minutes, seconds, milliseconds or ticks].")
69114
};
70115
}
@@ -80,5 +125,10 @@ public DateTime Add(object value, int increment, string datePart, string? format
80125
};
81126
}
82127

128+
private DateTime GetDateTimeNonNullabe(object value, string? format)
129+
{
130+
return Guard.NotNull(GetDatetime(Guard.NotNull(value), format)).GetValueOrDefault();
131+
}
132+
83133
public override Category Category => Category.DateTime;
84134
}

0 commit comments

Comments
 (0)