diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/DomainObject/ContentDomainObject.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/DomainObject/ContentDomainObject.cs index c4587692f..80c5e3018 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/DomainObject/ContentDomainObject.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/DomainObject/ContentDomainObject.cs @@ -94,7 +94,11 @@ namespace Squidex.Domain.Apps.Entities.Contents.DomainObject await CreateCore(c); - if (Is.OptionalChange(Snapshot.EditingStatus, c.Status)) + if (context.Schema.SchemaDef.IsSingleton) + { + ChangeStatus(c.AsChange(Status.Published)); + } + else if (Is.OptionalChange(Snapshot.EditingStatus, c.Status)) { await ChangeCore(c.AsChange(c.Status.Value)); } diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/SchemaTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/SchemaTests.cs index 03e34ade4..d90558495 100644 --- a/backend/tools/TestSuite/TestSuite.ApiTests/SchemaTests.cs +++ b/backend/tools/TestSuite/TestSuite.ApiTests/SchemaTests.cs @@ -47,6 +47,35 @@ namespace TestSuite.ApiTests Assert.Contains(schemas.Items, x => x.Name == schemaName); } + [Fact] + public async Task Should_create_singleton_schema() + { + var schemaName = $"schema-{Guid.NewGuid()}"; + + // STEP 1: Create schema + var createRequest = new CreateSchemaDto { Name = schemaName, IsSingleton = true }; + + var schema = await _.Schemas.PostSchemaAsync(_.AppName, createRequest); + + // Should return created schemas with correct name. + Assert.Equal(schemaName, schema.Name); + + + // STEP 2: Get all schemas + var schemas = await _.Schemas.GetSchemasAsync(_.AppName); + + // Should provide new schema when apps are schemas. + Assert.Contains(schemas.Items, x => x.Name == schemaName); + + + // STEP 3: Get singleton content + var client = _.ClientManager.CreateDynamicContentsClient(schemaName); + + var content = await client.GetAsync(schema.Id); + + Assert.NotNull(content); + } + [Fact] public async Task Should_create_schema_with_checkboxes() {