1
1
using System ;
2
2
using System . Collections . Generic ;
3
+ using JsonApiDotNetCore . Internal ;
3
4
using JsonApiDotNetCore . Internal . Query ;
4
5
using JsonApiDotNetCore . Services ;
5
6
using Microsoft . AspNetCore . Http ;
@@ -13,13 +14,13 @@ namespace UnitTests.Services
13
14
public class QueryAccessorTests
14
15
{
15
16
private readonly Mock < IJsonApiContext > _contextMock ;
16
- private readonly Mock < ILoggerFactory > _loggerMock ;
17
+ private readonly Mock < ILogger < QueryAccessor > > _loggerMock ;
17
18
private readonly Mock < IQueryCollection > _queryMock ;
18
19
19
20
public QueryAccessorTests ( )
20
21
{
21
22
_contextMock = new Mock < IJsonApiContext > ( ) ;
22
- _loggerMock = new Mock < ILoggerFactory > ( ) ;
23
+ _loggerMock = new Mock < ILogger < QueryAccessor > > ( ) ;
23
24
_queryMock = new Mock < IQueryCollection > ( ) ;
24
25
}
25
26
@@ -34,7 +35,7 @@ public void Can_Get_Guid_QueryValue()
34
35
var query = new Dictionary < string , StringValues > {
35
36
{ filterQuery , value . ToString ( ) }
36
37
} ;
37
-
38
+
38
39
_queryMock . Setup ( q => q . GetEnumerator ( ) ) . Returns ( query . GetEnumerator ( ) ) ;
39
40
40
41
var querySet = new QuerySet ( _contextMock . Object , _queryMock . Object ) ;
@@ -50,5 +51,59 @@ public void Can_Get_Guid_QueryValue()
50
51
Assert . True ( success ) ;
51
52
Assert . Equal ( value , result ) ;
52
53
}
54
+
55
+ [ Fact ]
56
+ public void GetRequired_Throws_If_Not_Present ( )
57
+ {
58
+ // arrange
59
+ const string key = "some-id" ;
60
+ var filterQuery = $ "filter[{ key } ]";
61
+ var value = Guid . NewGuid ( ) ;
62
+
63
+ var query = new Dictionary < string , StringValues > {
64
+ { filterQuery , value . ToString ( ) }
65
+ } ;
66
+
67
+ _queryMock . Setup ( q => q . GetEnumerator ( ) ) . Returns ( query . GetEnumerator ( ) ) ;
68
+
69
+ var querySet = new QuerySet ( _contextMock . Object , _queryMock . Object ) ;
70
+ _contextMock . Setup ( c => c . QuerySet )
71
+ . Returns ( querySet ) ;
72
+
73
+ var service = new QueryAccessor ( _contextMock . Object , _loggerMock . Object ) ;
74
+
75
+ // act
76
+ var exception = Assert . Throws < JsonApiException > ( ( ) => service . GetRequired < Guid > ( "Invalid" ) ) ;
77
+
78
+ // assert
79
+ Assert . Equal ( 422 , exception . GetStatusCode ( ) ) ;
80
+ }
81
+
82
+ [ Fact ]
83
+ public void GetRequired_Does_Not_Throw_If_Present ( )
84
+ {
85
+ // arrange
86
+ const string key = "some-id" ;
87
+ var filterQuery = $ "filter[{ key } ]";
88
+ var value = Guid . NewGuid ( ) ;
89
+
90
+ var query = new Dictionary < string , StringValues > {
91
+ { filterQuery , value . ToString ( ) }
92
+ } ;
93
+
94
+ _queryMock . Setup ( q => q . GetEnumerator ( ) ) . Returns ( query . GetEnumerator ( ) ) ;
95
+
96
+ var querySet = new QuerySet ( _contextMock . Object , _queryMock . Object ) ;
97
+ _contextMock . Setup ( c => c . QuerySet )
98
+ . Returns ( querySet ) ;
99
+
100
+ var service = new QueryAccessor ( _contextMock . Object , _loggerMock . Object ) ;
101
+
102
+ // act
103
+ var result = service . GetRequired < Guid > ( "SomeId" ) ;
104
+
105
+ // assert
106
+ Assert . Equal ( value , result ) ;
107
+ }
53
108
}
54
109
}
0 commit comments