PIbd-42_Kashin_M.I_CPO_Cour.../EmployeeManagmentTests/UI/PhysicalPersonWindowTests.cs
2024-12-09 23:46:32 +04:00

189 lines
9.7 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using EmployeeManagmentView.Employee;
using FlaUI.Core;
using FlaUI.Core.AutomationElements;
using FlaUI.UIA3;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;
namespace EmployeeManagmentTests.UI
{
[Collection("Sequential")]
public class PhysicalPersonWindowTests
{
private readonly Application _application;
private readonly AutomationBase _automation;
public PhysicalPersonWindowTests()
{
_automation = new UIA3Automation();
_application = Application.Launch("C:\\Users\\kashi\\Desktop\\Univer\\7\\КПО\\Project\\EmployeeManagmentView\\bin\\Debug\\net8.0-windows\\EmployeeManagmentView.exe");
}
[Fact]
public void TestOpenAddPhysicalPersonManagementWindow()
{
var mainWindow = _application.GetMainWindow(_automation);
var physicalPersonButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с физ. лицами")).AsButton();
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(physicalPersonButton.IsEnabled, "Работа с физ. лицами");
physicalPersonButton.Invoke();
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
var physicalPersonManagementWindow = WaitForWindow("Управление физическими лицами");
Assert.NotNull(physicalPersonManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(physicalPersonManagementWindow.IsEnabled, "Управление физическими лицами");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(physicalPersonButton.IsEnabled, "Добавление физического лица");
physicalPersonButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var physicalPersonAddWindow = WaitForWindow("Добавление физического лица");
Assert.NotNull(physicalPersonManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(physicalPersonManagementWindow.IsEnabled, "Добавление физического лица");
// Закрытие окон
physicalPersonAddWindow?.Close();
physicalPersonManagementWindow?.Close();
mainWindow?.Close();
}
[Fact]
public void TestOpenDeletePhysicalPersonManagementWindow()
{
var mainWindow = _application.GetMainWindow(_automation);
var physicalPersonButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с физ. лицами")).AsButton();
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(physicalPersonButton.IsEnabled, "Работа с физ. лицами");
physicalPersonButton.Invoke();
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
var physicalPersonManagementWindow = WaitForWindow("Управление физическими лицами");
Assert.NotNull(physicalPersonManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(physicalPersonManagementWindow.IsEnabled, "Управление физическими лицами");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(physicalPersonButton.IsEnabled, "Удаление физического лица");
physicalPersonButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var physicalPersonAddWindow = WaitForWindow("Удаление физического лица");
Assert.NotNull(physicalPersonManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(physicalPersonManagementWindow.IsEnabled, "Удаление физического лица");
// Закрытие окон
physicalPersonAddWindow?.Close();
physicalPersonManagementWindow?.Close();
mainWindow?.Close();
}
[Fact]
public void TestOpenEditPhysicalPersonManagementWindow()
{
var mainWindow = _application.GetMainWindow(_automation);
var physicalPersonButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с физ. лицами")).AsButton();
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(physicalPersonButton.IsEnabled, "Работа с физ. лицами");
physicalPersonButton.Invoke();
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
var physicalPersonManagementWindow = WaitForWindow("Управление физическими лицами");
Assert.NotNull(physicalPersonManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(physicalPersonManagementWindow.IsEnabled, "Управление физическими лицами");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(physicalPersonButton.IsEnabled, "Редактирование физического лица");
physicalPersonButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var physicalPersonAddWindow = WaitForWindow("Редактирование физического лица");
Assert.NotNull(physicalPersonManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(physicalPersonManagementWindow.IsEnabled, "Редактирование физического лица");
// Закрытие окон
physicalPersonAddWindow?.Close();
physicalPersonManagementWindow?.Close();
mainWindow?.Close();
}
[Fact]
public void TestOpenViewPhysicalPersonManagementWindow()
{
var mainWindow = _application.GetMainWindow(_automation);
var physicalPersonButton = mainWindow.FindFirstDescendant(cf => cf.ByText("Работа с физ. лицами")).AsButton();
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(physicalPersonButton.IsEnabled, "Работа с физ. лицами");
physicalPersonButton.Invoke();
// Ждем появления окна "Работа с физ. лицами" с тайм-аутом
var physicalPersonManagementWindow = WaitForWindow("Управление физическими лицами");
Assert.NotNull(physicalPersonManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(physicalPersonManagementWindow.IsEnabled, "Управление физическими лицами");
// Проверяем, что кнопка доступна и выполняем клик
Assert.True(physicalPersonButton.IsEnabled, "Просмотр физического лица");
physicalPersonButton.Invoke();
// Ждем появления окна "Добавление физ.лица" с тайм-аутом
var physicalPersonAddWindow = WaitForWindow("Просмотр физического лица");
Assert.NotNull(physicalPersonManagementWindow);
// Проверяем, что окно доступно и готово к взаимодействию
Assert.True(physicalPersonManagementWindow.IsEnabled, "Просмотр физического лица");
// Закрытие окон
physicalPersonAddWindow?.Close();
physicalPersonManagementWindow?.Close();
mainWindow?.Close();
}
private Window WaitForWindow(string windowTitle, int timeout = 10000) // Увеличен таймаут
{
var startTime = DateTime.Now;
while ((DateTime.Now - startTime).TotalMilliseconds < timeout)
{
var window = _application.GetAllTopLevelWindows(_automation)
.FirstOrDefault(w => w.Title.Contains(windowTitle));
if (window != null && window.IsEnabled)
{
return window;
}
Thread.Sleep(200); // Увеличена пауза между попытками
}
return null; // Если окно не найдено в пределах тайм-аута
}
public void Dispose()
{
_application.Close();
_automation.Dispose();
}
}
}