Example #1
0
        public void CheckTaskCreation()
        {
            var ids = this.App.Preconditions.CreateOrderWorkpieceWorkplan();

            this.App.Ui.OrdersMain.OpenWorkpieceDetailsDirectly(ids[GeneralData.ProjectManagerEnitityTypes.Workpiece]);

            var task = this.TaskGenerationRule.Generate();

            this.App.Ui.OrdersWorkpiece.AddNewTask(task);
            var tasks     = this.App.Ui.OrdersWorkpiece.GetTasksRecords();
            var addedTask = tasks.First(t => t.Name.Equals(task.Name));

            Assert.Multiple(
                () =>
            {
                Assert.True(tasks.Count.Equals(1), "Task wasn't created or more than 1 tasks were created");
                Assert.True(
                    ServiceMethods.ConvertDurationFromTimeFormatToSeconds(addedTask.DurationPerWorkpiece)
                    .Equals(task.DurationPerWorkpiece),
                    $"Duration per workpieces is incorrect. Expected '{task.DurationPerWorkpiece}' but actual '{ServiceMethods.ConvertDurationFromTimeFormatToSeconds(addedTask.DurationPerWorkpiece)}'");
                Assert.True(
                    ServiceMethods.ConvertDurationFromTimeFormatToSeconds(addedTask.DurationInTotal)
                    .Equals(task.DurationPerTotal),
                    $"Duration per workpieces is incorrect. Expected '{task.DurationPerTotal}' but actual '{ServiceMethods.ConvertDurationFromTimeFormatToSeconds(addedTask.DurationInTotal)}'");
                Assert.True(
                    addedTask.Start.Equals(task.StartDate.ToString("MM/dd/yyyy")),
                    $"Start date is incorrect. Expected '{task.StartDate:MM/dd/yyyy}' but actual '{addedTask.Start}'");
                Assert.True(
                    addedTask.End.Equals(task.EndDate.ToString("MM/dd/yyyy")),
                    $"End date is incorrrect. Expected '{task.EndDate:MM/dd/yyyy}' but actual '{addedTask.End}'");

                var machineName = this.App.GraphApi.ProjectManager.GetMachine(task.MachineId).name;
                Assert.True(
                    addedTask.Machine.Equals(machineName),
                    $"Machine name is incorrect. Expected '{machineName}' but actual was '{addedTask.Machine}'");
            });

            // Check input fields states were reset
            var states = this.App.Ui.OrdersWorkpiece.GetTaskInputFieldsStates();

            foreach (var state in states)
            {
                if (!state.Key.Equals(WorkpieceDetails.TaskFields.Machine))
                {
                    Assert.True(
                        state.Value.Equals(string.Empty),
                        $"Field '{state.Key.ToString()}' is not in valid state. Actual state is '{state.Value}' but expected empty");
                }
                else
                {
                    Assert.True(
                        state.Value.Equals("Select Machine"),
                        $"Field '{state.Key.ToString()}' is not in valid state. Actual state is '{state.Value}' but expected 'Select Machine'");
                }
            }
        }
        public void MachineInformation()
        {
            #region Get test data

            string machineToCheck = "Machine 1"; //ToDo: Check for all machines after implementing task sorting logic

            var machine         = App.GraphApi.ProjectManager.GetMachines().First(m => m.name.Equals(machineToCheck));
            var apiMachineTasks = App.GraphApi.ProjectManager.GetMachineTasks(machine.id);

            apiMachineTasks.Sort((x, y) => DateTime.Compare(x.StartDate, y.StartDate));

            //Get current task

            var currentTask = this.GetCurrentTask(apiMachineTasks);

            //Get upcoming tasks
            var upcomingTasks = this.GetUpcomingTasks(apiMachineTasks, currentTask);

            #endregion

            var machineInfo = App.Ui.Machines.GetMachinesInfo(true, 50).First(m => m.Machine.Equals(machineToCheck));

            var workplanId = App.Db.ProjectManager.GetTask(currentTask.Id).WorkplanId;
            var workplan   = App.Db.ProjectManager.GetWorkplan(workplanId);
            var workpiece  = App.Db.ProjectManager.GetWorkpiece(workplan.WorkpieceId);

            Assert.Multiple(
                () =>
            {
                Assert.True(machineInfo.WorkpieceName.Equals(workpiece.Name), $"Workpiece name is incorrect. Expected: {workpiece.Name}. Actual: {machineInfo.WorkpieceName}");
                Assert.True(machineInfo.CurrentTask.Equals(currentTask.Name), $"Current is incorrect. Expected: {currentTask.Name}. Actual: {machineInfo.CurrentTask}");
                Assert.True(machineInfo.EstimatedEnd.Equals(currentTask.EndDate.ToString("MM/dd/yyyy") + " 12:00:00 AM"), "Estimated end time is wrong");

                var estimatedDurationActual =
                    ServiceMethods.ConvertDurationFromTimeFormatToSeconds(machineInfo.EstimatedDuration);

                Assert.True(
                    estimatedDurationActual.Equals(
                        currentTask.DurationPerTotal),
                    $"Estimated end time is wrong. Expected {currentTask.DurationPerTotal}. Actual {estimatedDurationActual}");
                Assert.True(
                    upcomingTasks.First().Value.Select(e => e.Name).ToList()
                    .Contains(machineInfo.UpcomingWorkpiece));
            });
        }
        public void CheckMachinesDetailsInformation()
        {
            #region Get test data

            string machineToCheck = "Machine 2";

            var machine         = App.GraphApi.ProjectManager.GetMachines().First(m => m.name.Equals(machineToCheck));
            var apiMachineTasks = App.GraphApi.ProjectManager.GetMachineTasks(machine.id);

            apiMachineTasks.Sort((x, y) => DateTime.Compare(x.StartDate, y.StartDate));

            //Get current task

            var currentTask = this.GetCurrentTask(apiMachineTasks);

            //Get upcoming tasks
            var upcomingTasks = this.GetUpcomingTasks(apiMachineTasks, currentTask);

            #endregion

            App.Ui.Machines.ClickOnMachine(machineToCheck);

            var workpiece     = this.GetWorkpieceByTaskId(currentTask.Id);
            var uiCurrentTask = App.Ui.Machines.GetCurrentTaskInformationFromMachineDetails();


            Assert.Multiple(
                () =>
            {
                Assert.True(uiCurrentTask.CurrentTask.Equals(currentTask.Name), $"Task name is incorrect. Expected: {currentTask.Name}. Actual: {uiCurrentTask.CurrentTask}");
                Assert.True(uiCurrentTask.WorkpieceName.Equals(workpiece.Name), $"Workpiece name is incorrect. Expected: {workpiece.Name}. Actual: {uiCurrentTask.WorkpieceName}");
                Assert.True(uiCurrentTask.ActualStart.Equals(currentTask.StartDate.ToString("MM/dd/yyyy") + " 12:00:00 AM"), "Actual start time is wrong");
                Assert.True(uiCurrentTask.EstimatedEnd.Equals(currentTask.EndDate.ToString("MM/dd/yyyy") + " 12:00:00 AM"), "Estimated end time is wrong");

                var estimatedDurationActual =
                    ServiceMethods.ConvertDurationFromTimeFormatToSeconds(uiCurrentTask.EstimatedDuration);

                Assert.True(
                    estimatedDurationActual.Equals(
                        currentTask.DurationPerTotal),
                    $"Estimated end time is wrong. Expected {currentTask.DurationPerTotal}. Actual {estimatedDurationActual}");
                Assert.True(
                    uiCurrentTask.DeliveryDate.Equals(workpiece.DeliveryDate.ToString("MM/dd/yyyy")),
                    "Delivery date is wrong");
            });


            // Check 'Next tasks' section
            var expectedUpcomingTasks = DateTasksDictionaryToList(upcomingTasks);

            var uiUpcomingTasks = App.Ui.Machines.GetUpcomingTasksInformationFromMachineDetails(true, 60);

            Assert.True(expectedUpcomingTasks.Count.Equals(uiUpcomingTasks.Count), $"Incorrect number of upcoming tasks is displayed. Expected {expectedUpcomingTasks.Count} but actual {uiUpcomingTasks.Count}");

            foreach (var task in uiUpcomingTasks)
            {
                var expectedTask = expectedUpcomingTasks.First(t => t.Name.Equals(task.UpcomingWorkpiece) &&
                                                               (t.StartDate.ToString("MM/dd/yyyy") + " 12:00:00 AM").Equals(task.ActualStart));

                workpiece = this.GetWorkpieceByTaskId(expectedTask.Id);

                var estimatedDurationActual =
                    ServiceMethods.ConvertDurationFromTimeFormatToSeconds(task.EstimatedDuration);

                bool valid = task.WorkpieceName.Equals(workpiece.Name) &&
                             (expectedTask.StartDate.ToString("MM/dd/yyyy") + " 12:00:00 AM").Equals(
                    task.ActualStart) && expectedTask.DurationPerTotal.Equals(estimatedDurationActual) &&
                             (expectedTask.EndDate.ToString("MM/dd/yyyy") + " 12:00:00 AM").Equals(task.EstimatedEnd) &&
                             workpiece.DeliveryDate.ToString("MM/dd/yyyy").Equals(task.DeliveryDate);

                Assert.True(valid, "'Next tasks' are not properly displayed");
            }

            // Check tasks order
            bool validOrder = true;
            for (int i = 1; i < uiUpcomingTasks.Count; i++)
            {
                validOrder = DateTime.Parse(uiUpcomingTasks[i].ActualStart) >= DateTime.Parse(uiUpcomingTasks[i - 1].ActualStart);
                if (!validOrder)
                {
                    break;
                }
            }

            Assert.True(validOrder, "'Next tasks' are not displayed in the correct order (by Planned Start)");
        }