Browse Source

Bugfix when replaying events.

pull/111/head
Sebastian Stehle 8 years ago
parent
commit
11bf99fc8d
  1. 2
      src/Squidex.Domain.Apps.Read.MongoDb/Contents/MongoContentRepository.cs
  2. 4
      src/Squidex.Domain.Apps.Read.MongoDb/Schemas/MongoSchemaRepository.cs
  3. 2
      src/Squidex.Domain.Apps.Read/Schemas/Repositories/ISchemaRepository.cs
  4. 2
      src/Squidex.Domain.Apps.Read/Schemas/Services/Implementations/CachingSchemaProvider.cs
  5. 2
      src/Squidex/Controllers/Api/Schemas/SchemasController.cs
  6. 12
      tests/Squidex.Domain.Apps.Read.Tests/Schemas/CachingSchemaProviderTests.cs

2
src/Squidex.Domain.Apps.Read.MongoDb/Contents/MongoContentRepository.cs

@ -154,7 +154,7 @@ namespace Squidex.Domain.Apps.Read.MongoDb.Contents
{ {
var collection = GetCollection(appId); var collection = GetCollection(appId);
var schema = await schemas.FindSchemaByIdAsync(schemaId); var schema = await schemas.FindSchemaByIdAsync(schemaId, true);
if (schema == null) if (schema == null)
{ {

4
src/Squidex.Domain.Apps.Read.MongoDb/Schemas/MongoSchemaRepository.cs

@ -71,7 +71,7 @@ namespace Squidex.Domain.Apps.Read.MongoDb.Schemas
return schemaEntity; return schemaEntity;
} }
public async Task<ISchemaEntity> FindSchemaAsync(Guid schemaId, bool provideDeleted = false) public async Task<ISchemaEntity> FindSchemaAsync(Guid schemaId)
{ {
var schemaEntity = var schemaEntity =
await Collection.Find(s => s.Id == schemaId) await Collection.Find(s => s.Id == schemaId)
@ -79,7 +79,7 @@ namespace Squidex.Domain.Apps.Read.MongoDb.Schemas
schemaEntity?.DeserializeSchema(serializer); schemaEntity?.DeserializeSchema(serializer);
return schemaEntity != null && (provideDeleted || !schemaEntity.IsDeleted) ? schemaEntity : null; return schemaEntity;
} }
} }
} }

2
src/Squidex.Domain.Apps.Read/Schemas/Repositories/ISchemaRepository.cs

@ -18,6 +18,6 @@ namespace Squidex.Domain.Apps.Read.Schemas.Repositories
Task<ISchemaEntity> FindSchemaAsync(Guid appId, string name); Task<ISchemaEntity> FindSchemaAsync(Guid appId, string name);
Task<ISchemaEntity> FindSchemaAsync(Guid schemaId, bool provideDeleted = false); Task<ISchemaEntity> FindSchemaAsync(Guid schemaId);
} }
} }

2
src/Squidex.Domain.Apps.Read/Schemas/Services/Implementations/CachingSchemaProvider.cs

@ -48,7 +48,7 @@ namespace Squidex.Domain.Apps.Read.Schemas.Services.Implementations
if (!Cache.TryGetValue(cacheKey, out ISchemaEntity result)) if (!Cache.TryGetValue(cacheKey, out ISchemaEntity result))
{ {
result = await repository.FindSchemaAsync(id, provideDeleted); result = await repository.FindSchemaAsync(id);
Cache.Set(cacheKey, result, CacheDuration); Cache.Set(cacheKey, result, CacheDuration);

2
src/Squidex/Controllers/Api/Schemas/SchemasController.cs

@ -89,7 +89,7 @@ namespace Squidex.Controllers.Api.Schemas
entity = await schemaRepository.FindSchemaAsync(AppId, name); entity = await schemaRepository.FindSchemaAsync(AppId, name);
} }
if (entity == null) if (entity == null || entity.IsDeleted)
{ {
return NotFound(); return NotFound();
} }

12
tests/Squidex.Domain.Apps.Read.Tests/Schemas/CachingSchemaProviderTests.cs

@ -64,13 +64,13 @@ namespace Squidex.Domain.Apps.Read.Schemas
[Fact] [Fact]
public async Task Should_also_retrieve_schema_by_name_if_retrieved_by_id_before() public async Task Should_also_retrieve_schema_by_name_if_retrieved_by_id_before()
{ {
A.CallTo(() => repository.FindSchemaAsync(schemaId.Id, false)) A.CallTo(() => repository.FindSchemaAsync(schemaId.Id))
.Returns(schemaV1); .Returns(schemaV1);
await ProvideSchemaById(schemaV1); await ProvideSchemaById(schemaV1);
await ProvideSchemaByName(schemaV1); await ProvideSchemaByName(schemaV1);
A.CallTo(() => repository.FindSchemaAsync(schemaId.Id, false)).MustHaveHappened(); A.CallTo(() => repository.FindSchemaAsync(schemaId.Id)).MustHaveHappened();
A.CallTo(() => repository.FindSchemaAsync(appId.Id, schemaId.Name)).MustNotHaveHappened(); A.CallTo(() => repository.FindSchemaAsync(appId.Id, schemaId.Name)).MustNotHaveHappened();
} }
@ -83,16 +83,16 @@ namespace Squidex.Domain.Apps.Read.Schemas
await ProvideSchemaByName(schemaV1); await ProvideSchemaByName(schemaV1);
await ProvideSchemaById(schemaV1); await ProvideSchemaById(schemaV1);
A.CallTo(() => repository.FindSchemaAsync(schemaId.Id, false)).MustNotHaveHappened(); A.CallTo(() => repository.FindSchemaAsync(schemaId.Id)).MustNotHaveHappened();
A.CallTo(() => repository.FindSchemaAsync(appId.Id, schemaId.Name)).MustHaveHappened(); A.CallTo(() => repository.FindSchemaAsync(appId.Id, schemaId.Name)).MustHaveHappened();
} }
[Fact] [Fact]
public async Task Should_clear_cache_for_id_after_update_event() public async Task Should_clear_cache_for_id_after_update_event()
{ {
A.CallTo(() => repository.FindSchemaAsync(schemaId.Id, false)) A.CallTo(() => repository.FindSchemaAsync(schemaId.Id))
.Returns(schemaV2); .Returns(schemaV2);
A.CallTo(() => repository.FindSchemaAsync(schemaId.Id, false)) A.CallTo(() => repository.FindSchemaAsync(schemaId.Id))
.Returns(schemaV1).Once(); .Returns(schemaV1).Once();
await ProvideSchemaById(schemaV1); await ProvideSchemaById(schemaV1);
@ -101,7 +101,7 @@ namespace Squidex.Domain.Apps.Read.Schemas
await ProvideSchemaById(schemaV2); await ProvideSchemaById(schemaV2);
A.CallTo(() => repository.FindSchemaAsync(schemaId.Id, false)).MustHaveHappened(Repeated.Exactly.Times(2)); A.CallTo(() => repository.FindSchemaAsync(schemaId.Id)).MustHaveHappened(Repeated.Exactly.Times(2));
} }
[Fact] [Fact]

Loading…
Cancel
Save