File tree 3 files changed +31
-3
lines changed
Examples/JsonApiDotNetCoreExample/Definitions
JsonApiDotNetCore/Hooks/Internal
test/JsonApiDotNetCoreExampleTests/Acceptance/ResourceDefinitions
3 files changed +31
-3
lines changed Original file line number Diff line number Diff line change @@ -32,6 +32,11 @@ public override void BeforeImplicitUpdateRelationship(IRelationshipsDictionary<P
32
32
resourcesByRelationship . GetByRelationship < Person > ( ) . ToList ( ) . ForEach ( kvp => DoesNotTouchLockedPassports ( kvp . Value ) ) ;
33
33
}
34
34
35
+ public override IEnumerable < Passport > OnReturn ( HashSet < Passport > resources , ResourcePipeline pipeline )
36
+ {
37
+ return resources . Where ( p => ! p . IsLocked ) ;
38
+ }
39
+
35
40
private void DoesNotTouchLockedPassports ( IEnumerable < Passport > resources )
36
41
{
37
42
foreach ( var passport in resources ?? Enumerable . Empty < Passport > ( ) )
Original file line number Diff line number Diff line change @@ -125,10 +125,10 @@ public object OnReturnRelationship(object resourceOrResources)
125
125
return _resourceHookExecutor . OnReturn ( resources , ResourcePipeline . GetRelationship ) . ToArray ( ) ;
126
126
}
127
127
128
- if ( resourceOrResources is IIdentifiable identifiable )
128
+ if ( resourceOrResources is IIdentifiable )
129
129
{
130
- var resources = ToList ( identifiable ) ;
131
- return _resourceHookExecutor . OnReturn ( resources , ResourcePipeline . GetRelationship ) . Single ( ) ;
130
+ var resources = ToList ( ( dynamic ) resourceOrResources ) ;
131
+ return Enumerable . SingleOrDefault ( _resourceHookExecutor . OnReturn ( resources , ResourcePipeline . GetRelationship ) ) ;
132
132
}
133
133
134
134
return resourceOrResources ;
Original file line number Diff line number Diff line change @@ -241,6 +241,29 @@ public async Task Article_Through_Secondary_Endpoint_Is_Hidden()
241
241
Assert . DoesNotContain ( toBeExcluded , body ) ;
242
242
}
243
243
244
+ [ Fact ]
245
+ public async Task Passport_Through_Secondary_Endpoint_Is_Hidden ( )
246
+ {
247
+ // Arrange
248
+ var person = _personFaker . Generate ( ) ;
249
+ person . Passport = new Passport ( _dbContext ) { IsLocked = true } ;
250
+
251
+ _dbContext . People . Add ( person ) ;
252
+ await _dbContext . SaveChangesAsync ( ) ;
253
+
254
+ var route = $ "/api/v1/people/{ person . Id } /passport";
255
+
256
+ // Act
257
+ var response = await _client . GetAsync ( route ) ;
258
+
259
+ // Assert
260
+ var body = await response . Content . ReadAsStringAsync ( ) ;
261
+ Assert . True ( HttpStatusCode . OK == response . StatusCode , $ "{ route } returned { response . StatusCode } status code with body: { body } ") ;
262
+ var document = JsonConvert . DeserializeObject < Document > ( body ) ;
263
+ Assert . Null ( document . Data ) ;
264
+
265
+ }
266
+
244
267
[ Fact ]
245
268
public async Task Tag_Is_Hidden ( )
246
269
{
You can’t perform that action at this time.
0 commit comments