From 428639e8d3e59e02a0ed3375b7062cb1936f60ed Mon Sep 17 00:00:00 2001 From: Sebastian Date: Fri, 4 Jun 2021 17:59:13 +0200 Subject: [PATCH] Add tests for workflows. --- .../TestSuite/TestSuite.ApiTests/AppTests.cs | 81 +++++++++++++++---- 1 file changed, 66 insertions(+), 15 deletions(-) diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/AppTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/AppTests.cs index afbdd91cf..edb481555 100644 --- a/backend/tools/TestSuite/TestSuite.ApiTests/AppTests.cs +++ b/backend/tools/TestSuite/TestSuite.ApiTests/AppTests.cs @@ -270,10 +270,10 @@ namespace TestSuite.ApiTests await _.Apps.PostLanguageAsync(appName, new AddLanguageDto { Language = "fr" }); var languages_1 = await _.Apps.GetLanguagesAsync(appName); - var languageEN_1 = languages_1.Items.First(x => x.Iso2Code == "en"); + var language1_EN = languages_1.Items.FirstOrDefault(x => x.Iso2Code == "en"); Assert.Equal(new string[] { "en", "de", "fr", "it" }, languages_1.Items.Select(x => x.Iso2Code).ToArray()); - Assert.True(languageEN_1.IsMaster); + Assert.True(language1_EN.IsMaster); // STEP 3: Update German language. @@ -288,10 +288,10 @@ namespace TestSuite.ApiTests }; var languages_2 = await _.Apps.PutLanguageAsync(appName, "de", updateRequest1); - var languageDE_2 = languages_2.Items.First(x => x.Iso2Code == "de"); + var language2_EN = languages_2.Items.FirstOrDefault(x => x.Iso2Code == "de"); - Assert.Equal(new string[] { "fr", "it" }, languageDE_2.Fallback.ToArray()); - Assert.True(languageDE_2.IsOptional); + Assert.Equal(new string[] { "fr", "it" }, language2_EN.Fallback.ToArray()); + Assert.True(language2_EN.IsOptional); // STEP 4: Update Italian language. @@ -305,7 +305,7 @@ namespace TestSuite.ApiTests }; var languages_3 = await _.Apps.PutLanguageAsync(appName, "it", updateRequest2); - var languageDE_3 = languages_3.Items.First(x => x.Iso2Code == "it"); + var languageDE_3 = languages_3.Items.FirstOrDefault(x => x.Iso2Code == "it"); Assert.Equal(new string[] { "fr", "de" }, languageDE_3.Fallback.ToArray()); @@ -314,25 +314,76 @@ namespace TestSuite.ApiTests var masterRequest = new UpdateLanguageDto { IsMaster = true }; var languages_4 = await _.Apps.PutLanguageAsync(appName, "it", masterRequest); + var language4_IT = languages_4.Items.FirstOrDefault(x => x.Iso2Code == "it"); + var language4_EN = languages_4.Items.FirstOrDefault(x => x.Iso2Code == "en"); - var languageIT_4 = languages_4.Items.First(x => x.Iso2Code == "it"); - var languageEN_4 = languages_4.Items.First(x => x.Iso2Code == "en"); - - Assert.True(languageIT_4.IsMaster); - Assert.False(languageIT_4.IsOptional); - Assert.False(languageEN_4.IsMaster); - Assert.Empty(languageIT_4.Fallback); + Assert.True(language4_IT.IsMaster); + Assert.False(language4_IT.IsOptional); + Assert.False(language4_EN.IsMaster); + Assert.Empty(language4_IT.Fallback); Assert.Equal(new string[] { "it", "de", "en", "fr" }, languages_4.Items.Select(x => x.Iso2Code).ToArray()); // STEP 6: Remove language. var languages_5 = await _.Apps.DeleteLanguageAsync(appName, "fr"); - var languageDE_5 = languages_5.Items.First(x => x.Iso2Code == "de"); + var language5_DE = languages_5.Items.FirstOrDefault(x => x.Iso2Code == "de"); - Assert.Equal(new string[] { "it" }, languageDE_5.Fallback.ToArray()); + Assert.Equal(new string[] { "it" }, language5_DE.Fallback.ToArray()); Assert.Equal(new string[] { "it", "de", "en" }, languages_5.Items.Select(x => x.Iso2Code).ToArray()); } + [Fact] + public async Task Should_manage_workflows() + { + var workflowName = Guid.NewGuid().ToString(); + + // STEP 0: Create workflow. + var createRequest = new AddWorkflowDto + { + Name = workflowName + }; + + var workflows_1 = await _.Apps.PostWorkflowAsync(_.AppName, createRequest); + var workflow_1 = workflows_1.Items.FirstOrDefault(x => x.Name == workflowName); + + Assert.NotNull(workflow_1); + Assert.NotNull(workflow_1.Name); + Assert.Equal(3, workflow_1.Steps.Count); + + + // STEP 1: Update workflow. + var updateRequest = new UpdateWorkflowDto + { + Initial = "Draft", + Steps = new Dictionary + { + ["Draft"] = new WorkflowStepDto + { + Transitions = new Dictionary + { + ["Published"] = new WorkflowTransitionDto() + } + }, + ["Published"] = new WorkflowStepDto(), + }, + Name = workflowName + }; + + var workflows_2 = await _.Apps.PutWorkflowAsync(_.AppName, workflow_1.Id, updateRequest); + var workflow_2 = workflows_2.Items.FirstOrDefault(x => x.Name == workflowName); + + Assert.NotNull(workflow_2); + Assert.NotNull(workflow_2.Name); + Assert.Equal(2, workflow_2.Steps.Count); + + + // STEP 2: Delete workflow. + var workflows_3 = await _.Apps.DeleteWorkflowAsync(_.AppName, workflow_1.Id); + var workflow_3 = workflows_3.Items.FirstOrDefault(x => x.Name == workflowName); + + Assert.Null(workflow_3); + } + [Fact] public async Task Should_manage_settings() {