File tree Expand file tree Collapse file tree 2 files changed +42
-3
lines changed
test/OptionalValues.Tests/Json Expand file tree Collapse file tree 2 files changed +42
-3
lines changed Original file line number Diff line number Diff line change
1
+ using System . Text . Json ;
2
+
3
+ using Shouldly ;
4
+
5
+ namespace OptionalValues . Tests . Json ;
6
+
7
+ public class RecordTest
8
+ {
9
+ private static readonly JsonSerializerOptions Options = new JsonSerializerOptions ( )
10
+ . AddOptionalValueSupport ( ) ;
11
+
12
+ private record RecordModel ( OptionalValue < string > Name ) ;
13
+
14
+ [ Fact ]
15
+ public void CanSerializeEmpty ( )
16
+ {
17
+ var model = new RecordModel ( default ) ;
18
+ var result = JsonSerializer . Serialize ( model , Options ) ;
19
+
20
+ Assert . Equal ( "{}" , result ) ;
21
+ }
22
+
23
+ [ Fact ]
24
+ public void CanDeserializeEmpty ( )
25
+ {
26
+ var json = "{}" ;
27
+
28
+ RecordModel ? result = JsonSerializer . Deserialize < RecordModel > ( json , Options ) ;
29
+ Assert . NotNull ( result ) ;
30
+ result . Name . IsSpecified . ShouldBeFalse ( ) ;
31
+ }
32
+ }
Original file line number Diff line number Diff line change @@ -9,7 +9,12 @@ public class RequiredKeywordTest
9
9
private static readonly JsonSerializerOptions Options = new JsonSerializerOptions ( )
10
10
. AddOptionalValueSupport ( ) ;
11
11
12
- public class RequiredKeywordModel
12
+ public class RequiredKeywordClassModel
13
+ {
14
+ public required OptionalValue < string > NotRequired { get ; init ; }
15
+ }
16
+
17
+ public record RequiredKeywordRecordModel
13
18
{
14
19
public required OptionalValue < string > NotRequired { get ; init ; }
15
20
}
@@ -24,10 +29,12 @@ public void ShouldNotMarkOptionalValueAsRequiredEvenWithRequiredKeyword()
24
29
{
25
30
var json = "{}" ;
26
31
27
- RequiredKeywordModel ? requiredKeywordModel = JsonSerializer . Deserialize < RequiredKeywordModel > ( json , Options ) ;
32
+ RequiredKeywordClassModel ? requiredKeywordClassModel = JsonSerializer . Deserialize < RequiredKeywordClassModel > ( json , Options ) ;
33
+ RequiredKeywordRecordModel ? requiredKeywordRecordModel = JsonSerializer . Deserialize < RequiredKeywordRecordModel > ( json , Options ) ;
28
34
Func < ReferenceModel ? > actReference = ( ) => JsonSerializer . Deserialize < ReferenceModel > ( json , Options ) ;
29
35
30
- requiredKeywordModel ! . NotRequired . IsSpecified . ShouldBeFalse ( ) ;
36
+ requiredKeywordClassModel ! . NotRequired . IsSpecified . ShouldBeFalse ( ) ;
37
+ requiredKeywordRecordModel ! . NotRequired . IsSpecified . ShouldBeFalse ( ) ;
31
38
actReference . ShouldThrow < JsonException > ( ) ;
32
39
}
33
40
}
You can’t perform that action at this time.
0 commit comments