Skip to content

Commit f5b5d8b

Browse files
committed
Fix mixed-up IoC container registrations in tests (turn off auto-discovery)
1 parent 886e8f2 commit f5b5d8b

39 files changed

+260
-165
lines changed

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/AtomicOperations/AtomicOperationsFixture.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using JetBrains.Annotations;
2+
using JsonApiDotNetCore.Configuration;
3+
using JsonApiDotNetCoreMongoDbTests.IntegrationTests.AtomicOperations.Meta;
24
using Microsoft.Extensions.DependencyInjection;
35
using TestBuildingBlocks;
46
using Xunit;
@@ -12,9 +14,17 @@ public sealed class AtomicOperationsFixture : IAsyncLifetime
1214

1315
public AtomicOperationsFixture()
1416
{
17+
TestContext.UseResourceTypesInNamespace(typeof(MusicTrack).Namespace);
18+
1519
TestContext.UseController<OperationsController>();
1620

17-
TestContext.ConfigureServicesAfterStartup(services => services.AddSingleton<ResourceDefinitionHitCounter>());
21+
TestContext.ConfigureServicesAfterStartup(services =>
22+
{
23+
services.AddSingleton<ResourceDefinitionHitCounter>();
24+
25+
services.AddResourceDefinition<MusicTrackMetaDefinition>();
26+
services.AddResourceDefinition<TextLanguageMetaDefinition>();
27+
});
1828
}
1929

2030
public Task InitializeAsync()

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public async Task Can_create_resource_with_client_generated_string_ID_having_sid
5858
// Assert
5959
httpResponse.ShouldHaveStatusCode(HttpStatusCode.OK);
6060

61-
string isoCode = $"{newLanguage.IsoCode}{ContainerTypeToHideFromAutoDiscovery.ImplicitlyChangingTextLanguageDefinition.Suffix}";
61+
string isoCode = $"{newLanguage.IsoCode}{ImplicitlyChangingTextLanguageDefinition.Suffix}";
6262

6363
responseDocument.Results.ShouldHaveCount(1);
6464

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/AtomicOperations/ImplicitlyChangingTextLanguageDefinition.cs

Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,34 @@
66

77
namespace JsonApiDotNetCoreMongoDbTests.IntegrationTests.AtomicOperations;
88

9-
[UsedImplicitly]
10-
public sealed class ContainerTypeToHideFromAutoDiscovery
9+
/// <summary>
10+
/// Used to simulate side effects that occur in the database while saving, typically caused by database triggers.
11+
/// </summary>
12+
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
13+
public abstract class ImplicitlyChangingTextLanguageDefinition : HitCountingResourceDefinition<TextLanguage, string?>
1114
{
12-
/// <summary>
13-
/// Used to simulate side effects that occur in the database while saving, typically caused by database triggers.
14-
/// </summary>
15-
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
16-
public abstract class ImplicitlyChangingTextLanguageDefinition : HitCountingResourceDefinition<TextLanguage, string?>
17-
{
18-
internal const string Suffix = " (changed)";
15+
internal const string Suffix = " (changed)";
1916

20-
private readonly IMongoDataAccess _mongoDataAccess;
17+
private readonly IMongoDataAccess _mongoDataAccess;
2118

22-
protected ImplicitlyChangingTextLanguageDefinition(IResourceGraph resourceGraph, ResourceDefinitionHitCounter hitCounter,
23-
IMongoDataAccess mongoDataAccess)
24-
: base(resourceGraph, hitCounter)
25-
{
26-
_mongoDataAccess = mongoDataAccess;
27-
}
19+
protected ImplicitlyChangingTextLanguageDefinition(IResourceGraph resourceGraph, ResourceDefinitionHitCounter hitCounter, IMongoDataAccess mongoDataAccess)
20+
: base(resourceGraph, hitCounter)
21+
{
22+
_mongoDataAccess = mongoDataAccess;
23+
}
2824

29-
public override async Task OnWriteSucceededAsync(TextLanguage resource, WriteOperationKind writeOperation, CancellationToken cancellationToken)
30-
{
31-
await base.OnWriteSucceededAsync(resource, writeOperation, cancellationToken);
25+
public override async Task OnWriteSucceededAsync(TextLanguage resource, WriteOperationKind writeOperation, CancellationToken cancellationToken)
26+
{
27+
await base.OnWriteSucceededAsync(resource, writeOperation, cancellationToken);
3228

33-
if (writeOperation is not WriteOperationKind.DeleteResource)
34-
{
35-
resource.IsoCode += Suffix;
29+
if (writeOperation is not WriteOperationKind.DeleteResource)
30+
{
31+
resource.IsoCode += Suffix;
3632

37-
FilterDefinition<TextLanguage> filter = Builders<TextLanguage>.Filter.Eq(item => item.Id, resource.Id);
33+
FilterDefinition<TextLanguage> filter = Builders<TextLanguage>.Filter.Eq(item => item.Id, resource.Id);
3834

39-
IMongoCollection<TextLanguage> collection = _mongoDataAccess.MongoDatabase.GetCollection<TextLanguage>(nameof(TextLanguage));
40-
await collection.ReplaceOneAsync(_mongoDataAccess.ActiveSession, filter, resource, cancellationToken: cancellationToken);
41-
}
35+
IMongoCollection<TextLanguage> collection = _mongoDataAccess.MongoDatabase.GetCollection<TextLanguage>(nameof(TextLanguage));
36+
await collection.ReplaceOneAsync(_mongoDataAccess.ActiveSession, filter, resource, cancellationToken: cancellationToken);
4237
}
4338
}
4439
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace JsonApiDotNetCoreMongoDbTests.IntegrationTests.AtomicOperations.Meta;
66

77
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
8-
public sealed class TextLanguageMetaDefinition : ContainerTypeToHideFromAutoDiscovery.ImplicitlyChangingTextLanguageDefinition
8+
public sealed class TextLanguageMetaDefinition : ImplicitlyChangingTextLanguageDefinition
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

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/AtomicOperations/Transactions/AtomicTransactionConsistencyTests.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,17 @@ public AtomicTransactionConsistencyTests(IntegrationTestContext<TestableStartup,
1717
{
1818
_testContext = testContext;
1919

20+
testContext.UseResourceTypesInNamespace(typeof(MusicTrack).Namespace);
21+
2022
testContext.UseController<OperationsController>();
2123

2224
testContext.ConfigureServicesAfterStartup(services =>
2325
{
2426
services.AddSingleton<ResourceDefinitionHitCounter>();
2527

26-
services.AddResourceRepository<ContainerTypeToHideFromAutoDiscovery.PerformerRepository>();
27-
services.AddResourceRepository<ContainerTypeToHideFromAutoDiscovery.MusicTrackRepository>();
28-
services.AddResourceRepository<ContainerTypeToHideFromAutoDiscovery.LyricRepository>();
28+
services.AddResourceRepository<PerformerRepository>();
29+
services.AddResourceRepository<MusicTrackRepository>();
30+
services.AddResourceRepository<LyricRepository>();
2931
});
3032
}
3133

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/AtomicOperations/Transactions/LyricRepository.cs

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,25 @@
99

1010
namespace JsonApiDotNetCoreMongoDbTests.IntegrationTests.AtomicOperations.Transactions;
1111

12-
[UsedImplicitly]
13-
internal sealed partial class ContainerTypeToHideFromAutoDiscovery
12+
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
13+
public sealed class LyricRepository : MongoRepository<Lyric, string?>, IAsyncDisposable
1414
{
15-
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
16-
public sealed class LyricRepository : MongoRepository<Lyric, string?>, IAsyncDisposable
17-
{
18-
private readonly IOperationsTransaction _transaction;
15+
private readonly IOperationsTransaction _transaction;
1916

20-
public override string TransactionId => _transaction.TransactionId;
17+
public override string TransactionId => _transaction.TransactionId;
2118

22-
public LyricRepository(IMongoDataAccess mongoDataAccess, ITargetedFields targetedFields, IResourceGraph resourceGraph, IResourceFactory resourceFactory,
23-
IEnumerable<IQueryConstraintProvider> constraintProviders, IResourceDefinitionAccessor resourceDefinitionAccessor,
24-
IQueryableBuilder queryableBuilder)
25-
: base(mongoDataAccess, targetedFields, resourceGraph, resourceFactory, constraintProviders, resourceDefinitionAccessor, queryableBuilder)
26-
{
27-
IMongoDataAccess otherDataAccess = new MongoDataAccess(mongoDataAccess.MongoDatabase);
19+
public LyricRepository(IMongoDataAccess mongoDataAccess, ITargetedFields targetedFields, IResourceGraph resourceGraph, IResourceFactory resourceFactory,
20+
IEnumerable<IQueryConstraintProvider> constraintProviders, IResourceDefinitionAccessor resourceDefinitionAccessor, IQueryableBuilder queryableBuilder)
21+
: base(mongoDataAccess, targetedFields, resourceGraph, resourceFactory, constraintProviders, resourceDefinitionAccessor, queryableBuilder)
22+
{
23+
IMongoDataAccess otherDataAccess = new MongoDataAccess(mongoDataAccess.MongoDatabase);
2824

29-
var factory = new MongoTransactionFactory(otherDataAccess);
30-
_transaction = factory.BeginTransactionAsync(CancellationToken.None).Result;
31-
}
25+
var factory = new MongoTransactionFactory(otherDataAccess);
26+
_transaction = factory.BeginTransactionAsync(CancellationToken.None).Result;
27+
}
3228

33-
public async ValueTask DisposeAsync()
34-
{
35-
await _transaction.DisposeAsync();
36-
}
29+
public async ValueTask DisposeAsync()
30+
{
31+
await _transaction.DisposeAsync();
3732
}
3833
}

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/AtomicOperations/Transactions/MusicTrackRepository.cs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,15 @@
77

88
namespace JsonApiDotNetCoreMongoDbTests.IntegrationTests.AtomicOperations.Transactions;
99

10-
internal sealed partial class ContainerTypeToHideFromAutoDiscovery
10+
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
11+
public sealed class MusicTrackRepository : MongoRepository<MusicTrack, string?>
1112
{
12-
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
13-
public sealed class MusicTrackRepository : MongoRepository<MusicTrack, string?>
14-
{
15-
public override string? TransactionId => null;
13+
public override string? TransactionId => null;
1614

17-
public MusicTrackRepository(IMongoDataAccess mongoDataAccess, ITargetedFields targetedFields, IResourceGraph resourceGraph,
18-
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, IResourceDefinitionAccessor resourceDefinitionAccessor,
19-
IQueryableBuilder queryableBuilder)
20-
: base(mongoDataAccess, targetedFields, resourceGraph, resourceFactory, constraintProviders, resourceDefinitionAccessor, queryableBuilder)
21-
{
22-
}
15+
public MusicTrackRepository(IMongoDataAccess mongoDataAccess, ITargetedFields targetedFields, IResourceGraph resourceGraph,
16+
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, IResourceDefinitionAccessor resourceDefinitionAccessor,
17+
IQueryableBuilder queryableBuilder)
18+
: base(mongoDataAccess, targetedFields, resourceGraph, resourceFactory, constraintProviders, resourceDefinitionAccessor, queryableBuilder)
19+
{
2320
}
2421
}

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/AtomicOperations/Transactions/PerformerRepository.cs

Lines changed: 40 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -6,60 +6,56 @@
66

77
namespace JsonApiDotNetCoreMongoDbTests.IntegrationTests.AtomicOperations.Transactions;
88

9-
internal sealed partial class ContainerTypeToHideFromAutoDiscovery
9+
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
10+
public sealed class PerformerRepository : IResourceRepository<Performer, string?>
1011
{
11-
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
12-
public sealed class PerformerRepository : IResourceRepository<Performer, string?>
12+
public Task<IReadOnlyCollection<Performer>> GetAsync(QueryLayer queryLayer, CancellationToken cancellationToken)
1313
{
14-
public Task<IReadOnlyCollection<Performer>> GetAsync(QueryLayer queryLayer, CancellationToken cancellationToken)
15-
{
16-
throw new NotImplementedException();
17-
}
14+
throw new NotImplementedException();
15+
}
1816

19-
public Task<int> CountAsync(FilterExpression? filter, CancellationToken cancellationToken)
20-
{
21-
throw new NotImplementedException();
22-
}
17+
public Task<int> CountAsync(FilterExpression? filter, CancellationToken cancellationToken)
18+
{
19+
throw new NotImplementedException();
20+
}
2321

24-
public Task<Performer> GetForCreateAsync(Type resourceClrType, string? id, CancellationToken cancellationToken)
25-
{
26-
throw new NotImplementedException();
27-
}
22+
public Task<Performer> GetForCreateAsync(Type resourceClrType, string? id, CancellationToken cancellationToken)
23+
{
24+
throw new NotImplementedException();
25+
}
2826

29-
public Task CreateAsync(Performer resourceFromRequest, Performer resourceForDatabase, CancellationToken cancellationToken)
30-
{
31-
throw new NotImplementedException();
32-
}
27+
public Task CreateAsync(Performer resourceFromRequest, Performer resourceForDatabase, CancellationToken cancellationToken)
28+
{
29+
throw new NotImplementedException();
30+
}
3331

34-
public Task<Performer?> GetForUpdateAsync(QueryLayer queryLayer, CancellationToken cancellationToken)
35-
{
36-
throw new NotImplementedException();
37-
}
32+
public Task<Performer?> GetForUpdateAsync(QueryLayer queryLayer, CancellationToken cancellationToken)
33+
{
34+
throw new NotImplementedException();
35+
}
3836

39-
public Task UpdateAsync(Performer resourceFromRequest, Performer resourceFromDatabase, CancellationToken cancellationToken)
40-
{
41-
throw new NotImplementedException();
42-
}
37+
public Task UpdateAsync(Performer resourceFromRequest, Performer resourceFromDatabase, CancellationToken cancellationToken)
38+
{
39+
throw new NotImplementedException();
40+
}
4341

44-
public Task DeleteAsync(Performer? resourceFromDatabase, string? id, CancellationToken cancellationToken)
45-
{
46-
throw new NotImplementedException();
47-
}
42+
public Task DeleteAsync(Performer? resourceFromDatabase, string? id, CancellationToken cancellationToken)
43+
{
44+
throw new NotImplementedException();
45+
}
4846

49-
public Task SetRelationshipAsync(Performer leftResource, object? rightValue, CancellationToken cancellationToken)
50-
{
51-
throw new NotImplementedException();
52-
}
47+
public Task SetRelationshipAsync(Performer leftResource, object? rightValue, CancellationToken cancellationToken)
48+
{
49+
throw new NotImplementedException();
50+
}
5351

54-
public Task AddToToManyRelationshipAsync(Performer? leftResource, string? leftId, ISet<IIdentifiable> rightResourceIds,
55-
CancellationToken cancellationToken)
56-
{
57-
throw new NotImplementedException();
58-
}
52+
public Task AddToToManyRelationshipAsync(Performer? leftResource, string? leftId, ISet<IIdentifiable> rightResourceIds, CancellationToken cancellationToken)
53+
{
54+
throw new NotImplementedException();
55+
}
5956

60-
public Task RemoveFromToManyRelationshipAsync(Performer leftResource, ISet<IIdentifiable> rightResourceIds, CancellationToken cancellationToken)
61-
{
62-
throw new NotImplementedException();
63-
}
57+
public Task RemoveFromToManyRelationshipAsync(Performer leftResource, ISet<IIdentifiable> rightResourceIds, CancellationToken cancellationToken)
58+
{
59+
throw new NotImplementedException();
6460
}
6561
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
295295

296296
responseDocument.Results.ShouldHaveCount(1);
297297

298-
string isoCode = $"{newIsoCode}{ContainerTypeToHideFromAutoDiscovery.ImplicitlyChangingTextLanguageDefinition.Suffix}";
298+
string isoCode = $"{newIsoCode}{ImplicitlyChangingTextLanguageDefinition.Suffix}";
299299

300300
responseDocument.Results[0].Data.SingleValue.ShouldNotBeNull().With(resource =>
301301
{

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/Meta/ResourceMetaTests.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Net;
22
using FluentAssertions;
3+
using JsonApiDotNetCore.Configuration;
34
using JsonApiDotNetCore.Serialization.Objects;
45
using Microsoft.Extensions.DependencyInjection;
56
using TestBuildingBlocks;
@@ -16,11 +17,14 @@ public ResourceMetaTests(IntegrationTestContext<TestableStartup, MetaDbContext>
1617
{
1718
_testContext = testContext;
1819

20+
testContext.UseResourceTypesInNamespace(typeof(SupportTicket).Namespace);
21+
1922
testContext.UseController<SupportTicketsController>();
2023

2124
testContext.ConfigureServicesAfterStartup(services =>
2225
{
2326
services.AddSingleton<ResourceDefinitionHitCounter>();
27+
services.AddResourceDefinition<SupportTicketDefinition>();
2428
});
2529

2630
var hitCounter = _testContext.Factory.Services.GetRequiredService<ResourceDefinitionHitCounter>();

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/Meta/TopLevelCountTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@ public TopLevelCountTests(IntegrationTestContext<TestableStartup, MetaDbContext>
1818
{
1919
_testContext = testContext;
2020

21+
testContext.UseResourceTypesInNamespace(typeof(SupportTicket).Namespace);
22+
2123
testContext.UseController<SupportTicketsController>();
2224

2325
testContext.ConfigureServicesAfterStartup(services =>
2426
{
25-
services.AddSingleton<ResourceDefinitionHitCounter>();
2627
services.AddScoped(typeof(IResourceChangeTracker<>), typeof(NeverSameResourceChangeTracker<>));
2728
});
2829

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/QueryStrings/Filtering/FilterDataTypeTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ public FilterDataTypeTests(IntegrationTestContext<TestableStartup, FilterDbConte
1919
{
2020
_testContext = testContext;
2121

22+
testContext.UseResourceTypesInNamespace(typeof(FilterableResource).Namespace);
23+
2224
testContext.UseController<FilterableResourcesController>();
2325
}
2426

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/QueryStrings/Filtering/FilterDepthTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public FilterDepthTests(IntegrationTestContext<TestableStartup, QueryStringDbCon
1515
{
1616
_testContext = testContext;
1717

18+
testContext.UseResourceTypesInNamespace(typeof(Blog).Namespace);
19+
1820
testContext.UseController<BlogsController>();
1921
testContext.UseController<BlogPostsController>();
2022
}

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/QueryStrings/Filtering/FilterOperatorTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public FilterOperatorTests(IntegrationTestContext<TestableStartup, FilterDbConte
3939
{
4040
_testContext = testContext;
4141

42+
testContext.UseResourceTypesInNamespace(typeof(FilterableResource).Namespace);
43+
4244
testContext.UseController<FilterableResourcesController>();
4345
}
4446

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/QueryStrings/Filtering/FilterTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public FilterTests(IntegrationTestContext<TestableStartup, QueryStringDbContext>
1515
{
1616
_testContext = testContext;
1717

18+
testContext.UseResourceTypesInNamespace(typeof(Blog).Namespace);
19+
1820
testContext.UseController<WebAccountsController>();
1921
}
2022

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/QueryStrings/Includes/IncludeTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ public IncludeTests(IntegrationTestContext<TestableStartup, QueryStringDbContext
1414
{
1515
_testContext = testContext;
1616

17+
testContext.UseResourceTypesInNamespace(typeof(Blog).Namespace);
18+
1719
testContext.UseController<BlogPostsController>();
1820
}
1921

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/QueryStrings/Pagination/PaginationWithTotalCountTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ public PaginationWithTotalCountTests(IntegrationTestContext<TestableStartup, Que
1919
{
2020
_testContext = testContext;
2121

22+
testContext.UseResourceTypesInNamespace(typeof(Blog).Namespace);
23+
2224
testContext.UseController<BlogPostsController>();
2325

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

0 commit comments

Comments
 (0)