Skip to content

Commit 59a5d20

Browse files
committed
Add unit tests for RssDate and TTL validators
1 parent 38da804 commit 59a5d20

File tree

6 files changed

+192
-33
lines changed

6 files changed

+192
-33
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System;
2+
using X.Web.RSS.Structure;
3+
using Xunit;
4+
5+
namespace X.Web.RSS.Tests.Validators;
6+
7+
public class RssDateIsoTests
8+
{
9+
[Fact]
10+
public void DateStringISO8601_WhenDateIsNull_ReturnsEmptyString()
11+
{
12+
var rssDate = new RssDate();
13+
Assert.True(string.IsNullOrEmpty(rssDate.DateStringISO8601));
14+
}
15+
16+
[Fact]
17+
public void DateStringISO8601_FormatIncludesDate_WhenDateSet()
18+
{
19+
var date = new DateTime(2021, 12, 31, 23, 59, 59);
20+
var rssDate = new RssDate(date);
21+
22+
var iso = rssDate.DateStringISO8601;
23+
24+
Assert.Contains("2021-12-31T23:59:59", iso);
25+
// implementation uses a dot before 'Z' in format string, assert presence of dot
26+
Assert.Contains(".", iso);
27+
}
28+
}

tests/X.Web.RSS.Tests/Validators/RssDateTest.cs

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace X.Web.RSS.Tests.Validators;
88
public class RssDateTest
99
{
1010
[Fact]
11-
public void Ctor_ValidDateParameter_Ok()
11+
public void Constructor_WithDate_SetsDate()
1212
{
1313
// Arrange
1414
DateTime date = DateTime.Now.Date;
@@ -21,7 +21,7 @@ public void Ctor_ValidDateParameter_Ok()
2121
}
2222

2323
[Fact]
24-
public void Ctor_DateInFuture_Error()
24+
public void Constructor_WithFutureDate_ThrowsArgumentException()
2525
{
2626
// Arrange
2727
DateTime date = DateTime.Now.AddDays(1);
@@ -43,7 +43,7 @@ public void Ctor_DateInFuture_Error()
4343
}
4444

4545
[Fact]
46-
public void SetDate_ValidDateParameter_Ok()
46+
public void Setter_WithDate_SetsDate()
4747
{
4848
// Arrange
4949
RssDate rssDate = new RssDate();
@@ -57,7 +57,7 @@ public void SetDate_ValidDateParameter_Ok()
5757
}
5858

5959
[Fact]
60-
public void SetDate_DateInFuture_Error()
60+
public void Setter_WithFutureDate_ThrowsArgumentException()
6161
{
6262
// Arrange
6363
RssDate rssDate = new RssDate();
@@ -79,7 +79,7 @@ public void SetDate_DateInFuture_Error()
7979
}
8080

8181
[Fact]
82-
public void Ctor_ValidStringParameter_Ok()
82+
public void Constructor_WithDateString_SetsDateString()
8383
{
8484
// Arrange
8585
String date = DateTime.Now.Date.ToString();
@@ -92,7 +92,7 @@ public void Ctor_ValidStringParameter_Ok()
9292
}
9393

9494
[Fact]
95-
public void Ctor_StringInFuture_Error()
95+
public void Constructor_WithFutureDateString_ThrowsArgumentException()
9696
{
9797
// Arrange
9898
String date = DateTime.Now.AddDays(1).ToString("R");
@@ -113,7 +113,7 @@ public void Ctor_StringInFuture_Error()
113113
}
114114

115115
[Fact]
116-
public void SetString_ValidStringParameter_Ok()
116+
public void Setter_WithDateString_SetsDateString()
117117
{
118118
// Arrange
119119
RssDate rssDate = new RssDate();
@@ -127,7 +127,7 @@ public void SetString_ValidStringParameter_Ok()
127127
}
128128

129129
[Fact]
130-
public void SetString_StringInFuture_Error()
130+
public void Setter_WithFutureDateString_ThrowsArgumentException()
131131
{
132132
// Arrange
133133
RssDate rssDate = new RssDate();
@@ -149,7 +149,7 @@ public void SetString_StringInFuture_Error()
149149
}
150150

151151
[Fact]
152-
public void SetDate_ConvertToString_String()
152+
public void SettingDateString_ParsesToDate()
153153
{
154154
DateTime date = DateTime.Now.Date;
155155

@@ -161,7 +161,7 @@ public void SetDate_ConvertToString_String()
161161
}
162162

163163
[Fact]
164-
public void SetString_ConvertToDate_Date()
164+
public void SettingDate_FormatsToString()
165165
{
166166
// Arrange
167167
RssDate rssDate = new RssDate();
@@ -175,7 +175,7 @@ public void SetString_ConvertToDate_Date()
175175
}
176176

177177
[Fact]
178-
public void SetString_Null_DateNull()
178+
public void SettingNullDateString_ClearsDate()
179179
{
180180
// Arrange
181181
RssDate rssDate = new RssDate();
@@ -188,7 +188,7 @@ public void SetString_Null_DateNull()
188188
}
189189

190190
[Fact]
191-
public void SetDate_Null_StringNull()
191+
public void SettingNullDate_ClearsDateString()
192192
{
193193
// Arrange
194194
RssDate rssDate = new RssDate();
@@ -201,7 +201,7 @@ public void SetDate_Null_StringNull()
201201
}
202202

203203
[Fact]
204-
public void SetString_InvalidDateFormat_Error()
204+
public void SettingInvalidDateString_ThrowsArgumentException()
205205
{
206206
// Arrange
207207
RssDate rssDate = new RssDate();
@@ -223,7 +223,7 @@ public void SetString_InvalidDateFormat_Error()
223223
}
224224

225225
[Fact]
226-
public void Ctor_InvalidDateFormat_Error()
226+
public void Constructor_WithInvalidDateString_ThrowsArgumentException()
227227
{
228228
// Arrange
229229
const string InvalidDate = "adsfsadf";
@@ -244,7 +244,7 @@ public void Ctor_InvalidDateFormat_Error()
244244
}
245245

246246
[Fact]
247-
public void DateExtensionTest()
247+
public void DateExtension_ToAndFromRFC822_PreservesDate()
248248
{
249249
var date = DateTime.Now;
250250

@@ -254,4 +254,15 @@ public void DateExtensionTest()
254254
Assert.Equal(date.ToLongDateString(), parsedDate.ToLongDateString());
255255
Assert.Equal(date.ToLongTimeString(), parsedDate.ToLongTimeString());
256256
}
257+
258+
[Fact]
259+
public void DateStringISO8601_ReturnsIso8601WhenDateSet()
260+
{
261+
var date = new DateTime(2020, 1, 2, 3, 4, 5);
262+
var rssDate = new RssDate(date);
263+
264+
var iso = rssDate.DateStringISO8601;
265+
266+
Assert.Contains("2020-01-02T03:04:05", iso);
267+
}
257268
}

tests/X.Web.RSS.Tests/Validators/RssTtlTest.cs

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace X.Web.RSS.Tests.Validators;
77
public class RssTtlTest
88
{
99
[Fact]
10-
public void Ctor_ValidTtlParameter_Ok()
10+
public void Constructor_WithValidTtl_SetsValue()
1111
{
1212
// Arrange
1313
const int TTL = 10;
@@ -20,7 +20,7 @@ public void Ctor_ValidTtlParameter_Ok()
2020
}
2121

2222
[Fact]
23-
public void Ctor_TtlLessZero_Error()
23+
public void Constructor_WithNegativeTtl_ThrowsArgumentException()
2424
{
2525
// Arrange
2626
const int TTL = -1;
@@ -41,7 +41,7 @@ public void Ctor_TtlLessZero_Error()
4141
}
4242

4343
[Fact]
44-
public void SetTtl_ValidTtlParameter_Ok()
44+
public void Setter_WithValidTtl_SetsValue()
4545
{
4646
// Arrange
4747
RssTtl rssTtl = new RssTtl();
@@ -55,7 +55,7 @@ public void SetTtl_ValidTtlParameter_Ok()
5555
}
5656

5757
[Fact]
58-
public void SetTtl_TtlLessZero_Error()
58+
public void Setter_WithNegativeTtl_ThrowsArgumentException()
5959
{
6060
// Arrange
6161
RssTtl rssTtl = new RssTtl();
@@ -78,7 +78,7 @@ public void SetTtl_TtlLessZero_Error()
7878

7979

8080
[Fact]
81-
public void SetString_StringLessZero_Error()
81+
public void Setter_InvalidNegative_ThrowsArgumentException()
8282
{
8383
// Arrange
8484
RssTtl rssTtl = new RssTtl();
@@ -99,7 +99,7 @@ public void SetString_StringLessZero_Error()
9999
}
100100

101101
[Fact]
102-
public void SetTtl_ConvertToString_String()
102+
public void Setter_WithValidTtl_PreservesValue()
103103
{
104104
// Arrange
105105
RssTtl rssTtl = new RssTtl();
@@ -113,7 +113,7 @@ public void SetTtl_ConvertToString_String()
113113
}
114114

115115
[Fact]
116-
public void SetString_ConvertToTtl_Ttl()
116+
public void Setter_WithValidTtl_AsStringMatches()
117117
{
118118
// Arrange
119119
RssTtl rssTtl = new RssTtl();
@@ -127,7 +127,7 @@ public void SetString_ConvertToTtl_Ttl()
127127
}
128128

129129
[Fact]
130-
public void SetTtl_Zero_StringNull()
130+
public void SettingZero_TtlBecomesNull()
131131
{
132132
// Arrange
133133
RssTtl rssTtl = new RssTtl();
@@ -138,4 +138,25 @@ public void SetTtl_Zero_StringNull()
138138
// Assert
139139
Assert.Null(rssTtl.TTL);
140140
}
141+
142+
[Fact]
143+
public void SettingTooLarge_TtlThrowsArgumentException()
144+
{
145+
// Arrange
146+
RssTtl rssTtl = new RssTtl();
147+
148+
// Action
149+
ArgumentException e = null;
150+
try
151+
{
152+
rssTtl.TTL = 1000000; // greater than allowed 999999
153+
}
154+
catch (ArgumentException ex)
155+
{
156+
e = ex;
157+
}
158+
159+
// Assert
160+
Assert.NotNull(e);
161+
}
141162
}

tests/X.Web.RSS.Tests/Validators/RssUrlTest.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace X.Web.RSS.Tests.Validators;
77
public class RssUrlTest
88
{
99
[Fact]
10-
public void Ctor_ValidUriParameter_Ok()
10+
public void Constructor_WithUri_SetsUrlString()
1111
{
1212
// Arrange
1313
var uri = new Uri("http://test.url.com");
@@ -20,7 +20,7 @@ public void Ctor_ValidUriParameter_Ok()
2020
}
2121

2222
[Fact]
23-
public void SetUri_ValidUriParameter_Ok()
23+
public void Setter_WithString_SetsUrlString()
2424
{
2525
// Arrange
2626
RssUrl rssUrl = new RssUrl();
@@ -34,7 +34,7 @@ public void SetUri_ValidUriParameter_Ok()
3434
}
3535

3636
[Fact]
37-
public void Ctor_ValidStringParameter_Ok()
37+
public void Constructor_WithString_SetsUrl()
3838
{
3939
// Arrange
4040
String uri = new Uri("http://test.url.com").ToString();
@@ -47,7 +47,7 @@ public void Ctor_ValidStringParameter_Ok()
4747
}
4848

4949
[Fact]
50-
public void SetString_ValidStringParameter_Ok()
50+
public void Setter_WithStringProperty_SetsUrl()
5151
{
5252
// Arrange
5353
var rssUrl = new RssUrl();
@@ -61,7 +61,7 @@ public void SetString_ValidStringParameter_Ok()
6161
}
6262

6363
[Fact]
64-
public void SetUri_ConvertToString_String()
64+
public void SettingWithAbsoluteUriString_PreservesNormalizedString()
6565
{
6666
// Arrange
6767
RssUrl rssUrl = new RssUrl();
@@ -75,7 +75,7 @@ public void SetUri_ConvertToString_String()
7575
}
7676

7777
[Fact]
78-
public void SetString_ConvertToUri_Uri()
78+
public void SettingWithToStringUriString_PreservesAbsoluteUri()
7979
{
8080
// Arrange
8181
RssUrl rssUrl = new RssUrl();
@@ -89,7 +89,7 @@ public void SetString_ConvertToUri_Uri()
8989
}
9090

9191
[Fact]
92-
public void SetString_Null_UriNull()
92+
public void SettingNullUrl_AllowsNull()
9393
{
9494
// Arrange
9595
RssUrl rssUrl = new RssUrl();
@@ -102,7 +102,7 @@ public void SetString_Null_UriNull()
102102
}
103103

104104
[Fact]
105-
public void SetUri_Null_StringNull()
105+
public void SettingNullUrl_OnNewRssUrl_AllowsNull()
106106
{
107107
// Arrange
108108
RssUrl rssUrl = new RssUrl();
@@ -115,7 +115,7 @@ public void SetUri_Null_StringNull()
115115
}
116116

117117
[Fact]
118-
public void SetString_InvalidUriFormat_Error()
118+
public void SettingInvalidString_ThrowsUriFormatException()
119119
{
120120
// Arrange
121121
RssUrl rssUrl = new RssUrl();
@@ -137,7 +137,7 @@ public void SetString_InvalidUriFormat_Error()
137137
}
138138

139139
[Fact]
140-
public void Ctor_InvalidUriFormat_Error()
140+
public void Constructor_WithInvalidString_ThrowsUriFormatException()
141141
{
142142
// Arrange
143143
const string InvalidUri = "adsfsadf";

0 commit comments

Comments
 (0)