Skip to content

Commit aab2fad

Browse files
author
Bart Koelman
committed
Updated existing IResourceDefinition tests to capture all relevant callbacks
1 parent 8e1d991 commit aab2fad

36 files changed

+643
-348
lines changed

test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastDefinition.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public TelevisionBroadcastDefinition(IResourceGraph resourceGraph, TelevisionDbC
5252
}
5353
}
5454

55-
return base.OnApplyFilter(existingFilter);
55+
return existingFilter;
5656
}
5757

5858
private bool IsReturningCollectionOfTelevisionBroadcasts()
@@ -119,7 +119,7 @@ public override Task OnPrepareWriteAsync(TelevisionBroadcast broadcast, WriteOpe
119119
_storedArchivedAt = broadcast.ArchivedAt;
120120
}
121121

122-
return base.OnPrepareWriteAsync(broadcast, writeOperation, cancellationToken);
122+
return Task.CompletedTask;
123123
}
124124

125125
public override async Task OnWritingAsync(TelevisionBroadcast broadcast, WriteOperationKind writeOperation, CancellationToken cancellationToken)

test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Creating/AtomicCreateResourceWithClientGeneratedIdTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public AtomicCreateResourceWithClientGeneratedIdTests(IntegrationTestContext<Tes
2929
testContext.ConfigureServicesAfterStartup(services =>
3030
{
3131
services.AddResourceDefinition<ImplicitlyChangingTextLanguageDefinition>();
32+
33+
services.AddSingleton<ResourceDefinitionHitCounter>();
3234
});
3335

3436
var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService<IJsonApiOptions>();

test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/ImplicitlyChangingTextLanguageDefinition.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using JetBrains.Annotations;
55
using JsonApiDotNetCore.Configuration;
66
using JsonApiDotNetCore.Middleware;
7-
using JsonApiDotNetCore.Resources;
87
using Microsoft.EntityFrameworkCore;
98

109
namespace JsonApiDotNetCoreTests.IntegrationTests.AtomicOperations
@@ -13,20 +12,22 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.AtomicOperations
1312
/// Used to simulate side effects that occur in the database while saving, typically caused by database triggers.
1413
/// </summary>
1514
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
16-
public class ImplicitlyChangingTextLanguageDefinition : JsonApiResourceDefinition<TextLanguage, Guid>
15+
public class ImplicitlyChangingTextLanguageDefinition : HitCountingResourceDefinition<TextLanguage, Guid>
1716
{
1817
internal const string Suffix = " (changed)";
1918

2019
private readonly OperationsDbContext _dbContext;
2120

22-
public ImplicitlyChangingTextLanguageDefinition(IResourceGraph resourceGraph, OperationsDbContext dbContext)
23-
: base(resourceGraph)
21+
public ImplicitlyChangingTextLanguageDefinition(IResourceGraph resourceGraph, ResourceDefinitionHitCounter hitCounter, OperationsDbContext dbContext)
22+
: base(resourceGraph, hitCounter)
2423
{
2524
_dbContext = dbContext;
2625
}
2726

2827
public override async Task OnWriteSucceededAsync(TextLanguage resource, WriteOperationKind writeOperation, CancellationToken cancellationToken)
2928
{
29+
await base.OnWriteSucceededAsync(resource, writeOperation, cancellationToken);
30+
3031
if (writeOperation is not WriteOperationKind.DeleteResource)
3132
{
3233
string statement = $"Update \"TextLanguages\" SET \"IsoCode\" = '{resource.IsoCode}{Suffix}' WHERE \"Id\" = '{resource.StringId}'";

test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Meta/AtomicResourceMetaTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ public async Task Returns_resource_meta_in_create_resource_with_side_effects()
111111

112112
hitCounter.HitExtensibilityPoints.Should().BeEquivalentTo(new[]
113113
{
114-
(typeof(MusicTrack), ResourceDefinitionHitCounter.ExtensibilityPoint.GetMeta),
115-
(typeof(MusicTrack), ResourceDefinitionHitCounter.ExtensibilityPoint.GetMeta)
114+
(typeof(MusicTrack), ResourceDefinitionExtensibilityPoint.GetMeta),
115+
(typeof(MusicTrack), ResourceDefinitionExtensibilityPoint.GetMeta)
116116
}, options => options.WithStrictOrdering());
117117
}
118118

@@ -172,7 +172,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
172172

173173
hitCounter.HitExtensibilityPoints.Should().BeEquivalentTo(new[]
174174
{
175-
(typeof(TextLanguage), ResourceDefinitionHitCounter.ExtensibilityPoint.GetMeta)
175+
(typeof(TextLanguage), ResourceDefinitionExtensibilityPoint.GetMeta)
176176
}, options => options.WithStrictOrdering());
177177
}
178178
}

test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Meta/AtomicResponseMetaTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public AtomicResponseMetaTests(IntegrationTestContext<TestableStartup<Operations
2828
{
2929
services.AddResourceDefinition<ImplicitlyChangingTextLanguageDefinition>();
3030

31+
services.AddSingleton<ResourceDefinitionHitCounter>();
3132
services.AddSingleton<IResponseMeta, AtomicResponseMeta>();
3233
});
3334
}

test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Meta/MusicTrackMetaDefinition.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,22 @@
22
using System.Collections.Generic;
33
using JetBrains.Annotations;
44
using JsonApiDotNetCore.Configuration;
5-
using JsonApiDotNetCore.Resources;
65

76
namespace JsonApiDotNetCoreTests.IntegrationTests.AtomicOperations.Meta
87
{
98
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
10-
public sealed class MusicTrackMetaDefinition : JsonApiResourceDefinition<MusicTrack, Guid>
9+
public sealed class MusicTrackMetaDefinition : HitCountingResourceDefinition<MusicTrack, Guid>
1110
{
12-
private readonly ResourceDefinitionHitCounter _hitCounter;
11+
protected override ResourceDefinitionExtensibilityPoint ExtensibilityPointsToTrack => ResourceDefinitionExtensibilityPoint.GetMeta;
1312

1413
public MusicTrackMetaDefinition(IResourceGraph resourceGraph, ResourceDefinitionHitCounter hitCounter)
15-
: base(resourceGraph)
14+
: base(resourceGraph, hitCounter)
1615
{
17-
_hitCounter = hitCounter;
1816
}
1917

2018
public override IDictionary<string, object?> GetMeta(MusicTrack resource)
2119
{
22-
_hitCounter.TrackInvocation<MusicTrack>(ResourceDefinitionHitCounter.ExtensibilityPoint.GetMeta);
20+
base.GetMeta(resource);
2321

2422
return new Dictionary<string, object?>
2523
{

test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Meta/TextLanguageMetaDefinition.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,16 @@ public sealed class TextLanguageMetaDefinition : ImplicitlyChangingTextLanguageD
99
{
1010
internal const string NoticeText = "See https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for ISO 639-1 language codes.";
1111

12-
private readonly ResourceDefinitionHitCounter _hitCounter;
12+
protected override ResourceDefinitionExtensibilityPoint ExtensibilityPointsToTrack => ResourceDefinitionExtensibilityPoint.GetMeta;
1313

14-
public TextLanguageMetaDefinition(IResourceGraph resourceGraph, OperationsDbContext dbContext, ResourceDefinitionHitCounter hitCounter)
15-
: base(resourceGraph, dbContext)
14+
public TextLanguageMetaDefinition(IResourceGraph resourceGraph, ResourceDefinitionHitCounter hitCounter, OperationsDbContext dbContext)
15+
: base(resourceGraph, hitCounter, dbContext)
1616
{
17-
_hitCounter = hitCounter;
1817
}
1918

2019
public override IDictionary<string, object?> GetMeta(TextLanguage resource)
2120
{
22-
_hitCounter.TrackInvocation<TextLanguage>(ResourceDefinitionHitCounter.ExtensibilityPoint.GetMeta);
21+
base.GetMeta(resource);
2322

2423
return new Dictionary<string, object?>
2524
{

test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Mixed/AtomicSerializationTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public AtomicSerializationTests(IntegrationTestContext<TestableStartup<Operation
2727
testContext.ConfigureServicesAfterStartup(services =>
2828
{
2929
services.AddResourceDefinition<ImplicitlyChangingTextLanguageDefinition>();
30+
31+
services.AddSingleton<ResourceDefinitionHitCounter>();
3032
});
3133

3234
var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService<IJsonApiOptions>();

test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/ResourceDefinitions/Serialization/AtomicSerializationResourceDefinitionTests.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,10 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
123123

124124
hitCounter.HitExtensibilityPoints.Should().BeEquivalentTo(new[]
125125
{
126-
(typeof(RecordCompany), ResourceDefinitionHitCounter.ExtensibilityPoint.OnDeserialize),
127-
(typeof(RecordCompany), ResourceDefinitionHitCounter.ExtensibilityPoint.OnDeserialize),
128-
(typeof(RecordCompany), ResourceDefinitionHitCounter.ExtensibilityPoint.OnSerialize),
129-
(typeof(RecordCompany), ResourceDefinitionHitCounter.ExtensibilityPoint.OnSerialize)
126+
(typeof(RecordCompany), ResourceDefinitionExtensibilityPoint.OnDeserialize),
127+
(typeof(RecordCompany), ResourceDefinitionExtensibilityPoint.OnDeserialize),
128+
(typeof(RecordCompany), ResourceDefinitionExtensibilityPoint.OnSerialize),
129+
(typeof(RecordCompany), ResourceDefinitionExtensibilityPoint.OnSerialize)
130130
}, options => options.WithStrictOrdering());
131131
}
132132

@@ -275,10 +275,10 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
275275

276276
hitCounter.HitExtensibilityPoints.Should().BeEquivalentTo(new[]
277277
{
278-
(typeof(RecordCompany), ResourceDefinitionHitCounter.ExtensibilityPoint.OnDeserialize),
279-
(typeof(RecordCompany), ResourceDefinitionHitCounter.ExtensibilityPoint.OnDeserialize),
280-
(typeof(RecordCompany), ResourceDefinitionHitCounter.ExtensibilityPoint.OnSerialize),
281-
(typeof(RecordCompany), ResourceDefinitionHitCounter.ExtensibilityPoint.OnSerialize)
278+
(typeof(RecordCompany), ResourceDefinitionExtensibilityPoint.OnDeserialize),
279+
(typeof(RecordCompany), ResourceDefinitionExtensibilityPoint.OnDeserialize),
280+
(typeof(RecordCompany), ResourceDefinitionExtensibilityPoint.OnSerialize),
281+
(typeof(RecordCompany), ResourceDefinitionExtensibilityPoint.OnSerialize)
282282
}, options => options.WithStrictOrdering());
283283
}
284284

test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/ResourceDefinitions/Serialization/RecordCompanyDefinition.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
using JetBrains.Annotations;
22
using JsonApiDotNetCore.Configuration;
3-
using JsonApiDotNetCore.Resources;
43

54
namespace JsonApiDotNetCoreTests.IntegrationTests.AtomicOperations.ResourceDefinitions.Serialization
65
{
76
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
8-
public sealed class RecordCompanyDefinition : JsonApiResourceDefinition<RecordCompany, short>
7+
public sealed class RecordCompanyDefinition : HitCountingResourceDefinition<RecordCompany, short>
98
{
10-
private readonly ResourceDefinitionHitCounter _hitCounter;
9+
protected override ResourceDefinitionExtensibilityPoint ExtensibilityPointsToTrack => ResourceDefinitionExtensibilityPoint.Serialization;
1110

1211
public RecordCompanyDefinition(IResourceGraph resourceGraph, ResourceDefinitionHitCounter hitCounter)
13-
: base(resourceGraph)
12+
: base(resourceGraph, hitCounter)
1413
{
15-
_hitCounter = hitCounter;
1614
}
1715

1816
public override void OnDeserialize(RecordCompany resource)
1917
{
20-
_hitCounter.TrackInvocation<RecordCompany>(ResourceDefinitionHitCounter.ExtensibilityPoint.OnDeserialize);
18+
base.OnDeserialize(resource);
2119

2220
if (!string.IsNullOrEmpty(resource.Name))
2321
{
@@ -27,7 +25,7 @@ public override void OnDeserialize(RecordCompany resource)
2725

2826
public override void OnSerialize(RecordCompany resource)
2927
{
30-
_hitCounter.TrackInvocation<RecordCompany>(ResourceDefinitionHitCounter.ExtensibilityPoint.OnSerialize);
28+
base.OnSerialize(resource);
3129

3230
if (!string.IsNullOrEmpty(resource.CountryOfResidence))
3331
{

test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/ResourceDefinitions/SparseFieldSets/AtomicSparseFieldSetResourceDefinitionTests.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,10 @@ public async Task Hides_text_in_create_resource_with_side_effects()
105105

106106
hitCounter.HitExtensibilityPoints.Should().BeEquivalentTo(new[]
107107
{
108-
(typeof(Lyric), ResourceDefinitionHitCounter.ExtensibilityPoint.OnApplySparseFieldSet),
109-
(typeof(Lyric), ResourceDefinitionHitCounter.ExtensibilityPoint.OnApplySparseFieldSet),
110-
(typeof(Lyric), ResourceDefinitionHitCounter.ExtensibilityPoint.OnApplySparseFieldSet),
111-
(typeof(Lyric), ResourceDefinitionHitCounter.ExtensibilityPoint.OnApplySparseFieldSet)
108+
(typeof(Lyric), ResourceDefinitionExtensibilityPoint.OnApplySparseFieldSet),
109+
(typeof(Lyric), ResourceDefinitionExtensibilityPoint.OnApplySparseFieldSet),
110+
(typeof(Lyric), ResourceDefinitionExtensibilityPoint.OnApplySparseFieldSet),
111+
(typeof(Lyric), ResourceDefinitionExtensibilityPoint.OnApplySparseFieldSet)
112112
}, options => options.WithStrictOrdering());
113113
}
114114

@@ -184,10 +184,10 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
184184

185185
hitCounter.HitExtensibilityPoints.Should().BeEquivalentTo(new[]
186186
{
187-
(typeof(Lyric), ResourceDefinitionHitCounter.ExtensibilityPoint.OnApplySparseFieldSet),
188-
(typeof(Lyric), ResourceDefinitionHitCounter.ExtensibilityPoint.OnApplySparseFieldSet),
189-
(typeof(Lyric), ResourceDefinitionHitCounter.ExtensibilityPoint.OnApplySparseFieldSet),
190-
(typeof(Lyric), ResourceDefinitionHitCounter.ExtensibilityPoint.OnApplySparseFieldSet)
187+
(typeof(Lyric), ResourceDefinitionExtensibilityPoint.OnApplySparseFieldSet),
188+
(typeof(Lyric), ResourceDefinitionExtensibilityPoint.OnApplySparseFieldSet),
189+
(typeof(Lyric), ResourceDefinitionExtensibilityPoint.OnApplySparseFieldSet),
190+
(typeof(Lyric), ResourceDefinitionExtensibilityPoint.OnApplySparseFieldSet)
191191
}, options => options.WithStrictOrdering());
192192
}
193193
}
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,27 @@
11
using JetBrains.Annotations;
22
using JsonApiDotNetCore.Configuration;
33
using JsonApiDotNetCore.Queries.Expressions;
4-
using JsonApiDotNetCore.Resources;
54

65
namespace JsonApiDotNetCoreTests.IntegrationTests.AtomicOperations.ResourceDefinitions.SparseFieldSets
76
{
87
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
9-
public sealed class LyricTextDefinition : JsonApiResourceDefinition<Lyric, long>
8+
public sealed class LyricTextDefinition : HitCountingResourceDefinition<Lyric, long>
109
{
1110
private readonly LyricPermissionProvider _lyricPermissionProvider;
12-
private readonly ResourceDefinitionHitCounter _hitCounter;
11+
12+
protected override ResourceDefinitionExtensibilityPoint ExtensibilityPointsToTrack => ResourceDefinitionExtensibilityPoint.OnApplySparseFieldSet;
1313

1414
public LyricTextDefinition(IResourceGraph resourceGraph, LyricPermissionProvider lyricPermissionProvider, ResourceDefinitionHitCounter hitCounter)
15-
: base(resourceGraph)
15+
: base(resourceGraph, hitCounter)
1616
{
1717
_lyricPermissionProvider = lyricPermissionProvider;
18-
_hitCounter = hitCounter;
1918
}
2019

2120
public override SparseFieldSetExpression? OnApplySparseFieldSet(SparseFieldSetExpression? existingSparseFieldSet)
2221
{
23-
_hitCounter.TrackInvocation<Lyric>(ResourceDefinitionHitCounter.ExtensibilityPoint.OnApplySparseFieldSet);
22+
base.OnApplySparseFieldSet(existingSparseFieldSet);
2423

25-
return _lyricPermissionProvider.CanViewText
26-
? base.OnApplySparseFieldSet(existingSparseFieldSet)
27-
: existingSparseFieldSet.Excluding<Lyric>(lyric => lyric.Text, ResourceGraph);
24+
return _lyricPermissionProvider.CanViewText ? existingSparseFieldSet : existingSparseFieldSet.Excluding<Lyric>(lyric => lyric.Text, ResourceGraph);
2825
}
2926
}
3027
}

test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Updating/Resources/AtomicUpdateResourceTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public AtomicUpdateResourceTests(IntegrationTestContext<TestableStartup<Operatio
3232
testContext.ConfigureServicesAfterStartup(services =>
3333
{
3434
services.AddResourceDefinition<ImplicitlyChangingTextLanguageDefinition>();
35+
36+
services.AddSingleton<ResourceDefinitionHitCounter>();
3537
});
3638

3739
var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService<IJsonApiOptions>();

0 commit comments

Comments
 (0)