diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/AppCreationTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/AppCreationTests.cs index a7c58c3df..3fa61fb41 100644 --- a/backend/tools/TestSuite/TestSuite.ApiTests/AppCreationTests.cs +++ b/backend/tools/TestSuite/TestSuite.ApiTests/AppCreationTests.cs @@ -37,7 +37,7 @@ namespace TestSuite.ApiTests var app = await _.Apps.PostAppAsync(createRequest); - // Should return create app with correct name. + // Should return created app with correct name. Assert.Equal(appName, app.Name); @@ -94,7 +94,7 @@ namespace TestSuite.ApiTests } [Fact] - public async Task Should_remove_app() + public async Task Should_archive_app() { var appName = Guid.NewGuid().ToString(); @@ -112,5 +112,24 @@ namespace TestSuite.ApiTests // Should not provide deleted app when apps are queried. Assert.DoesNotContain(apps, x => x.Name == appName); } + + [Fact] + public async Task Should_recreate_after_archived() + { + var appName = Guid.NewGuid().ToString(); + + // STEP 1: Create app + var createRequest = new CreateAppDto { Name = appName }; + + await _.Apps.PostAppAsync(createRequest); + + + // STEP 2: Archive app + await _.Apps.DeleteAppAsync(appName); + + + // STEP 3: Create app again + await _.Apps.PostAppAsync(createRequest); + } } } diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/SchemaTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/SchemaTests.cs new file mode 100644 index 000000000..9a770132b --- /dev/null +++ b/backend/tools/TestSuite/TestSuite.ApiTests/SchemaTests.cs @@ -0,0 +1,94 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System; +using System.Threading.Tasks; +using Squidex.ClientLibrary.Management; +using TestSuite.Fixtures; +using Xunit; + +#pragma warning disable SA1300 // Element should begin with upper-case letter +#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row + +namespace TestSuite.ApiTests +{ + public class SchemaTests : IClassFixture + { + public CreatedAppFixture _ { get; } + + public SchemaTests(CreatedAppFixture fixture) + { + _ = fixture; + } + + [Fact] + public async Task Should_create_schema() + { + var schemaName = $"schema-{Guid.NewGuid()}"; + + // STEP 1: Create schema + var createRequest = new CreateSchemaDto { Name = schemaName }; + + 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); + } + + [Fact] + public async Task Should_delete_Schema() + { + var schemaName = $"schema-{Guid.NewGuid()}"; + + // STEP 1: Create schema + var createRequest = new CreateSchemaDto { Name = schemaName }; + + var schema = await _.Schemas.PostSchemaAsync(_.AppName, createRequest); + + // Should return created schemas with correct name. + Assert.Equal(schemaName, schema.Name); + + + // STEP 2: Delete schema + await _.Schemas.DeleteSchemaAsync(_.AppName, schemaName); + + var schemas = await _.Schemas.GetSchemasAsync(_.AppName); + + // Should not provide deleted schema when schema are queried. + Assert.DoesNotContain(schemas.Items, x => x.Name == schemaName); + } + + [Fact] + public async Task Should_recreate_after_deleted() + { + var schemaName = $"schema-{Guid.NewGuid()}"; + + // STEP 1: Create schema + var createRequest = new CreateSchemaDto { Name = schemaName }; + + var schema = await _.Schemas.PostSchemaAsync(_.AppName, createRequest); + + // Should return created schemas with correct name. + Assert.Equal(schemaName, schema.Name); + + + // STEP 2: Delete schema. + await _.Schemas.DeleteSchemaAsync(_.AppName, schemaName); + + + // STEP 3: Create app again + await _.Schemas.PostSchemaAsync(_.AppName, createRequest); + } + } +}