using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Tango.MachineStudio.Common.Automation;
using TestStack.White;
using TestStack.White.Factory;
using TestStack.White.UIItems;
using TestStack.White.UIItems.Finders;
using TestStack.White.UIItems.ListBoxItems;
using TestStack.White.UIItems.WindowItems;
using TestStack.White.WindowsAPI;
namespace Tango.UnitTesting.MachineStudio
{
public static class AutomationExtensions
{
public static T GetByAutomationId<T>(this Window window, String id) where T : IUIItem
{
return window.Get<T>(SearchCriteria.ByAutomationId(id));
}
}
[TestClass]
[TestCategory("Machine Studio")]
public class MachineStudio_TST
{
private Window GetMachineStudioWindow()
{
var app = Application.AttachOrLaunch(new System.Diagnostics.ProcessStartInfo() { FileName = Helper.GetMachineStudioPath() });
var window = app.GetWindow("Tango", InitializeOption.NoCache);
return window;
}
private Window GetCurrentDialogWindow()
{
var app = Application.AttachOrLaunch(new System.Diagnostics.ProcessStartInfo() { FileName = Helper.GetMachineStudioPath() });
return app.GetWindows().LastOrDefault(x => x.IsModal);
}
private void Kill(int delay = 4000)
{
Thread.Sleep(delay);
var app = Application.AttachOrLaunch(new System.Diagnostics.ProcessStartInfo() { FileName = Helper.GetMachineStudioPath() });
app.Kill();
}
private void Wait(int delay = 1000)
{
Thread.Sleep(delay);
}
private void ConfirmMessageBox()
{
Wait();
var dialog = GetCurrentDialogWindow();
if (dialog != null)
{
dialog.Keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.RETURN);
}
}
[TestMethod]
public void Login()
{
var window = GetMachineStudioWindow();
window.WaitTill(() => window.GetByAutomationId<Button>(UI.LoginButton) != null);
var btnLogin = window.GetByAutomationId<Button>(UI.LoginButton);
Thread.Sleep(1000);
btnLogin.Click();
}
[TestMethod]
public void Start_Developer_Module_Create_And_Delete_Job()
{
Login();
var window = GetMachineStudioWindow();
window.WaitTill(() => window.Get<Button>(SearchCriteria.ByAutomationId("Developer")) != null);
Wait(2000);
window.Get<Button>(SearchCriteria.ByAutomationId("Developer")).Click();
Wait();
window.GetByAutomationId<Button>(Developer.NewJobButton).Click();
Wait();
var jobsGrid = window.GetByAutomationId<ListView>(Developer.JobsDataGrid);
int jobsCount = jobsGrid.Items.Count;
var dialog = GetCurrentDialogWindow();
dialog.Keyboard.Enter("Unit Test Job");
Wait();
dialog.Keyboard.PressSpecialKey(KeyboardInput.SpecialKeys.RETURN);
Assert.AreEqual(jobsCount, jobsGrid.Items.Count - 1);
Wait();
var segmentsListBox = window.GetByAutomationId<ListBox>(Developer.SegmentsListBox);
int segmentsCount = segmentsListBox.Items.Count;
window.GetByAutomationId<Button>(Developer.AddSegmentButton).Click();
Assert.AreEqual(segmentsCount, segmentsListBox.Items.Count - 1);
window.GetByAutomationId<ListBox>(Developer.SegmentsListBox).Items[1].Click();
window.GetByAutomationId<Button>(Developer.AddBrushStopButton).Click();
window.GetByAutomationId<Button>(Developer.AddBrushStopButton).Click();
window.GetByAutomationId<Button>(Developer.SaveJobButton).Click();
Wait(2000);
window.GetByAutomationId<Button>(Developer.ToJobsButton).Click();
ConfirmMessageBox();
Wait();
window.GetByAutomationId<Button>(Developer.DeleteJobButton).Click();
ConfirmMessageBox();
Assert.AreEqual(jobsCount, jobsGrid.Items.Count);
Kill();
}
}
}