Browse Source

Change reverted.

pull/587/head
Sebastian 5 years ago
parent
commit
d45a94fe89
  1. 12
      backend/src/Squidex.Domain.Apps.Entities/Rules/Queries/RuleQueryService.cs
  2. 12
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/Indexes/RulesIndexTests.cs
  3. 19
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/Queries/RuleQueryServiceTests.cs
  4. 16
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Schemas/Indexes/SchemasIndexTests.cs
  5. 10
      frontend/app/shared/services/assets.service.ts
  6. 2
      frontend/app/shared/state/assets.forms.spec.ts
  7. 14
      frontend/app/shared/state/assets.forms.ts

12
backend/src/Squidex.Domain.Apps.Entities/Rules/Queries/RuleQueryService.cs

@ -14,6 +14,7 @@ namespace Squidex.Domain.Apps.Entities.Rules.Queries
{ {
public sealed class RuleQueryService : IRuleQueryService public sealed class RuleQueryService : IRuleQueryService
{ {
private static readonly List<IEnrichedRuleEntity> EmptyResults = new List<IEnrichedRuleEntity>();
private readonly IRulesIndex rulesIndex; private readonly IRulesIndex rulesIndex;
private readonly IRuleEnricher ruleEnricher; private readonly IRuleEnricher ruleEnricher;
@ -30,9 +31,16 @@ namespace Squidex.Domain.Apps.Entities.Rules.Queries
{ {
var rules = await rulesIndex.GetRulesAsync(context.App.Id); var rules = await rulesIndex.GetRulesAsync(context.App.Id);
var enriched = await ruleEnricher.EnrichAsync(rules, context); rules.RemoveAll(x => x.IsDeleted);
return enriched; if (rules.Count > 0)
{
var enriched = await ruleEnricher.EnrichAsync(rules, context);
return enriched;
}
return EmptyResults;
} }
} }
} }

12
backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/Indexes/RulesIndexTests.cs

@ -48,7 +48,7 @@ namespace Squidex.Domain.Apps.Entities.Rules.Indexes
} }
[Fact] [Fact]
public async Task Should_return_empty_rule_if_rule_not_created() public async Task Should_return_empty_rules_if_rule_not_created()
{ {
var rule = SetupRule(-1); var rule = SetupRule(-1);
@ -61,16 +61,16 @@ namespace Squidex.Domain.Apps.Entities.Rules.Indexes
} }
[Fact] [Fact]
public async Task Should_return_empty_rule_if_rule_deleted() public async Task Should_return_rule_if_deleted()
{ {
var rule = SetupRule(-1); var rule = SetupRule(0, true);
A.CallTo(() => index.GetIdsAsync()) A.CallTo(() => index.GetIdsAsync())
.Returns(new List<Guid> { rule.Id }); .Returns(new List<Guid> { rule.Id });
var actual = await sut.GetRulesAsync(appId.Id); var actual = await sut.GetRulesAsync(appId.Id);
Assert.Empty(actual); Assert.Same(actual[0], rule);
} }
[Fact] [Fact]
@ -118,11 +118,11 @@ namespace Squidex.Domain.Apps.Entities.Rules.Indexes
.MustHaveHappened(); .MustHaveHappened();
} }
private IRuleEntity SetupRule(long version) private IRuleEntity SetupRule(long version, bool isDeleted = false)
{ {
var ruleId = Guid.NewGuid(); var ruleId = Guid.NewGuid();
var ruleEntity = new RuleEntity { Id = ruleId, AppId = appId, Version = version }; var ruleEntity = new RuleEntity { Id = ruleId, AppId = appId, Version = version, IsDeleted = isDeleted };
var ruleGrain = A.Fake<IRuleGrain>(); var ruleGrain = A.Fake<IRuleGrain>();
A.CallTo(() => ruleGrain.GetStateAsync()) A.CallTo(() => ruleGrain.GetStateAsync())

19
backend/tests/Squidex.Domain.Apps.Entities.Tests/Rules/Queries/RuleQueryServiceTests.cs

@ -54,5 +54,24 @@ namespace Squidex.Domain.Apps.Entities.Rules.Queries
Assert.Same(enriched, result); Assert.Same(enriched, result);
} }
[Fact]
public async Task Should_not_get_deleted_rules()
{
var original = new List<IRuleEntity>
{
new RuleEntity { IsDeleted = true }
};
A.CallTo(() => rulesIndex.GetRulesAsync(appId.Id))
.Returns(original);
var result = await sut.QueryAsync(requestContext);
Assert.Empty(result);
A.CallTo(() => ruleEnricher.EnrichAsync(A<IEnumerable<IRuleEntity>>._, requestContext))
.MustNotHaveHappened();
}
} }
} }

16
backend/tests/Squidex.Domain.Apps.Entities.Tests/Schemas/Indexes/SchemasIndexTests.cs

@ -142,7 +142,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
} }
[Fact] [Fact]
public async Task Should_return_empty_schema_if_schema_not_created() public async Task Should_return_empty_schemas_if_schema_not_created()
{ {
var schema = SetupSchema(EtagVersion.NotFound); var schema = SetupSchema(EtagVersion.NotFound);
@ -155,16 +155,16 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
} }
[Fact] [Fact]
public async Task Should_return_empty_schema_if_schema_deleted() public async Task Should_return_schema_if_deleted()
{ {
var schema = SetupSchema(); var schema = SetupSchema(0, true);
A.CallTo(() => index.GetIdAsync(schema.SchemaDef.Name)) A.CallTo(() => index.GetIdsAsync())
.Returns(schema.Id); .Returns(new List<Guid> { schema.Id });
var actual = await sut.GetSchemasAsync(appId.Id); var actual = await sut.GetSchemasAsync(appId.Id);
Assert.Empty(actual); Assert.Same(actual[0], schema);
} }
[Fact] [Fact]
@ -276,7 +276,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
return new CreateSchema { SchemaId = schemaId.Id, Name = name, AppId = appId }; return new CreateSchema { SchemaId = schemaId.Id, Name = name, AppId = appId };
} }
private ISchemaEntity SetupSchema(long version = 0) private ISchemaEntity SetupSchema(long version = 0, bool isDeleted = false)
{ {
var schemaEntity = A.Fake<ISchemaEntity>(); var schemaEntity = A.Fake<ISchemaEntity>();
@ -288,6 +288,8 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
.Returns(appId); .Returns(appId);
A.CallTo(() => schemaEntity.Version) A.CallTo(() => schemaEntity.Version)
.Returns(version); .Returns(version);
A.CallTo(() => schemaEntity.IsDeleted)
.Returns(isDeleted);
var schemaGrain = A.Fake<ISchemaGrain>(); var schemaGrain = A.Fake<ISchemaGrain>();

10
frontend/app/shared/services/assets.service.ts

@ -35,15 +35,13 @@ export class AssetDto {
public readonly canMove: boolean; public readonly canMove: boolean;
public get fileNameWithoutExtension() { public get fileNameWithoutExtension() {
let fileName = this.fileName; const index = this.fileName.lastIndexOf('.');
const index = fileName.lastIndexOf('.');
if (index > 0) { if (index > 0) {
fileName = fileName.substr(0, index); return this.fileName.substr(0, index);
} else {
return this.fileName;
} }
return fileName;
} }
public get isDuplicate() { public get isDuplicate() {

2
frontend/app/shared/state/assets.forms.spec.ts

@ -31,7 +31,7 @@ describe('AnnotateAssetForm', () => {
form = new AnnotateAssetForm(new FormBuilder()); form = new AnnotateAssetForm(new FormBuilder());
}); });
it('shoulde remov extension when loading asset file name', () => { it('shoulde remove extension when loading asset file name', () => {
form.load(asset); form.load(asset);
const slug = form.form.get('fileName')!.value; const slug = form.form.get('fileName')!.value;

14
frontend/app/shared/state/assets.forms.ts

@ -125,7 +125,19 @@ export class AnnotateAssetForm extends Form<FormGroup, AnnotateAssetDto, AssetDt
} }
public transformLoad(value: Partial<AssetDto>) { public transformLoad(value: Partial<AssetDto>) {
const result = { ...value, fileName: value.fileNameWithoutExtension }; const result = { ...value };
let fileName = value.fileName;
if (fileName) {
const index = fileName.lastIndexOf('.');
if (index > 0) {
fileName = fileName.substr(0, index);
}
result.fileName = fileName;
}
if (Types.isObject(value.metadata)) { if (Types.isObject(value.metadata)) {
const length = Object.keys(value.metadata).length; const length = Object.keys(value.metadata).length;

Loading…
Cancel
Save