File tree Expand file tree Collapse file tree 3 files changed +31
-3
lines changed
Examples/JsonApiDotNetCoreExample/Definitions
JsonApiDotNetCore/Hooks/Internal
test/JsonApiDotNetCoreExampleTests/Acceptance/ResourceDefinitions Expand file tree Collapse file tree 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
3232 resourcesByRelationship . GetByRelationship < Person > ( ) . ToList ( ) . ForEach ( kvp => DoesNotTouchLockedPassports ( kvp . Value ) ) ;
3333 }
3434
35+ public override IEnumerable < Passport > OnReturn ( HashSet < Passport > resources , ResourcePipeline pipeline )
36+ {
37+ return resources . Where ( p => ! p . IsLocked ) ;
38+ }
39+
3540 private void DoesNotTouchLockedPassports ( IEnumerable < Passport > resources )
3641 {
3742 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)
125125 return _resourceHookExecutor . OnReturn ( resources , ResourcePipeline . GetRelationship ) . ToArray ( ) ;
126126 }
127127
128- if ( resourceOrResources is IIdentifiable identifiable )
128+ if ( resourceOrResources is IIdentifiable )
129129 {
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 ) ) ;
132132 }
133133
134134 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()
241241 Assert . DoesNotContain ( toBeExcluded , body ) ;
242242 }
243243
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+
244267 [ Fact ]
245268 public async Task Tag_Is_Hidden ( )
246269 {
You can’t perform that action at this time.
0 commit comments