|
| 1 | +using System.Globalization; |
1 | 2 | using System.Net;
|
2 | 3 | using System.Reflection;
|
3 | 4 | using System.Web;
|
@@ -49,7 +50,9 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
|
49 | 50 | });
|
50 | 51 |
|
51 | 52 | string attributeName = propertyName.Camelize();
|
52 |
| - string route = $"/filterableResources?filter=equals({attributeName},'{propertyValue}')"; |
| 53 | + string? attributeValue = Convert.ToString(propertyValue, CultureInfo.InvariantCulture); |
| 54 | + |
| 55 | + string route = $"/filterableResources?filter=equals({attributeName},'{attributeValue}')"; |
53 | 56 |
|
54 | 57 | // Act
|
55 | 58 | (HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecuteGetAsync<Document>(route);
|
@@ -77,7 +80,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
|
77 | 80 | await dbContext.SaveChangesAsync();
|
78 | 81 | });
|
79 | 82 |
|
80 |
| - string route = $"/filterableResources?filter=equals(someDecimal,'{resource.SomeDecimal}')"; |
| 83 | + string route = $"/filterableResources?filter=equals(someDecimal,'{resource.SomeDecimal.ToString(CultureInfo.InvariantCulture)}')"; |
81 | 84 |
|
82 | 85 | // Act
|
83 | 86 | (HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecuteGetAsync<Document>(route);
|
@@ -117,6 +120,36 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
|
117 | 120 | responseDocument.Data.ManyValue[0].Attributes.ShouldContainKey("someGuid").With(value => value.Should().Be(resource.SomeGuid));
|
118 | 121 | }
|
119 | 122 |
|
| 123 | + [Fact] |
| 124 | + public async Task Can_filter_equality_on_type_DateTime_in_local_time_zone() |
| 125 | + { |
| 126 | + // Arrange |
| 127 | + var resource = new FilterableResource |
| 128 | + { |
| 129 | + SomeDateTimeInLocalZone = 27.January(2003).At(11, 22, 33, 44) |
| 130 | + }; |
| 131 | + |
| 132 | + await _testContext.RunOnDatabaseAsync(async dbContext => |
| 133 | + { |
| 134 | + await dbContext.ClearTableAsync<FilterableResource>(); |
| 135 | + dbContext.FilterableResources.AddRange(resource, new FilterableResource()); |
| 136 | + await dbContext.SaveChangesAsync(); |
| 137 | + }); |
| 138 | + |
| 139 | + string route = $"/filterableResources?filter=equals(someDateTimeInLocalZone,'{resource.SomeDateTimeInLocalZone:O}')"; |
| 140 | + |
| 141 | + // Act |
| 142 | + (HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecuteGetAsync<Document>(route); |
| 143 | + |
| 144 | + // Assert |
| 145 | + httpResponse.ShouldHaveStatusCode(HttpStatusCode.OK); |
| 146 | + |
| 147 | + responseDocument.Data.ManyValue.ShouldHaveCount(1); |
| 148 | + |
| 149 | + responseDocument.Data.ManyValue[0].Attributes.ShouldContainKey("someDateTimeInLocalZone") |
| 150 | + .With(value => value.Should().Be(resource.SomeDateTimeInLocalZone)); |
| 151 | + } |
| 152 | + |
120 | 153 | [Fact]
|
121 | 154 | public async Task Can_filter_equality_on_type_DateTime_in_UTC_time_zone()
|
122 | 155 | {
|
@@ -191,7 +224,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
|
191 | 224 | await dbContext.SaveChangesAsync();
|
192 | 225 | });
|
193 | 226 |
|
194 |
| - string route = $"/filterableResources?filter=equals(someTimeSpan,'{resource.SomeTimeSpan}')"; |
| 227 | + string route = $"/filterableResources?filter=equals(someTimeSpan,'{resource.SomeTimeSpan:c}')"; |
195 | 228 |
|
196 | 229 | // Act
|
197 | 230 | (HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecuteGetAsync<Document>(route);
|
|
0 commit comments