public async Task CreatingNewCustomersValidations() { var workerId = await CreateWorker(); await CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)); var modal = GoToTomorrowCalendarPage() .OpenCalendarModalAtHour(0, 12); modal.AddNewCustomer("Перчатка бесконечности") .CheckCustomerNameInEditor("Перчатка бесконечности") .SetCustomerNameInEditor("") .ClickSave(); modal.CheckCustomerNameErrorValidation() .CheckCustomerPhoneErrorValidation() .SetCustomerDiscount(10.1m) .ClickSave(); modal.CheckCustomerNameErrorValidation() .CheckCustomerPhoneErrorValidation(); var workerCalendarDay = await ReadWorkerCalendarDay(workerId, DateHelper.Tomorrow()); workerCalendarDay.Records.Length.Should().Be(0); }
public async Task DateSelectorValidations() { var workerId = await CreateWorker(); await CreateOneWorkingDay(workerId, DateTime.Now.AddDays(-1), TimePeriod.CreateByHours(10, 16)); await CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)); var page = GoToTomorrowCalendarPage(); var modal = page.OpenCalendarModalAtHour(0, 12); modal.CheckDate(DateHelper.Tomorrow()); modal.SetDate(DateTime.Now.AddDays(366)) .ClickSave() .CheckDateValidation("Дата слишком далеко в будущем", Level.Error); modal.SetDate("31.02.2019") .ClickSave() .CheckDateValidation("", Level.Error); modal.SetDate(DateTime.Now.AddDays(-1)) .CheckDateValidation("Дата в прошлом", Level.Warning) .SaveAndClose(); page = page.GoToPrevDay().GoToPrevDay(); modal = page.CheckRecordsCount(0, 1) .ChangeRecord(0, 0); modal.SetDate(DateTime.Now.AddDays(365)) .CheckTimeValidation("Попадет на нерабочее время сотрудника", Level.Warning) .SaveAndClose(); await CheckSingleRecord(workerId, DateTime.Now.AddDays(365), TimePeriod.CreateByHours(12, 13)); }
public async Task AddServicesToExistingRecord() { var withPrice = await GetServicesCards(count : 2); var withoutPrice = await GetServiceCardWithoutPrice(); var workerId = await CreateWorker(); await CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)); await CreateSingleRecord(workerId, DateHelper.Tomorrow(), new ServiceCalendarRecord { Period = TimePeriod.CreateByHours(13, 14), ProductIds = new [] { withPrice[0].Id.Value } }); var page = GoToTomorrowCalendarPage(); page.ChangeRecord(0, 0) .CheckFooterTotal(withPrice[0].PricesInfo.SellPrice) .Close(); var day = await ReadWorkerCalendarDay(workerId, DateHelper.Tomorrow()); var record = day.Records.Single(); record.ProductIds = record.ProductIds.Concat(new[] { withoutPrice.Id.Value, withPrice[1].Id.Value }).ToArray(); await serviceCalendarRepository.WriteAsync(shop.Id, day); page = page.Refresh <CalendarPage>(); page.ChangeRecord(0, 0).CheckFooterTotal(withPrice.Sum(x => x.PricesInfo.SellPrice)); }
public async Task RecordCancellation() { var workerId = await CreateWorker(); await CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)); await CreateSingleRecord(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(13, 14)); var page = GoToTomorrowCalendarPage(); page.ShowRecordTooltip(0, 0) .ClickCancel(); var cancelModal = page.WaitModal <CalendarRecordCancelModal>(); cancelModal.ClickCancelRecord(false) .CheckValidationMessage("Укажите причину отмены") .SelectNotComeReason() .ClickCancelRecord(); page.CheckRecordsCount(0, 0); var record = await ReadSingleRecordTomorrow(workerId); record.RecordStatus.Should().Be(RecordStatus.Canceled); record.CustomerStatus.Should().Be(CustomerStatus.NotCome); }
public async Task UnionNightWorkingDays() { var worker = await CreateWorker(); await BuildOneWorkingDay(worker.Id, DateHelper.GetFirstDayOfMonth(Now), TimePeriod.CreateByHours(20, 24)); await BuildOneWorkingDay(worker.Id, DateHelper.GetFirstDayOfMonth(Now).AddDays(1), TimePeriod.CreateByHours(0, 10), TimePeriod.CreateByHours(20, 24)); await BuildOneWorkingDay(worker.Id, DateHelper.GetFirstDayOfMonth(Now).AddDays(2), TimePeriod.CreateByHours(0, 10)); var page = LoadMainPage().GoToWorkerListPage().OpenCalendar(); var editingView = page.OpenEditor(0, 1).GetEditingView(); editingView.SetTimeRange("10:00", "20:00", 1); editingView.ClickSave(); page.GetCell(0, 0).WaitFilled(); page.GetCell(0, 1).WaitFilled(); page.GetCell(0, 2).WaitFilled(); page.CheckSingleWorkerCounters("38 ч", "3 дн"); page.OpenEditor(0, 0).GetInfoView().CheckStartEndTime("20:00", "24:00"); page.OpenEditor(0, 1).GetInfoView().CheckStartEndTime("00:00", "24:00"); page.OpenEditor(0, 2).GetInfoView().CheckStartEndTime("00:00", "10:00"); }
public async Task FillingRecordFields() { const string customerName = "Иван"; const string commentMessage = "Comment message"; var service = await GetServiceCard(); var workerId = await CreateWorker(); var customerId = await CreateCustomer(customerName); await CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)); await CreateSingleRecord(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(13, 14)); var modal = GoToTomorrowCalendarPage() .ChangeRecord(0, 0); modal.SelectCustomerByName(customerName) .SelectServicesByNames(service.Name) .SetTimeRange("14:00", "15:00") .SetComment(commentMessage) .SaveAndClose(); var record = await ReadSingleRecordTomorrow(workerId); record.CustomerId.Should().Be(customerId); record.Comment.Should().BeEquivalentTo(commentMessage); record.ProductIds.Single().Should().Be(service.Id.Value); record.Period.Should().BeEquivalentTo(TimePeriod.CreateByHours(14, 15)); }
public async Task DeleteMiddlePeriod() { var periods = new[] { TimePeriod.CreateByHours(10, 11), TimePeriod.CreateByHours(12, 13), TimePeriod.CreateByHours(14, 15), TimePeriod.CreateByHours(16, 17), TimePeriod.CreateByHours(18, 19) }; var expectedPeriods = periods.Take(2).Concat(periods.Skip(3)).ToArray(); var worker = await CreateWorker(); await BuildOneWorkingDay(worker.Id, DateHelper.GetFirstDayOfMonth(Now), periods); var page = LoadMainPage().GoToWorkerListPage().OpenCalendar(); var editor = page.OpenEditor(0, 0).GetEditingView(); editor.TimeRangeLine.ElementAt(2).DeleteLink.Click(); editor.TimeRangeLine .Select(x => x.ConvertToTimePeriod()) .Wait() .ShouldBeEquivalentTo(expectedPeriods); editor.ClickSave(); var day = await workerScheduleRepository.ReadWorkerCalendarDayAsync(shop.Id, DateHelper.GetFirstDayOfMonth(Now), worker.Id); day.Records.Select(x => x.Period).Should().BeEquivalentTo(expectedPeriods); }
public async Task PeriodicClearingRemoveAll() { var worker = await CreateWorker(); await BuildOneWorkingDay(worker.Id, DateHelper.GetLastDayOfMonth(Now).AddDays(-3), TimePeriod.CreateByHours(21, 23)); await BuildOneWorkingDay(worker.Id, DateHelper.GetLastDayOfMonth(Now), TimePeriod.CreateByHours(20, 24)); await BuildOneWorkingDay(worker.Id, DateHelper.GetFirstDayOfNextMonth(Now), TimePeriod.CreateByHours(0, 11), TimePeriod.CreateByHours(20, 23)); var page = LoadMainPage().GoToWorkerListPage().OpenCalendar(); var editingView = page.OpenEditor(0, 5).GetEditingView(); editingView.SetTimeRange("", "", 0); editingView.SetTimeRange("", "", 1); editingView.SetTimeRange("", "", 2); editingView.SetTimeRange("", "", 3); editingView.SetTimeRange("", "", 4); editingView.SetCalendarMode(CalendarFillingMode.FiveByTwo); editingView.ClickSave(); CheckWholeMonth(page, Now, CalendarFillingMode.Weekend); var month = await workerScheduleRepository.ReadShopCalendarMonthAsync(shop.Id, Now); month.ShopCalendarDays .SelectMany(x => x.WorkerCalendarDays) .Where(x => x.WorkerId == worker.Id) .All(x => x.Records.Length == 0) .Should() .BeTrue(); var nextMonthFirstDay = await workerScheduleRepository.ReadWorkerCalendarDayAsync(shop.Id, DateHelper.GetFirstDayOfNextMonth(Now), worker.Id); nextMonthFirstDay.Records.Select(x => x.Period).Should().BeEquivalentTo(TimePeriod.CreateByHours(20, 23)); }
public async Task CreateRecordWithJoiningTwoPeriods() { var worker = await CreateWorker(); await BuildOneWorkingDay(worker.Id, Now.Date, TimePeriod.CreateByHours(10, 12), TimePeriod.CreateByHours(13, 21)); var page = LoadMainPage().GoToWorkerListPage().OpenCalendar(); var cellIdx = Now.Day - 1; page.GetCell(0, cellIdx).WaitFilled(); var editingView = page.OpenEditor(0, cellIdx).GetEditingView(); editingView.SetTimeRange("11:00", "13:35", 4); editingView.ClickSave(); var workerDay = await workerScheduleRepository.ReadWorkerCalendarDayAsync(shop.Id, Now.Date, worker.Id); workerDay.Records.Should().BeEquivalentTo( new WorkerScheduleRecord { Period = TimePeriod.CreateByHours(10, 21) } ); }
public async Task CreateSingleDayTwoRecordsShouldBeVisible() { const string startTime0 = "10:00"; const string endTime0 = "12:00"; const string startTime1 = "13:00"; const string endTime1 = "21:00"; var worker = await CreateWorker(); var page = LoadMainPage().GoToWorkerListPage(); page.OpenCalendar(); var cellIdx = Now.Day - 1; page.GetCell(0, cellIdx).WaitNotFilled(); var editingView = page.OpenEditor(0, cellIdx).GetEditingView(); editingView.SetTimeRange(startTime0, endTime0); editingView.SetTimeRange(startTime1, endTime1, 1); editingView.ClickSave(); var workerDay = await workerScheduleRepository.ReadWorkerCalendarDayAsync(shop.Id, Now.Date, worker.Id); workerDay.Records.Should().BeEquivalentTo( new WorkerScheduleRecord { Period = TimePeriod.CreateByHours(10, 12) }, new WorkerScheduleRecord { Period = TimePeriod.CreateByHours(13, 21) } ); }
public async Task ChangeCustomerToNewWithSameName() { const string customerName = "Иван"; const string newCustomerName = "Петр из ZZ Top 1969"; const string newCustomerPhone = "+7 012 345-67-89"; const string newCustomerPhone2 = "7999 999-99-99"; var workerId = await CreateWorker(); await CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)); var customerId = await CreateCustomer(customerName); await CreateSingleRecord(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(12, 13), customerId); var page = GoToTomorrowCalendarPage(); var modal = page.ChangeRecord(0, 0); modal.EraseCustomer() .AddNewCustomer(newCustomerName) .SaveAndClose(); (await customerRepository.ReadByOrganizationAsync(shop.OrganizationId)) .Select(x => x.Name) .Should() .BeEquivalentTo(customerName, newCustomerName); page.CheckNameOnRecord(newCustomerName, 0, 0); modal = page.ChangeRecord(0, 0); modal.CheckCustomerName(newCustomerName) .EraseCustomer() .AddNewCustomer(newCustomerPhone) .SaveAndClose(); var customerWithPhone = (await ReadCustomersByOrganisation()).Single(x => !string.IsNullOrEmpty(x.Phone)); customerWithPhone.Phone.Should().BeEquivalentTo(PhoneDbFormat(newCustomerPhone)); page.CheckNameOnRecord(newCustomerPhone, 0, 0); modal = page.ChangeRecord(0, 0); modal.CheckCustomerPhone(newCustomerPhone) .EraseCustomer() .SearchCustomer(newCustomerName) .CheckSuggestedCustomers(newCustomerName) .AddNewCustomer(newCustomerName) .CheckCustomerNameInEditor(newCustomerName) .SetCustomerPhone(newCustomerPhone2.Substring(1)) .SaveAndClose(); var customersWithPhone = (await ReadCustomersByOrganisation()).Where(x => !string.IsNullOrEmpty(x.Phone)); var lastCustomer = customersWithPhone.Single(x => x.Phone.Equals(PhoneDbFormat(newCustomerPhone2))); var record = await ReadSingleRecordTomorrow(workerId); record.CustomerId.Should().Be(lastCustomer.Id); }
public async Task CreateRecordAtLastHour() { var workerId = await CreateWorker(); var modal = GoToTomorrowCalendarPage() .OpenCalendarModalAtHour(0, 23); modal.CheckTimeRange("23:00", "24:00") .SaveAndClose(); await CheckSingleRecord(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(23, 24)); }
public override void SetUp() { base.SetUp(); products = marketApiClient.Products.GetAll(shop.Id).Result; serviceCard = products.First(x => x.ProductCategory == ProductCategory.Service); workerId = CreateWorker().Result; CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)).Wait(); CreateSingleRecord(workerId, DateHelper.Tomorrow(), new ServiceCalendarRecord { Period = TimePeriod.CreateByHours(13, 14), ProductIds = new [] { serviceCard.Id.Value } }).Wait(); }
public async Task ChangeWorkerInputValidation() { var workerId = await CreateWorker(); await CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)); await CreateSingleRecord(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(12, 13)); var modal = GoToTomorrowCalendarPage() .ChangeRecord(0, 0); modal.EraseWorker() .ClickSave() .CheckWorkerInputInvalid(); }
public async Task ExtendNightPeriodAndAddOtherShouldRepeatOtherOnly() { var worker = await CreateWorker(); await BuildOneWorkingDay(worker.Id, DateHelper.GetFirstDayOfMonth(Now), TimePeriod.CreateByHours(20, 24)); await BuildOneWorkingDay(worker.Id, DateHelper.GetFirstDayOfMonth(Now).AddDays(1), TimePeriod.CreateByHours(0, 10)); var page = LoadMainPage().GoToWorkerListPage().OpenCalendar(); var editingView = page.OpenEditor(0, 1).GetEditingView(); editingView.SetTimeRange("10:00", "11:00"); editingView.SetTimeRange("12:00", "13:00", 1); editingView.SetCalendarMode(CalendarFillingMode.TwoByTwo); editingView.ClickSave(); page.GetCell(0, 0).WaitFilled(); CheckMonthFor2By2From(page, DateHelper.GetFirstDayOfMonth(Now).AddDays(1)); var startDate = DateHelper.GetFirstDayOfMonth(Now).AddDays(1); var editedDay = await workerScheduleRepository.ReadWorkerCalendarDayAsync(shop.Id, startDate, worker.Id); editedDay.Records .Select(x => x.Period) .Count(p => p == TimePeriod.CreateByHours(0, 11)) .Should().Be(1); editedDay.Records .Select(x => x.Period) .Count(p => p == TimePeriod.CreateByHours(12, 13)) .Should().Be(1); for (var date = startDate.AddDays(1); date <= DateHelper.GetLastDayOfMonth(Now); date = date.AddDays(1)) { var day = await workerScheduleRepository.ReadWorkerCalendarDayAsync(shop.Id, date, worker.Id); var shouldBeEmpty = IsWeekend(CalendarFillingMode.TwoByTwo, date, date.Day - startDate.Day); day.Records.Length.Should().Be(shouldBeEmpty ? 0 : 2); if (!shouldBeEmpty) { day.Records.Select(x => x.Period).Should().BeEquivalentTo( TimePeriod.CreateByHours(10, 11), TimePeriod.CreateByHours(12, 13) ); } } }
public async Task WriteThenRead() { var shopId = Guid.NewGuid(); var workerId = Guid.NewGuid(); var record = new ServiceCalendarRecord { Period = TimePeriod.CreateByHours(12, 13), Comment = "test" }; record.Id = await serviceCalendarApiClient.CreateRecord(shopId, DateTime.Now, workerId, record); var day = await serviceCalendarApiClient.GetShopDay(shopId, DateTime.Now); day.WorkerCalendarDays.Single().Records.Single().Should().BeEquivalentTo(record); }
public async Task EdgeTimesInPeriod(string startTime, string endTime, int expectedStart, int expectedEnd) { var worker = await CreateWorker(); var page = LoadMainPage().GoToWorkerListPage().OpenCalendar(); var editingView = page.OpenEditor(0, 0).GetEditingView(); editingView.SetTimeRange(startTime, endTime); editingView.ClickSave(); var createdDay = await workerScheduleRepository.ReadWorkerCalendarDayAsync(shop.Id, DateHelper.GetFirstDayOfMonth(Now), worker.Id); createdDay.Records.Length.Should().Be(1); createdDay.Records.First().Period.Should().BeEquivalentTo(TimePeriod.CreateByHours(expectedStart, expectedEnd)); }
public async Task WorkingCalendarFilter() { await CreateWorker(); var workerId = await CreateWorker(); await CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)); var page = GoToTomorrowCalendarPage(); page.CheckWorkingFilter(WorkerFilter.AllWorkers) .CheckWorkerColumnCount(2) .SetWorkingFilter(WorkerFilter.OnlyWithWorkingDays) .CheckWorkerColumnCount(1); }
public async Task CreateRecordAndCancelCustomerCreation() { var workerId = await CreateWorker(); await CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)); var modal = GoToTomorrowCalendarPage() .OpenCalendarModalAtHour(0, 12); modal.AddNewCustomer("Петр") .CancelAddingNewCustomer() .SaveAndClose(); (await ReadSingleRecordTomorrow(workerId)).CustomerId.Should().BeNull(); }
public async Task PeriodicNightPeriodDoesNotAffectNextMonth() { var worker = await CreateWorker(); await BuildOneWorkingDay(worker.Id, DateHelper.GetFirstDayOfNextMonth(Now), TimePeriod.CreateByHours(20, 23)); var page = LoadMainPage().GoToWorkerListPage().OpenCalendar(); var editingView = page.OpenEditor(0, DateHelper.GetLastDayOfMonth(Now).Day - 2).GetEditingView(); editingView.SetTimeRange("21:00", "10:00"); editingView.SetCalendarMode(CalendarFillingMode.TwoByTwo); editingView.ClickSave(); var day = await workerScheduleRepository.ReadWorkerCalendarDayAsync(shop.Id, DateHelper.GetFirstDayOfNextMonth(Now), worker.Id); day.Records.Select(x => x.Period).Should().BeEquivalentTo(TimePeriod.CreateByHours(0, 10), TimePeriod.CreateByHours(20, 23)); }
public async Task CreateRecordAtWorkerDayOff() { var workerId = await CreateWorker(); var page = LoadMainPage().GoToCalendarPage() .GoToNextDay() .GoToNextDay() .GoToNextDay(); var modal = page.OpenCalendarModalAtHour(0, 12); modal.CheckTimeValidation("Попадет на нерабочее время сотрудника", Level.Warning) .SaveAndClose(); var workingDay = await ReadWorkerCalendarDay(workerId, DateTime.Now.AddDays(3)); workingDay.Records.Single().Period.Should().BeEquivalentTo(TimePeriod.CreateByHours(12, 13)); }
public async Task CheckDoNotCancel() { var workerId = await CreateWorker(); await CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)); await CreateSingleRecord(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(13, 14)); var page = GoToTomorrowCalendarPage(); page.ShowRecordTooltip(0, 0) .ClickCancel(); page.WaitModal <CalendarRecordCancelModal>().ClickDoNotCancelRecord(); var record = await ReadSingleRecordTomorrow(workerId); record.RecordStatus.Should().Be(RecordStatus.Active); }
public async Task NightAndNormalTimePeriods() { var worker = await CreateWorker(); await BuildOneWorkingDay(worker.Id, DateHelper.GetFirstDayOfMonth(Now), TimePeriod.CreateByHours(10, 11), TimePeriod.CreateByHours(15, 24) ); await BuildOneWorkingDay(worker.Id, DateHelper.GetFirstDayOfMonth(Now).AddDays(1), TimePeriod.CreateByHours(0, 7)); var page = LoadMainPage().GoToWorkerListPage().OpenCalendar(); var editor = page.OpenEditor(0, 10).GetEditingView(); editor.CheckTimeRange(10, 11, atRow: 0); editor.CheckTimeRange(15, 7, atRow: 1); }
public async Task CreateFiveByTwoWorkingCalendarWithManyPeriods() { var worker = await CreateWorker(); var page = LoadMainPage().GoToWorkerListPage().OpenCalendar(); const int startIdx = 15; var editingView = page.OpenEditor(0, startIdx).GetEditingView(); editingView.SetTimeRange("10:00", "12:00"); editingView.SetTimeRange("13:00", "09:00", 1); editingView.SetCalendarMode(CalendarFillingMode.FiveByTwo); editingView.ClickSave(); var startDate = DateHelper.GetFirstDayOfMonth(Now).AddDays(startIdx); CheckMonthFor5By2From(page, startDate); for (var date = DateHelper.GetFirstDayOfMonth(Now); date <= DateHelper.GetLastDayOfMonth(Now); date = date.AddDays(1)) { var day = await workerScheduleRepository.ReadWorkerCalendarDayAsync(shop.Id, date, worker.Id); var nextDay = await workerScheduleRepository.ReadWorkerCalendarDayAsync(shop.Id, date.AddDays(1), worker.Id); var shouldBeEmpty = date < startDate || IsWeekend(CalendarFillingMode.FiveByTwo, date, date.Day - startDate.Day); day.Records .Select(x => x.Period) .Count(p => p == TimePeriod.CreateByHours(10, 12)) .Should().Be(shouldBeEmpty ? 0 : 1); day.Records .Select(x => x.Period) .Count(p => p == TimePeriod.CreateByHours(13, 24)) .Should().Be(shouldBeEmpty ? 0 : 1); nextDay.Records .Select(x => x.Period) .Count(p => p == TimePeriod.CreateByHours(0, 9)) .Should().Be(shouldBeEmpty ? 0 : 1); } }
public async Task CreateNightWorkingPeriod(int start, int end) { var worker = await CreateWorker(); var page = LoadMainPage().GoToWorkerListPage().OpenCalendar(); var editingView = page.OpenEditor(0, 0).GetEditingView(); editingView.SetTimeRange($"{start}:00", $"{end}:00"); editingView.ClickSave(); page.GetCell(0, 0).WaitFilled(); page.GetCell(0, 1).WaitNotFilled(); var day0 = await workerScheduleRepository.ReadWorkerCalendarDayAsync(shop.Id, DateHelper.GetFirstDayOfMonth(Now), worker.Id); var day1 = await workerScheduleRepository.ReadWorkerCalendarDayAsync(shop.Id, DateHelper.GetFirstDayOfMonth(Now).AddDays(1), worker.Id); day0.Records.Select(x => x.Period).Should().BeEquivalentTo(TimePeriod.CreateByHours(start, 24)); day1.Records.Select(x => x.Period).Should().BeEquivalentTo(TimePeriod.CreateByHours(0, end)); }
public async Task CheckRequiredFields() { var workerId = await CreateWorker(); var modal = GoToTomorrowCalendarPage() .OpenCalendarModalAtHour(0, DateTime.Now.Hour); modal.SetTimeRange("", "") .SetDate("") .ClickSave() .CheckTimeValidation("Укажите время записи", Level.Error) .CheckDateValidation("Укажите дату", Level.Error); modal.SetTimeRange("10:00", "11:00") .SetDate(DateHelper.Tomorrow()) .SaveAndClose(); var record = await ReadSingleRecordTomorrow(workerId); record.Period.Should().BeEquivalentTo(TimePeriod.CreateByHours(10, 11)); }
public async Task TimeSelectorValidations() { var workerId = await CreateWorker(); await CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 24)); var modal = GoToTomorrowCalendarPage() .OpenCalendarModalAtHour(0, 12); modal.CheckTimeRange("12:00", "13:00"); modal.SetTimeRange("13:00", "24:01") .ClickSave() .CheckTimeValidation("В земных сутках нет такого времени", Level.Error, ErrorSide.Right); modal.SetTimeRange("14:00", "13:00") .ClickSave() .CheckTimeValidation("Начало периода не должно быть позже конца", Level.Error); modal.SetTimeRange("13:00", "13:14") .ClickSave() .CheckTimeValidation("Нельзя сделать запись короче 15 минут", Level.Error); modal.SetTimeRange("", "") .ClickSave() .CheckTimeValidation("Укажите время записи", Level.Error); modal.SetTimeRange("14:00", "") .ClickSave() .CheckTimeValidation("Укажите время записи", Level.Error, ErrorSide.Right); modal.SetTimeRange("", "13") .ClickSave() .CheckTimeValidation("Укажите время записи", Level.Error, ErrorSide.Left); modal.SetTimeRange("11:00", "24:00") .SetComment("") .CheckTimeValidation(null, Level.Ok, ErrorSide.LeftAndRight); }
public async Task MultiplePlaceholder() { var worker = await CreateWorker(); await BuildOneWorkingDay(worker.Id, DateHelper.GetFirstDayOfMonth(Now), TimePeriod.CreateByHours(10, 11), TimePeriod.CreateByHours(12, 13), TimePeriod.CreateByHours(14, 15), TimePeriod.CreateByHours(16, 17), TimePeriod.CreateByHours(18, 19) ); var page = LoadMainPage().GoToWorkerListPage().OpenCalendar(); var editor = page.OpenEditor(0, 10).GetEditingView(); editor.CheckTimeRange(10, 11, atRow: 0); editor.CheckTimeRange(12, 13, atRow: 1); editor.CheckTimeRange(14, 15, atRow: 2); editor.CheckTimeRange(16, 17, atRow: 3); editor.CheckTimeRange(18, 19, atRow: 4); }
public async Task ChangeWorkerInRecord() { const string workerName1 = "Анатолий"; const string workerName2 = "Василий"; var workerId1 = await CreateWorker(workerName1); var workerId2 = await CreateWorker(workerName2); await CreateOneWorkingDay(workerId1, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)); await CreateSingleRecord(workerId1, DateHelper.Tomorrow(), TimePeriod.CreateByHours(12, 13)); var page = GoToTomorrowCalendarPage(); page.ChangeRecord(0, 0) .EraseWorker() .SelectWorkerByName(workerName2) .CheckSelectedWorkerName(workerName2) .SaveAndClose(); (await ReadWorkerCalendarDay(workerId2, DateHelper.Tomorrow())).Records.Length.Should().Be(1); (await ReadWorkerCalendarDay(workerId1, DateHelper.Tomorrow())).Records.Length.Should().Be(0); }
public async Task CreateRecordButWorkerIsBusy() { var initialPeriod = TimePeriod.CreateByHours(13, 14); var workerId = await CreateWorker(); await CreateOneWorkingDay(workerId, DateHelper.Tomorrow(), TimePeriod.CreateByHours(10, 16)); await CreateSingleRecord(workerId, DateHelper.Tomorrow(), initialPeriod); var page = GoToTomorrowCalendarPage(); var modal = page.OpenCalendarModalAtHour(0, 12); modal.SetTimeRange("12:30", "13:30"); modal.SetComment(""); modal.CheckTimeValidation("Попадает на другую запись, сотрудник будет занят", Level.Error, ErrorSide.LeftAndRight); modal.ClickSave(); modal.WaitPresence(); // ничего не происходит, окно остаётся открытым modal.Close(); var record = await ReadSingleRecordTomorrow(workerId); record.Period.Should().BeEquivalentTo(initialPeriod); }