From 0b4fedf41ec5497a56fac8647d77ca574f8eaa66 Mon Sep 17 00:00:00 2001 From: Grant Archibald <31553604+Grant-Archibald-MS@users.noreply.github.com> Date: Mon, 21 Oct 2024 08:10:16 -0700 Subject: [PATCH] Adding tests --- .../SelectSectionFunctionTests.cs | 56 +++++++++++++++++++ .../SelectSection.cs | 11 ++-- 2 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 src/testengine.module.powerapps.portal.tests/SelectSectionFunctionTests.cs diff --git a/src/testengine.module.powerapps.portal.tests/SelectSectionFunctionTests.cs b/src/testengine.module.powerapps.portal.tests/SelectSectionFunctionTests.cs new file mode 100644 index 00000000..9dbe6e4f --- /dev/null +++ b/src/testengine.module.powerapps.portal.tests/SelectSectionFunctionTests.cs @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +using System.Text.Json; +using Microsoft.Extensions.Logging; +using Microsoft.Playwright; +using Microsoft.PowerApps.TestEngine.Config; +using Microsoft.PowerApps.TestEngine.Providers; +using Microsoft.PowerApps.TestEngine.System; +using Microsoft.PowerApps.TestEngine.TestInfra; +using Microsoft.PowerFx; +using Microsoft.PowerFx.Types; +using Moq; +using testengine.module.powerapps.portal; + +namespace testengine.module.powerappsportal.tests +{ + public class SelectSectionFunctionTests + { + private Mock MockTestInfraFunctions; + private Mock MockTestState; + private Mock MockSingleTestInstanceState; + private Mock MockPage; + private Mock MockLogger; + private Mock MockBrowserContext; + + public SelectSectionFunctionTests() + { + MockTestInfraFunctions = new Mock(MockBehavior.Strict); + MockTestState = new Mock(MockBehavior.Strict); + MockSingleTestInstanceState = new Mock(MockBehavior.Strict); + MockPage = new Mock(MockBehavior.Strict); + MockLogger = new Mock(); + MockBrowserContext = new Mock(MockBehavior.Strict); + } + + [Fact] + public void SectionFound() + { + // Arrange + MockTestInfraFunctions.Setup(x => x.GetContext()).Returns(MockBrowserContext.Object); + MockBrowserContext.SetupGet(x => x.Pages).Returns(new List() { MockPage.Object }); + MockPage.Setup(x => x.Url).Returns("https://make.powerapps.com/environments/a1234567-1111-2222-4444-555566667777/home"); + MockPage.Setup(x => x.WaitForSelectorAsync("[data-test-id='solutions']:visible", It.IsAny())).ReturnsAsync(new Mock().Object); + MockPage.Setup(x => x.ClickAsync("[data-test-id='solutions']", null)).Returns(Task.CompletedTask); + + var function = new SelectSectionFunction(MockTestInfraFunctions.Object, MockTestState.Object, MockLogger.Object); + + // Act + function.Execute(FormulaValue.New("solutions")); + + // Assert + } + + } +} diff --git a/src/testengine.module.powerapps.portal/SelectSection.cs b/src/testengine.module.powerapps.portal/SelectSection.cs index 22983cf1..a6309b29 100644 --- a/src/testengine.module.powerapps.portal/SelectSection.cs +++ b/src/testengine.module.powerapps.portal/SelectSection.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. +// Copyright (c) Microsoft Corporation. // Licensed under the MIT license. using System.Linq; @@ -45,13 +45,14 @@ private async Task ExecuteAsync(StringValue section) { foreach (var page in _testInfraFunctions.GetContext().Pages) { var url = page.Url; - var name = section.Value.ToString(); + var sectionName = section.Value.ToString(); - // TODO: Handle case section is not visible. If not visible then add steps to add item + // TODO: Handle case section is not visible in the left navigation. If not consider adding steps to make visible from extra options in the portal if (url.Contains("powerapps.com") && url.Contains("/environments") && url.Contains("/home")) { - await page.WaitForSelectorAsync($"[data-test-id='{name}']:visible"); + var selector = $"[data-test-id='{sectionName}']"; + await page.WaitForSelectorAsync($"{selector}:visible"); - await page.Locator(selector).ClickAsync(); + await page.ClickAsync(selector); } } }