mirror of
https://github.com/LD-Reborn/Berufsschule_HAM.git
synced 2025-12-20 06:51:55 +00:00
Merge pull request #305 from LD-Reborn/288-feature-e2e-tests---users
288 feature e2e tests users
This commit is contained in:
@@ -303,6 +303,7 @@
|
|||||||
updateButton.setAttribute('data-user-name', data.Cn || '');
|
updateButton.setAttribute('data-user-name', data.Cn || '');
|
||||||
updateButton.setAttribute('data-user-surname', data.Sn || '');
|
updateButton.setAttribute('data-user-surname', data.Sn || '');
|
||||||
updateButton.setAttribute('data-user-workplace', data.Description?.Workplace || '');
|
updateButton.setAttribute('data-user-workplace', data.Description?.Workplace || '');
|
||||||
|
updateButton.setAttribute('data-user-birthdate', data.Description?.BirthDate || '');
|
||||||
updateButton.setAttribute('data-user-groups', JSON.stringify(data.Description?.Groups || []));
|
updateButton.setAttribute('data-user-groups', JSON.stringify(data.Description?.Groups || []));
|
||||||
|
|
||||||
if (data.JpegPhoto && data.JpegPhoto.length > 0) {
|
if (data.JpegPhoto && data.JpegPhoto.length > 0) {
|
||||||
@@ -568,7 +569,7 @@
|
|||||||
data-user-title="${data.Title || ''}"
|
data-user-title="${data.Title || ''}"
|
||||||
data-user-name="${data.Cn || ''}"
|
data-user-name="${data.Cn || ''}"
|
||||||
data-user-surname="${data.Sn || ''}"
|
data-user-surname="${data.Sn || ''}"
|
||||||
data-user-birthdate="${data.BirthDate}"
|
data-user-birthdate="${data.Description.BirthDate}"
|
||||||
data-user-address-city="${data.Description.Address.City}"
|
data-user-address-city="${data.Description.Address.City}"
|
||||||
data-user-address-street="${data.Description.Address.Street}"
|
data-user-address-street="${data.Description.Address.Street}"
|
||||||
data-user-address-streetnr="${data.Description.Address.StreetNr}"
|
data-user-address-streetnr="${data.Description.Address.StreetNr}"
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class AssetsPageTests : IDisposable
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AssetsPage_ShouldCreateAndShowDetailAndUpdateAndDeleteGroup()
|
public void AssetsPage_ShouldCreateAndShowDetailAndUpdateAndDeleteAsset()
|
||||||
{
|
{
|
||||||
AppHelper.Login(_driver);
|
AppHelper.Login(_driver);
|
||||||
AssetsHelper.NavigateToAssetsPage(_driver);
|
AssetsHelper.NavigateToAssetsPage(_driver);
|
||||||
@@ -53,16 +53,13 @@ public class AssetsPageTests : IDisposable
|
|||||||
_driver.ExecuteJavaScript($"$('tr[data-asset-id=\"{id}\"]').click()");
|
_driver.ExecuteJavaScript($"$('tr[data-asset-id=\"{id}\"]').click()");
|
||||||
AppHelper.AwaitVisible(_driver, By.Id("viewAssetModal"));
|
AppHelper.AwaitVisible(_driver, By.Id("viewAssetModal"));
|
||||||
_driver.FindElement(By.Name("Barcode"));
|
_driver.FindElement(By.Name("Barcode"));
|
||||||
bool noEmptyInputsFound = false;
|
var inputs = _driver.FindElements(By.CssSelector("#viewAssetModal input"));
|
||||||
try
|
|
||||||
{
|
|
||||||
_driver.FindElement(By.CssSelector("#viewAssetModal input[value=\"\"]"));
|
|
||||||
} catch (Exception)
|
|
||||||
{
|
|
||||||
noEmptyInputsFound = true;
|
|
||||||
}
|
|
||||||
Assert.True(noEmptyInputsFound);
|
|
||||||
|
|
||||||
|
var emptyInputs = inputs
|
||||||
|
.Where(i => string.IsNullOrWhiteSpace(i.GetAttribute("value")))
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
Assert.Empty(emptyInputs);
|
||||||
AssetsHelper.UpdateAsset(_driver, row);
|
AssetsHelper.UpdateAsset(_driver, row);
|
||||||
AssetsHelper.DeleteAsset(_driver, row);
|
AssetsHelper.DeleteAsset(_driver, row);
|
||||||
}
|
}
|
||||||
|
|||||||
77
tests/Berufsschule_HAM.E2ETests/Helper/UsersHelper.cs
Normal file
77
tests/Berufsschule_HAM.E2ETests/Helper/UsersHelper.cs
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
using OpenQA.Selenium;
|
||||||
|
using OpenQA.Selenium.Chrome;
|
||||||
|
using OpenQA.Selenium.Support.Extensions;
|
||||||
|
|
||||||
|
namespace Berufsschule_HAM.E2ETests.Helper;
|
||||||
|
|
||||||
|
public static class UsersHelper
|
||||||
|
{
|
||||||
|
public static void CreateUser(ChromeDriver driver)
|
||||||
|
{
|
||||||
|
IWebElement createUserButton = driver.FindElement(By.CssSelector("button[data-bs-target=\"#createModal\"]"));
|
||||||
|
createUserButton.Click();
|
||||||
|
AppHelper.AwaitVisible(driver, By.Id("createTitle"));
|
||||||
|
driver.FindElement(By.Id("createTitle")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("createName")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("createSurname")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("createBirthDate")).SendKeys("01.01.1900");
|
||||||
|
driver.FindElement(By.Id("createCity")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("createStreet")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("createStreetNr")).SendKeys("42");
|
||||||
|
|
||||||
|
driver.FindElement(By.Id("createWorkplace")).Click();
|
||||||
|
driver.ExecuteJavaScript("document.getElementById(\"createWorkplace\").children[1].selected = true");
|
||||||
|
driver.FindElement(By.Id("createGroups")).FindElement(By.CssSelector("*")).Click();
|
||||||
|
|
||||||
|
driver.FindElement(By.Id("createPassword")).SendKeys(AppHelper.GetRandomName() + "+42A");
|
||||||
|
IWebElement createButton = driver.FindElement(By.CssSelector("#createModal .modal-footer .btn-primary"));
|
||||||
|
createButton.Click();
|
||||||
|
Assert.True(AppHelper.TryRetryFindSuccessToast(driver));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void UpdateUser(ChromeDriver driver)
|
||||||
|
{
|
||||||
|
driver.ExecuteJavaScript($"$('tr.user-row:last-of-type .btn-warning').click()");
|
||||||
|
|
||||||
|
AppHelper.AwaitVisible(driver, By.Id("updateTitle"));
|
||||||
|
driver.FindElement(By.Id("updateTitle")).Clear();
|
||||||
|
driver.FindElement(By.Id("updateTitle")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("updateName")).Clear();
|
||||||
|
driver.FindElement(By.Id("updateName")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("updateSurname")).Clear();
|
||||||
|
driver.FindElement(By.Id("updateSurname")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("updateBirthdate")).Clear();
|
||||||
|
driver.FindElement(By.Id("updateBirthdate")).SendKeys("01.01.1900");
|
||||||
|
driver.FindElement(By.Id("updateAddressCity")).Clear();
|
||||||
|
driver.FindElement(By.Id("updateAddressCity")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("updateAddressStreet")).Clear();
|
||||||
|
driver.FindElement(By.Id("updateAddressStreet")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("updateAddressStreetNr")).Clear();
|
||||||
|
driver.FindElement(By.Id("updateAddressStreetNr")).SendKeys("42");
|
||||||
|
|
||||||
|
driver.FindElement(By.Id("updateWorkplace")).Click();
|
||||||
|
driver.ExecuteJavaScript("document.getElementById(\"updateWorkplace\").children[1].selected = true");
|
||||||
|
driver.FindElement(By.Id("updateGroups")).FindElement(By.CssSelector("*")).Click();
|
||||||
|
|
||||||
|
driver.FindElement(By.Id("updatePassword")).SendKeys(AppHelper.GetRandomName() + "+42A");
|
||||||
|
|
||||||
|
IWebElement updateButton = driver.FindElement(By.CssSelector("#updateModal .btn-warning"));
|
||||||
|
updateButton.Click();
|
||||||
|
Assert.True(AppHelper.TryRetryFindSuccessToast(driver));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void DeleteUser(ChromeDriver driver)
|
||||||
|
{
|
||||||
|
driver.ExecuteJavaScript($"$('tr.user-row:last-of-type .btn-danger').click()");
|
||||||
|
AppHelper.AwaitVisible(driver, By.Id("deleteModal"));
|
||||||
|
driver.FindElement(By.Id("deleteModal"));
|
||||||
|
driver.ExecuteJavaScript($"$('#deleteModal .btn-danger').click()");
|
||||||
|
Assert.True(AppHelper.TryRetryFindSuccessToast(driver));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void NavigateToUsersPage(ChromeDriver driver)
|
||||||
|
{
|
||||||
|
driver.Navigate().GoToUrl(new Uri(AppHelper.ServerUri, "/Home/Users"));
|
||||||
|
}
|
||||||
|
}
|
||||||
70
tests/Berufsschule_HAM.E2ETests/UsersPageTests.cs
Normal file
70
tests/Berufsschule_HAM.E2ETests/UsersPageTests.cs
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
using Berufsschule_HAM.E2ETests.Helper;
|
||||||
|
using OpenQA.Selenium;
|
||||||
|
using OpenQA.Selenium.Chrome;
|
||||||
|
using OpenQA.Selenium.Support.Extensions;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
|
namespace Berufsschule_HAM.E2ETests;
|
||||||
|
|
||||||
|
public class UsersPageTests : IDisposable
|
||||||
|
{
|
||||||
|
private readonly ChromeDriver _driver;
|
||||||
|
public Uri serverUri;
|
||||||
|
public string serverUrl;
|
||||||
|
public Process serverProcess;
|
||||||
|
|
||||||
|
public UsersPageTests()
|
||||||
|
{
|
||||||
|
serverUrl = AppHelper.ServerUrl;
|
||||||
|
serverUri = AppHelper.ServerUri;
|
||||||
|
Task<Process> app = AppHelper.StartApp(serverUrl);
|
||||||
|
_driver = AppHelper.GetChromeDriver();
|
||||||
|
serverProcess = app.Result;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void UsersPage_ShouldShowButton()
|
||||||
|
{
|
||||||
|
AppHelper.Login(_driver);
|
||||||
|
UsersHelper.NavigateToUsersPage(_driver);
|
||||||
|
_driver.FindElement(By.CssSelector("button[data-bs-target=\"#createModal\"]"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void UsersPage_ShouldShowCreateViewModal()
|
||||||
|
{
|
||||||
|
AppHelper.Login(_driver);
|
||||||
|
UsersHelper.NavigateToUsersPage(_driver);
|
||||||
|
_driver.FindElement(By.CssSelector("button[data-bs-target=\"#createModal\"]")).Click();
|
||||||
|
List<string> ids = ["createTitle", "createName", "createSurname", "createBirthDate", "createCity", "createStreet", "createStreetNr", "createWorkplace", "createGroups", "createPassword", "createPhotoFile", "createJpegPhoto", "createPhotoPreview"];
|
||||||
|
List<string> css = ["#createModal .btn-primary", "#createModal .btn-secondary"];
|
||||||
|
ids.ForEach(id => _driver.FindElement(By.Id(id)));
|
||||||
|
css.ForEach(selector => _driver.FindElement(By.CssSelector(selector)));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void UsersPage_ShouldCreateAndShowDetailAndUpdateAndDeleteUser()
|
||||||
|
{
|
||||||
|
AppHelper.Login(_driver);
|
||||||
|
UsersHelper.NavigateToUsersPage(_driver);
|
||||||
|
UsersHelper.CreateUser(_driver);
|
||||||
|
_driver.ExecuteJavaScript($"$('tr.user-row:last-of-type').click()");
|
||||||
|
AppHelper.AwaitVisible(_driver, By.Id("detailModal"));
|
||||||
|
var inputs = _driver.FindElements(By.CssSelector("#detailModal input"));
|
||||||
|
var emptyInputs = inputs
|
||||||
|
.Where(i => string.IsNullOrWhiteSpace(i.GetAttribute("value")))
|
||||||
|
.ToList();
|
||||||
|
Assert.Empty(emptyInputs);
|
||||||
|
_driver.ExecuteJavaScript($"$('#detailModal .btn-close').click()");
|
||||||
|
|
||||||
|
|
||||||
|
UsersHelper.UpdateUser(_driver);
|
||||||
|
UsersHelper.DeleteUser(_driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
_driver.Quit();
|
||||||
|
serverProcess.Kill();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user