Skip to content

Commit a6595a0

Browse files
committed
test: fix test issue when runnner is in GMT timezone
1 parent fa74873 commit a6595a0

1 file changed

Lines changed: 13 additions & 18 deletions

File tree

‎src/NetCoreForce.Client.Tests/TimeZoneInfoMockerTests.cs‎

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,26 @@ public class TimeZoneInfoMockerTests
1717
[MemberData(nameof(TimeZoneIdData))]
1818
public void TestLocalTimeZoneInfoMocker(string timeZoneId)
1919
{
20-
TimeZoneInfo localTimeZoneInfo = TimeZoneInfo.Local;
20+
TimeZoneInfo actualLocalTimeZoneInfo = TimeZoneInfo.Local;
2121
TimeZoneInfo mockTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
2222

23-
TimeSpan mockedUtcOffset;
24-
TimeSpan actualLocalUtcOffset = localTimeZoneInfo.BaseUtcOffset;
25-
26-
if (localTimeZoneInfo.StandardName == mockTimeZoneInfo.StandardName)
27-
{
28-
// same TZ as local machine, pass test
29-
return;
30-
}
31-
23+
// compare against the expected zone rather than asserting it differs from the local zone,
24+
// so the test does not depend on the runner's time zone - e.g. a UTC runner and the London
25+
// sample zone have different names but the same base UTC offset
3226
using (new LocalTimeZoneInfoMocker(mockTimeZoneInfo))
3327
{
34-
TimeZoneInfo currentTimeZoneInfo = TimeZoneInfo.Local;
35-
36-
mockedUtcOffset = currentTimeZoneInfo.BaseUtcOffset;
28+
TimeZoneInfo mockedLocalTimeZoneInfo = TimeZoneInfo.Local;
3729

38-
Assert.Equal(mockTimeZoneInfo.StandardName, currentTimeZoneInfo.StandardName);
39-
Assert.NotEqual(currentTimeZoneInfo.BaseUtcOffset, actualLocalUtcOffset);
30+
Assert.Equal(mockTimeZoneInfo.Id, mockedLocalTimeZoneInfo.Id);
31+
Assert.Equal(mockTimeZoneInfo.StandardName, mockedLocalTimeZoneInfo.StandardName);
32+
Assert.Equal(mockTimeZoneInfo.BaseUtcOffset, mockedLocalTimeZoneInfo.BaseUtcOffset);
4033
}
4134

42-
// back to local machine's TZ
43-
Assert.NotEqual(localTimeZoneInfo.StandardName, mockTimeZoneInfo.StandardName);
44-
Assert.NotEqual(localTimeZoneInfo.BaseUtcOffset, mockedUtcOffset);
35+
// disposing the mocker should restore the local machine's time zone
36+
TimeZoneInfo restoredLocalTimeZoneInfo = TimeZoneInfo.Local;
37+
38+
Assert.Equal(actualLocalTimeZoneInfo.Id, restoredLocalTimeZoneInfo.Id);
39+
Assert.Equal(actualLocalTimeZoneInfo.BaseUtcOffset, restoredLocalTimeZoneInfo.BaseUtcOffset);
4540
}
4641

4742
[Fact]

0 commit comments

Comments
 (0)