public void TestFindDocumentWithClusteringKeyPart() { var documents = CqlDocumentsForTests.GetCqlDocumentBindingMetaEntries(serializer); var firstPartnerPartyId = documents[0].FirstPartnerPartyId; var secondPartnerPartyId = documents[0].SecondPartnerPartyId; using (var context = new CqlDbContext()) context.InsertDocuments(documents); using var browser = new BrowserForTests(); var showTableEntriesPage = browser.SwitchTo <BusinessObjectTablePage>("DocumentBindingsMeta"); showTableEntriesPage.OpenFilter.Click(); showTableEntriesPage.FilterModal.GetFilter("BindingType").EnumSelect.SelectValueByText("ByPriceList"); showTableEntriesPage.FilterModal.GetFilter("FirstPartnerPartyId").Input.ClearAndInputText(firstPartnerPartyId); showTableEntriesPage.FilterModal.Apply.Click(); showTableEntriesPage.FilterModal.GetFilter("SecondPartnerPartyId").Input.WaitIncorrect(); showTableEntriesPage.FilterModal.GetFilter("DocumentNumber").Input.WaitIncorrect(); showTableEntriesPage.FilterModal.GetFilter("DocumentDate").DateTimeInTicks.WaitIncorrect(); showTableEntriesPage.FilterModal.GetFilter("DocumentTime").DateTimeInTicks.WaitIncorrect(); showTableEntriesPage.FilterModal.GetFilter("FirstPartnerPartyId").Input.WaitCorrect(); showTableEntriesPage.FilterModal.GetFilter("SecondPartnerPartyId").Input.ClearAndInputText(secondPartnerPartyId); showTableEntriesPage.FilterModal.GetFilter("DocumentNumber").Input.ClearAndInputText("0"); showTableEntriesPage.FilterModal.GetFilter("DocumentDate").Date.ClearAndInputText("10.10.2000"); showTableEntriesPage.FilterModal.GetFilter("DocumentTime").DateTimeInTicks.ClearAndInputText(new DateTime(2020, 10, 10, 13, 12, 11, DateTimeKind.Utc).Ticks.ToString()); var documentType = documents[0].DocumentType; var documentCirculationId = documents[0].DocumentCirculationId.ToString(); showTableEntriesPage.FilterModal.GetFilter("DocumentType").Input.ClearAndInputText(documentType); showTableEntriesPage.FilterModal.GetFilter("DocumentCirculationId").Input.ClearAndInputText(documentCirculationId); showTableEntriesPage.FilterModal.Apply.Click(); showTableEntriesPage.BusinessObjectItems.WaitCount(1); showTableEntriesPage.BusinessObjectItems[0].FindColumn("DocumentCirculationId").WaitText(documentCirculationId); showTableEntriesPage.OpenFilter.Click(); showTableEntriesPage.FilterModal.GetFilter("DocumentType").Input.Clear(); showTableEntriesPage.FilterModal.GetFilter("DocumentCirculationId").Input.Clear(); showTableEntriesPage.FilterModal.Apply.Click(); showTableEntriesPage.BusinessObjectItems.WaitCount(10); showTableEntriesPage.BusinessObjectItems.Wait(row => row.FindColumn("DocumentCirculationId").Text).That(Is.EquivalentTo(documents.Select(x => x.DocumentCirculationId.ToString()))); showTableEntriesPage.OpenFilter.Click(); showTableEntriesPage.FilterModal.GetFilter("DocumentType").Input.ClearAndInputText(documentType); showTableEntriesPage.FilterModal.Apply.Click(); showTableEntriesPage.BusinessObjectItems.WaitCount(5); showTableEntriesPage.BusinessObjectItems.Wait(row => row.FindColumn("DocumentType").Text).That(Is.All.EqualTo("Invoic")); showTableEntriesPage.OpenFilter.Click(); showTableEntriesPage.FilterModal.GetFilter("DocumentType").OperatorSelect.SelectValueByText(">"); showTableEntriesPage.FilterModal.Apply.Click(); showTableEntriesPage.BusinessObjectItems.WaitCount(5); showTableEntriesPage.BusinessObjectItems.Wait(row => row.FindColumn("DocumentType").Text).That(Is.All.EqualTo("Orders")); }
public void TestTwoPages() { var scopeId = Guid.NewGuid().ToString(); CreateFtpUsers(21, scopeId); using var browser = new BrowserForTests(); var businessObjectsPage = browser.SwitchTo <BusinessObjectsPage>(); businessObjectsPage.FilterInput.ClearAndInputText("FtpUser"); var ftpUsersLink = businessObjectsPage.ObjectGroups[0].ObjectsList.GetItemWithText(x => x.ObjectLink.Text, "FtpUser"); var ftpUsersPage = ftpUsersLink.ObjectLink.ClickAndGoTo <BusinessObjectTablePage>(); ftpUsersPage.OpenFilter.Click(); ftpUsersPage.FilterModal.GetFilter("Login").Input.ClearAndInputText(scopeId); ftpUsersPage.FilterModal.Apply.Click(); ftpUsersPage = browser.RefreshUntil(ftpUsersPage, page => page.ItemsCountInfo.Text.Get().Contains("Всего 21")); ftpUsersPage.ItemsCountInfo.WaitTextContains("Записи с 0 по 20", "Всего 21"); ftpUsersPage.BusinessObjectItems.WaitCount(20); ftpUsersPage.Paging.PagesCount.Wait().That(Is.EqualTo(2)); ftpUsersPage.Paging.GoToPage(2); ftpUsersPage.ItemsCountInfo.WaitTextContains("Записи с 20 по 21", "Всего 21"); ftpUsersPage.BusinessObjectItems.WaitCount(1); }
public void TestFindDocumentWithDifferentColumnTypes() { var document = CqlDocumentsForTests.GetCqlConnectorDeliveryContext(serializer); var document2 = CqlDocumentsForTests.GetCqlConnectorDeliveryContext(serializer); using (var context = new CqlDbContext()) context.InsertDocuments(new[] { document, document2 }); using var browser = new BrowserForTests(); var showTableEntriesPage = browser.LoginAsSuperUser().SwitchTo <BusinessObjectTablePage>("CqlConnectorDeliveryContext"); showTableEntriesPage.OpenFilter.Click(); showTableEntriesPage.FilterModal.GetFilter("TimeSliceId").DateTimeInTicks.ClearAndInputText(document.TimeSliceId.UtcTicks.ToString()); showTableEntriesPage.FilterModal.GetFilter("TimeSliceShardNumber").Input.ClearAndInputText(document.TimeSliceShardNumber.ToString()); showTableEntriesPage.FilterModal.GetFilter("ContextId").Input.ClearAndInputText(document.ContextId.ToString()); showTableEntriesPage.FilterModal.Apply.Click(); showTableEntriesPage.BusinessObjectItems.WaitCount(1); var row = showTableEntriesPage.BusinessObjectItems[0]; row.FindColumn("TimeSliceId").WaitText(document.TimeSliceId.ToString("yyyy-MM-ddTHH:mm:ss.ffK")); row.FindColumn("TimeSliceShardNumber").WaitText(document.TimeSliceShardNumber.ToString()); row.FindColumn("ContextId").WaitText(document.ContextId.ToString()); row.Delete.Click(); showTableEntriesPage.ConfirmDeleteObjectModal.Delete.Click(); browser.RefreshUntil(showTableEntriesPage, x => x.NothingFound.IsPresent.Get()); GetConnectorDeliveryContext(document).Length.Should().Be(0); GetConnectorDeliveryContext(document2).Single().Should().BeEquivalentTo(document2); }
public void TestObjectKeysValidation() { var printingInfo = CqlDocumentsForTests.GetCqlDocumentPrintingInfo(); var printingInfoId = printingInfo.Id.ToString(); using (var context = new CqlDbContext()) context.InsertDocument(printingInfo); using var browser = new BrowserForTests(); var showTableEntriesPage = browser.SwitchTo <BusinessObjectTablePage>("DocumentPrintingInfo"); showTableEntriesPage.OpenFilter.Click(); showTableEntriesPage.FilterModal.Apply.Click(); var searchField = showTableEntriesPage.FilterModal.GetFilter("Id"); searchField.InputValidation.ExpectIsOpenedWithMessage("Поле должно быть заполнено"); searchField.Input.ClearAndInputText(Guid.NewGuid().ToString()); showTableEntriesPage.FilterModal.Apply.Click(); showTableEntriesPage.BusinessObjectItems.WaitAbsence(); showTableEntriesPage.NothingFound.WaitPresence(); showTableEntriesPage.OpenFilter.Click(); searchField = showTableEntriesPage.FilterModal.GetFilter("Id"); searchField.Input.ClearAndInputText(printingInfoId); showTableEntriesPage.FilterModal.Apply.Click(); showTableEntriesPage.BusinessObjectItems.WaitCount(1); showTableEntriesPage.BusinessObjectItems[0].FindColumn("Id").WaitText(printingInfoId); }
public void TestDownloadByteContent() { var content = string.Join("\n", new[] { "this is large file content" }.Concat(Enumerable.Range(0, 10000).Select(i => (i % 256).ToString()))); var blobId = Guid.NewGuid(); using (var context = new CqlDbContext()) context.GetTable <CqlActiveBoxState>().Insert(new CqlActiveBoxState { PartitionKey = "0", LastProcessedEventId = "0", BoxId = blobId, Content = Encoding.UTF8.GetBytes(content), }).SetTimestamp(DateTimeOffset.UtcNow).Execute(); using var browser = new BrowserForTests(); var tempFileStoragePage = browser.LoginAsSuperUser().SwitchTo <BusinessObjectTablePage>("CqlActiveBoxState"); tempFileStoragePage.OpenFilter.Click(); tempFileStoragePage.FilterModal.GetFilter("PartitionKey").Input.ClearAndInputText("0"); tempFileStoragePage.FilterModal.GetFilter("BoxId").Input.ClearAndInputText(blobId.ToString()); tempFileStoragePage.FilterModal.Apply.Click(); tempFileStoragePage.BusinessObjectItems.WaitCount(1); var detailsPage = tempFileStoragePage.BusinessObjectItems[0].Details.ClickAndGoTo <BusinessObjectDetailsPage>(); detailsPage.RootAccordion.FindField("Content").FieldValue.DownloadLink.Click(); Thread.Sleep(1000); var file = browser.DownloadFile("CqlActiveBoxState-Content-dGhpcy.bin"); file.Should().Be(content); }
public void TestFiltrationWhenNotFirstPage() { var scopeId = Guid.NewGuid().ToString(); CreateUsers(20, scopeId); var userId = Guid.NewGuid(); CreateUsers(1, scopeId, userId); using var browser = new BrowserForTests(); var userBusinessObjectPage = browser.SwitchTo <BusinessObjectTablePage>("UsersTable"); userBusinessObjectPage.OpenFilter.Click(); userBusinessObjectPage.FilterModal.ScopeId.ClearAndInputText(scopeId); userBusinessObjectPage.FilterModal.Apply.Click(); userBusinessObjectPage.Paging[1].Click(); userBusinessObjectPage.BusinessObjectItems.WaitCount(1); userBusinessObjectPage.OpenFilter.Click(); userBusinessObjectPage.FilterModal.Id.ClearAndInputText(userId.ToString()); userBusinessObjectPage.FilterModal.Apply.Click(); userBusinessObjectPage.ItemsCountInfo.WaitText("Записи с 0 по 1\r\n|\r\nВсего 1"); userBusinessObjectPage.BusinessObjectItems.WaitCount(1); }
public void TestRestrictionsForManyItems() { var totalCount = 100123; var scopeId = GenerateRandomUsersAndAssertCount(totalCount)[0].ScopeId; using var browser = new BrowserForTests(); var businessObjectPage = browser.SwitchTo <BusinessObjectTablePage>("UsersTable"); businessObjectPage.OpenFilter.Click(); businessObjectPage.FilterModal.ScopeId.ClearAndInputText(scopeId); businessObjectPage.FilterModal.Apply.Click(); businessObjectPage.ItemsCountInfo.WaitTextContains("Всего 50000+"); businessObjectPage.DownloadLink.Click(); businessObjectPage.DownloadLimitModal.Header.WaitText("Слишком большой список"); businessObjectPage.DownloadLimitModal.Body.WaitText("Мы умеем выгружать не более 50000 объектов из этой таблицы. Уточните запрос с помощью фильтров, чтобы записей стало меньше."); businessObjectPage.DownloadLimitModal.Cancel.Click(); var adminBusinessObjectPage = browser.LoginAsSuperUser().SwitchTo <BusinessObjectTablePage>("UsersTable"); adminBusinessObjectPage.OpenFilter.Click(); adminBusinessObjectPage.FilterModal.ScopeId.ClearAndInputText(scopeId); adminBusinessObjectPage.FilterModal.Apply.Click(); adminBusinessObjectPage.ItemsCountInfo.WaitTextContains("Всего 100123"); var content = DownloadFile(browser, businessObjectPage); content.Length.Should().Be(100125); }
public void TestChangeNumericValue() { var documentId = CreateDocument(documentName); using var browser = new BrowserForTests(); var businessObjectEditingPage = browser.LoginAsSuperUser().SwitchTo <BusinessObjectDetailsPage>(documentName, $"Id={documentId}"); var integerRow = businessObjectEditingPage.RootAccordion.FindField("ShardNumber"); integerRow.FieldValue.WaitText("0"); integerRow.Edit.Click(); integerRow.FieldValue.Input.AppendText($"{Keys.Control}a"); integerRow.FieldValue.Input.AppendText("12.,45"); integerRow.Save.Click(); integerRow.FieldValue.WaitText("1245"); integerRow.Edit.Click(); integerRow.FieldValue.Input.AppendText($"{Keys.Control}a"); integerRow.FieldValue.Input.AppendText("14ab"); integerRow.Save.Click(); integerRow.FieldValue.WaitText("14"); browser.WebDriver.Navigate().Refresh(); integerRow = businessObjectEditingPage.RootAccordion.FindField("ShardNumber"); integerRow.FieldValue.WaitText("14"); GetDocument(documentName, documentId).ShardNumber.Should().Be(14); var decimalRow = businessObjectEditingPage.RootAccordion.FindField("DocumentPrice"); decimalRow.FieldValue.WaitText("10.1"); decimalRow.Edit.Click(); decimalRow.FieldValue.Input.AppendText($"{Keys.Control}a"); decimalRow.FieldValue.Input.AppendText("12,45"); decimalRow.Save.Click(); decimalRow.FieldValue.WaitText("12.45"); browser.WebDriver.Navigate().Refresh(); decimalRow = businessObjectEditingPage.RootAccordion.FindField("DocumentPrice"); decimalRow.FieldValue.WaitText("12.45"); GetDocument(documentName, documentId).DocumentPrice.Should().Be(12.45m); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent").ToggleButton.Click(); var nullableDecimalRow = businessObjectEditingPage.RootAccordion.FindField("DocumentContent_TotalAmount"); nullableDecimalRow.FieldValue.WaitText("10.2"); nullableDecimalRow.Edit.Click(); nullableDecimalRow.FieldValue.Input.AppendText($"{Keys.Control}a{Keys.Delete}"); nullableDecimalRow.Save.Click(); nullableDecimalRow.FieldValue.WaitText("null"); browser.WebDriver.Navigate().Refresh(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent").ToggleButton.Click(); nullableDecimalRow = businessObjectEditingPage.RootAccordion.FindField("DocumentContent_TotalAmount"); nullableDecimalRow.FieldValue.WaitText("null"); GetDocument(documentName, documentId).DocumentContent.TotalAmount.Should().BeNull(); }
public void DeleteViaDetailsPageRequiresGodAccess() { var ftpUser = CreateFtpUser(); using var browser = new BrowserForTests(); var detailsPage = browser.SwitchTo <BusinessObjectDetailsPage>("FtpUser", $"Id={ftpUser.Id}"); detailsPage.Delete.IsPresent.Wait().That(Is.False, "Delete link should only be present for gods"); }
public void TestLinkShouldReferToShowTablePage() { using var browser = new BrowserForTests(); var businessObjectsPage = browser.SwitchTo <BusinessObjectsPage>(); var link = businessObjectsPage.FindBusinessObjectLink("CQL Objects", "DocumentPrintingInfo"); var page = link.ClickAndGoTo <BusinessObjectTablePage>(); page.Header.WaitText("DocumentPrintingInfo"); }
public void TestCanNotEditScopeIdAndId() { var documentId = CreateDocument(documentName); using var browser = new BrowserForTests(); var businessObjectEditingPage = browser.LoginAsSuperUser().SwitchTo <BusinessObjectDetailsPage>(documentName, $"Id={documentId}"); var row = businessObjectEditingPage.RootAccordion.FindField("id"); row.Edit.WaitAbsence(); }
public void TestSearchLink() { using var browser = new BrowserForTests(); var businessObjectsPage = browser.SwitchTo <BusinessObjectsPage>(); businessObjectsPage.FilterInput.ClearAndInputText("DocumentPrintingInfo"); businessObjectsPage.ObjectGroups.WaitCount(1); businessObjectsPage.ObjectGroups[0].ObjectsList.WaitCount(1); businessObjectsPage.FindBusinessObjectLink("CQL Objects", "DocumentPrintingInfo").WaitPresence(); }
public void TestValidation() { using var browser = new BrowserForTests(); var businessObjectsPage = browser.SwitchTo <BusinessObjectsPage>(); businessObjectsPage.FilterInput.ClearAndInputText("ApiClientThrift"); businessObjectsPage.ObjectGroups.Wait(x => x.Name.Text).That(Is.EqualTo(new[] { "Business Array Objects" })); businessObjectsPage.ObjectGroups[0].ObjectsList.WaitCount(1); var link = businessObjectsPage.ObjectGroups[0].ObjectsList.GetItemWithText(x => x.Text, "ApiClientThrift"); var searchPage = link.ObjectLink.ClickAndGoTo <BusinessObjectTablePage>(); searchPage.Header.WaitText("ApiClientThrift"); var id = searchPage.FilterModal.GetFilter("Id"); var scopeId = searchPage.FilterModal.GetFilter("ScopeId"); var arrayIndex = searchPage.FilterModal.GetFilter("ArrayIndex"); id.Input.ClearAndInputText("123"); scopeId.Input.ClearAndInputText("123"); searchPage.FilterModal.Apply.Click(); arrayIndex.InputValidation.ExpectIsOpenedWithMessage("Поле должно быть заполнено"); arrayIndex.Input.ClearAndInputText(" "); searchPage.FilterModal.Apply.Click(); arrayIndex.InputValidation.ExpectIsOpenedWithMessage("Поле должно быть заполнено"); arrayIndex.Input.ClearAndInputText("<script>"); searchPage.FilterModal.Apply.Click(); arrayIndex.InputValidation.ExpectIsOpenedWithMessage("Некорректный символ: '<'"); arrayIndex.Input.ClearAndInputText("123"); scopeId.Input.ClearAndInputText(" "); searchPage.FilterModal.Apply.Click(); scopeId.InputValidation.ExpectIsOpenedWithMessage("Поле должно быть заполнено"); scopeId.Input.ClearAndInputText(">##"); searchPage.FilterModal.Apply.Click(); scopeId.InputValidation.ExpectIsOpenedWithMessage("Некорректный символ: '>'"); scopeId.Input.ClearAndInputText("123"); id.Input.Clear(); searchPage.FilterModal.Apply.Click(); id.InputValidation.ExpectIsOpenedWithMessage("Поле должно быть заполнено"); id.Input.ClearAndInputText("&##"); searchPage.FilterModal.Apply.Click(); id.InputValidation.ExpectIsOpenedWithMessage("Некорректный символ: '&'"); }
public void TestSearchIndexedField() { using var browser = new BrowserForTests(); var businessObjects = browser.SwitchTo <BusinessObjectsPage>(); businessObjects.FilterInput.ClearAndInputText("UsersTable"); businessObjects.ObjectGroups.WaitCount(1); var objects = businessObjects.ObjectGroups.GetItemWithText(x => x.Name.Text, "Postgres Objects"); objects.IndexedLabel.WaitPresence(); objects.ObjectsList.WaitCount(1); objects.ObjectsList[0].ObjectLink.WaitText("UsersTable"); }
public void DeleteViaSearchPageRequiresGodAccess() { var ftpUser = CreateFtpUser(); using var browser = new BrowserForTests(); var businessObjectPage = browser.SwitchTo <BusinessObjectTablePage>("FtpUser"); businessObjectPage.OpenFilter.Click(); businessObjectPage.FilterModal.GetFilter("Login").Input.ClearAndInputText(ftpUser.Login); businessObjectPage.FilterModal.Apply.Click(); businessObjectPage = browser.RefreshUntil(businessObjectPage, x => x.BusinessObjectItems.IsPresent.Get()); businessObjectPage.BusinessObjectItems.WaitCount(1); businessObjectPage.BusinessObjectItems[0].Delete.IsPresent.Wait().That(Is.False, "Delete link should only be present for gods"); }
public void TestObjectNotFound() { using var browser = new BrowserForTests(); var searchPage = browser.SwitchTo <BusinessObjectTablePage>("ApiClientThrift"); searchPage.Header.WaitText("ApiClientThrift"); searchPage.FilterModal.GetFilter("Id").Input.ClearAndInputText("123"); searchPage.FilterModal.GetFilter("ScopeId").Input.ClearAndInputText("123"); searchPage.FilterModal.GetFilter("ArrayIndex").Input.ClearAndInputText("123"); searchPage.FilterModal.Apply.Click(); searchPage.NothingFound.WaitPresence(); searchPage.BusinessObjectItems.WaitAbsence(); }
public void TestEmptyList() { using var browser = new BrowserForTests(); var businessObjectPage = browser.SwitchTo <BusinessObjectTablePage>("UsersTable"); businessObjectPage.OpenFilter.Click(); businessObjectPage.FilterModal.ScopeId.ClearAndInputText(Guid.NewGuid().ToString()); businessObjectPage.FilterModal.Apply.Click(); businessObjectPage.ItemsCountInfo.WaitTextContains("Всего 0"); businessObjectPage.NothingFound.WaitPresence(); var content = DownloadFile(browser, businessObjectPage); content.Length.Should().Be(2); }
private static string[] DownloadFile(BrowserForTests browser, BusinessObjectTablePage businessObjectPage) { businessObjectPage.DownloadLink.Click(); var filename = $"UsersTable-{DateTime.UtcNow:yyyy-MM-dd-HHmm}.csv"; Thread.Sleep(1000); var file = browser.DownloadFile(filename); var content = file.Split("\n"); if (content.Length == 1) { Console.WriteLine($"File Content: '{file}'"); } return(content); }
public void TestRestrictionsFor50000Items() { var scopeId = GenerateRandomUsersAndAssertCount(50000)[0].ScopeId; using var browser = new BrowserForTests(); var businessObjectPage = browser.SwitchTo <BusinessObjectTablePage>("UsersTable"); businessObjectPage.OpenFilter.Click(); businessObjectPage.FilterModal.ScopeId.ClearAndInputText(scopeId); businessObjectPage.FilterModal.Apply.Click(); businessObjectPage.ItemsCountInfo.WaitTextContains("Всего 50000"); var content = DownloadFile(browser, businessObjectPage); content.Length.Should().Be(50002); }
public void TestChangeValueInArrayElement() { var documentId = CreateDocument(documentName); using var browser = new BrowserForTests(); var businessObjectEditingPage = browser.LoginAsSuperUser().SwitchTo <BusinessObjectDetailsPage>(documentName, $"Id={documentId}"); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent").ToggleButton.Click(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent_GoodItems").ToggleButton.Click(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent_GoodItems_0").ToggleButton.Click(); var inArrayFieldRow = businessObjectEditingPage.RootAccordion.FindField("DocumentContent_GoodItems_0_Name"); inArrayFieldRow.FieldValue.WaitText("Name of lintem"); inArrayFieldRow.Edit.Click(); inArrayFieldRow.FieldValue.Input.ClearAndInputText("Changed name"); inArrayFieldRow.Save.Click(); inArrayFieldRow.FieldValue.WaitText("Changed name"); browser.WebDriver.Navigate().Refresh(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent").ToggleButton.Click(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent_GoodItems").ToggleButton.Click(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent_GoodItems_0").ToggleButton.Click(); inArrayFieldRow = businessObjectEditingPage.RootAccordion.FindField("DocumentContent_GoodItems_0_Name"); inArrayFieldRow.FieldValue.WaitText("Changed name"); GetDocument(documentName, documentId).DocumentContent.GoodItems[0].Name.Should().Be("Changed name"); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent_GoodItems_1").ToggleButton.Click(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent_GoodItems_1_CustomDeclarationNumbers").ToggleButton.Click(); var inArrayInArrayFieldRow = businessObjectEditingPage.RootAccordion.FindField("DocumentContent_GoodItems_1_CustomDeclarationNumbers_0"); inArrayInArrayFieldRow.FieldValue.WaitText("224"); inArrayInArrayFieldRow.Edit.Click(); inArrayInArrayFieldRow.FieldValue.Input.ClearAndInputText("225a"); inArrayInArrayFieldRow.Save.Click(); inArrayInArrayFieldRow.FieldValue.WaitText("225a"); browser.WebDriver.Navigate().Refresh(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent").ToggleButton.Click(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent_GoodItems").ToggleButton.Click(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent_GoodItems_1").ToggleButton.Click(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent_GoodItems_1_CustomDeclarationNumbers").ToggleButton.Click(); inArrayInArrayFieldRow = businessObjectEditingPage.RootAccordion.FindField("DocumentContent_GoodItems_1_CustomDeclarationNumbers_0"); inArrayInArrayFieldRow.FieldValue.WaitText("225a"); GetDocument(documentName, documentId).DocumentContent.GoodItems[1].CustomDeclarationNumbers[0].Should().Be("225a"); }
public void DeleteViaDetailsPage(bool confirmDeletion) { var ftpUser = CreateFtpUser(); using var browser = new BrowserForTests(); var detailsPage = browser.LoginAsSuperUser().SwitchTo <BusinessObjectDetailsPage>("FtpUser", $"Id={ftpUser.Id}"); detailsPage.Delete.Click(); ConfirmDeletion(detailsPage.ConfirmDeleteObjectModal, confirmDeletion); if (confirmDeletion) { detailsPage.GoTo <BusinessObjectTablePage>(); } AssertFtpUserExistence(ftpUser.Id, confirmDeletion); }
public void TestContentSortedAndSelectColumns() { var users = GenerateRandomUsersAndAssertCount(10); var scopeId = users[0].ScopeId; using var browser = new BrowserForTests(); var businessObjectPage = browser.SwitchTo <BusinessObjectTablePage>("UsersTable"); businessObjectPage.OpenFilter.Click(); businessObjectPage.FilterModal.ScopeId.ClearAndInputText(scopeId); businessObjectPage.FilterModal.Apply.Click(); businessObjectPage.TableHeader.SortByColumn("Header_Id"); var columns = new[] { "Email", "Id", "ScopeId", "LastModificationDateTime" }; businessObjectPage.FieldSettings.Click(); businessObjectPage.ColumnSelector.TypesSelectAll.Click(); foreach (var column in columns) { businessObjectPage.ColumnSelector.ColumnCheckboxes.GetCheckbox(column).Click(); } var content = DownloadFile(browser, businessObjectPage); content.Length.Should().Be(12); var usersById = users.ToDictionary(x => x.Id.ToString(), x => x); var sep = ";"; var headerFields = new[] { "Id", "ScopeId", "LastModificationDateTime", "Email" }; var header = string.Join(sep, headerFields.Select(FormatString)); content[0].Should().Be(header); content[11].Should().BeEmpty(); for (var i = 1; i < 11; i++) { var item = content[i].Split(new[] { sep }, StringSplitOptions.None); var key = item[0].Replace("\"", "").Replace("=", ""); var user = usersById[key]; item[0].Should().Be(FormatString(key)); item[1].Should().Be(FormatString(user.ScopeId)); DateTime.TryParseExact(item[2].Replace("\"", ""), "O", CultureInfo.InvariantCulture, DateTimeStyles.None, out _).Should().BeTrue(); item[3].Should().Be(FormatString(user.Email)); } }
public void TestAllowSort() { using (var context = new EntityFrameworkDbContext()) { var serializer = new Serializer(new AllPropertiesExtractor()); var customer = new Customer { Age = 1, Name = "13" }; context.Tests.Add(new TestTable { Id = 1, CompositeKey = Guid.NewGuid().ToString(), String = "123", Customer = customer, CustomerSerialized = serializer.Serialize(customer), }); context.Users.Add(new UsersTable { Email = "123", Id = Guid.NewGuid(), Patronymic = "1", Surname = "2", FirstName = "3", ScopeId = "scopeId", }); context.SaveChanges(); } using var browser = new BrowserForTests(); var usersPage = browser.LoginAsSuperUser().SwitchTo <BusinessObjectTablePage>("UsersTable"); usersPage = browser.RefreshUntil(usersPage, x => x.BusinessObjectItems.IsPresent.Get()); usersPage.TableHeader.WaitPresence(); usersPage.TableHeader.SortByColumn("Header_Id"); var largeObjectPage = browser.SwitchTo <BusinessObjectTablePage>("TestTable"); largeObjectPage = browser.RefreshUntil(largeObjectPage, x => x.BusinessObjectItems.IsPresent.Get()); largeObjectPage.TableHeader.WaitPresence(); largeObjectPage.TableHeader.WaitNotSortable("Header_Index"); largeObjectPage.TableHeader.WaitNotSortable("Header_String"); largeObjectPage.TableHeader.WaitNotSortable("Header_DateTime"); }
public void TestNonSuperUserCantEditOrDeleteObject() { var document = CqlDocumentsForTests.GetCqlDocumentPrintingInfo(); using (var context = new CqlDbContext()) context.GetTable <DocumentPrintingInfo>().Insert(document).SetTimestamp(DateTimeOffset.UtcNow).Execute(); using var browser = new BrowserForTests(); var printingInfoPage = browser.SwitchTo <BusinessObjectTablePage>("DocumentPrintingInfo"); printingInfoPage.OpenFilter.Click(); printingInfoPage.FilterModal.GetFilter("Id").Input.ClearAndInputText(document.Id.ToString()); printingInfoPage.FilterModal.Apply.Click(); var detailsPage = printingInfoPage.BusinessObjectItems[0].Details.ClickAndGoTo <BusinessObjectDetailsPage>(); detailsPage.RootAccordion.FindField("PartyId").Edit.WaitAbsence(); detailsPage.Delete.WaitAbsence(); }
public void TestTableFiltration() { var scopeId = Guid.NewGuid().ToString(); CreateUsers(21, scopeId); var filtrationGuid = Guid.NewGuid(); CreateUsers(1, scopeId, filtrationGuid); using var browser = new BrowserForTests(); var userBusinessObjectPage = browser.SwitchTo <BusinessObjectTablePage>("UsersTable"); userBusinessObjectPage.OpenFilter.Click(); userBusinessObjectPage.FilterModal.Id.ClearAndInputText(filtrationGuid.ToString()); userBusinessObjectPage.FilterModal.Apply.Click(); userBusinessObjectPage.BusinessObjectItems.WaitCount(1); userBusinessObjectPage.BusinessObjectItems[0].Id.WaitText(filtrationGuid.ToString()); }
public void TestInputValidation() { CreateUsers(1, Guid.NewGuid().ToString()); using var browser = new BrowserForTests(); var userBusinessObjectPage = browser.SwitchTo <BusinessObjectTablePage>("UsersTable"); userBusinessObjectPage.OpenFilter.Click(); var filter = userBusinessObjectPage.FilterModal.GetFilter("ScopeId"); filter.Input.ClearAndInputText("<script>"); userBusinessObjectPage.FilterModal.Apply.Click(); filter.InputValidation.ExpectIsOpenedWithMessage("Некорректный символ: '<'"); filter.Input.ClearAndInputText(" "); userBusinessObjectPage.FilterModal.Apply.Click(); userBusinessObjectPage.FilterModal.WaitAbsence(); userBusinessObjectPage.NothingFound.WaitAbsence(); userBusinessObjectPage.BusinessObjectItems.Count.Wait().That(Is.GreaterThan(0)); }
public void TestChangeEnumValue() { var documentId = CreateDocument(documentName); using var browser = new BrowserForTests(); var businessObjectEditingPage = browser.LoginAsSuperUser().SwitchTo <BusinessObjectDetailsPage>(documentName, $"Id={documentId}"); var filledEnumRow = businessObjectEditingPage.RootAccordion.FindField("DocumentType"); filledEnumRow.FieldValue.WaitText("Orders"); filledEnumRow.Edit.Click(); filledEnumRow.FieldValue.EnumSelect.WaitItems(new[] { "Orders", "Desadv" }); filledEnumRow.FieldValue.EnumSelect.SelectValueByText("Desadv"); filledEnumRow.Save.Click(); filledEnumRow.FieldValue.WaitText("Desadv"); browser.WebDriver.Navigate().Refresh(); filledEnumRow = businessObjectEditingPage.RootAccordion.FindField("DocumentType"); filledEnumRow.FieldValue.WaitText("Desadv"); GetDocument(documentName, documentId).DocumentType.Should().Be(DocumentType.Desadv); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent").ToggleButton.Click(); var nullableEnumRow = businessObjectEditingPage.RootAccordion.FindField("DocumentContent_OrderStatus"); nullableEnumRow.FieldValue.WaitText("Processed"); nullableEnumRow.Edit.Click(); nullableEnumRow.FieldValue.EnumSelect.WaitItems(new[] { "null", "Processed", "Failed" }); nullableEnumRow.FieldValue.EnumSelect.SelectValueByText("null"); nullableEnumRow.Save.Click(); nullableEnumRow.FieldValue.WaitText("null"); browser.WebDriver.Navigate().Refresh(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent").ToggleButton.Click(); nullableEnumRow = businessObjectEditingPage.RootAccordion.FindField("DocumentContent_OrderStatus"); nullableEnumRow.FieldValue.WaitText("null"); GetDocument(documentName, documentId).DocumentContent.OrderStatus.Should().BeNull(); }
public void TestChangeBooleanValue() { var documentId = CreateDocument(documentName); using var browser = new BrowserForTests(); var businessObjectEditingPage = browser.LoginAsSuperUser().SwitchTo <BusinessObjectDetailsPage>(documentName, $"Id={documentId}"); var booleanRow = businessObjectEditingPage.RootAccordion.FindField("IsLargeDocument"); booleanRow.FieldValue.WaitText("false"); booleanRow.Edit.Click(); booleanRow.FieldValue.BooleanSelect.WaitItems(new[] { "false", "true" }); booleanRow.FieldValue.BooleanSelect.SelectValueByText("true"); booleanRow.Save.Click(); booleanRow.FieldValue.WaitText("true"); browser.WebDriver.Navigate().Refresh(); booleanRow = businessObjectEditingPage.RootAccordion.FindField("IsLargeDocument"); booleanRow.FieldValue.WaitText("true"); GetDocument(documentName, documentId).IsLargeDocument.Should().BeTrue(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent").ToggleButton.Click(); var nullableBoolRow = businessObjectEditingPage.RootAccordion.FindField("DocumentContent_WasRead"); nullableBoolRow.FieldValue.WaitText("true"); nullableBoolRow.Edit.Click(); nullableBoolRow.FieldValue.BooleanSelect.WaitItems(new[] { "null", "false", "true" }); nullableBoolRow.FieldValue.BooleanSelect.SelectValueByText("null"); nullableBoolRow.Save.Click(); nullableBoolRow.FieldValue.WaitText("null"); browser.WebDriver.Navigate().Refresh(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent").ToggleButton.Click(); nullableBoolRow = businessObjectEditingPage.RootAccordion.FindField("DocumentContent_WasRead"); nullableBoolRow.FieldValue.WaitText("null"); GetDocument(documentName, documentId).DocumentContent.WasRead.Should().BeNull(); }
public void TestChangeDocumentDates() { var documentId = CreateDocument(documentName); using var browser = new BrowserForTests(); var businessObjectEditingPage = browser.LoginAsSuperUser().SwitchTo <BusinessObjectDetailsPage>(documentName, $"Id={documentId}"); var filledDateRow = businessObjectEditingPage.RootAccordion.FindField("DocumentDate"); filledDateRow.FieldValue.WaitTextContains("2014-12-11"); filledDateRow.Edit.Click(); filledDateRow.FieldValue.Date.ClearAndInputText("13.12.2014"); filledDateRow.FieldValue.Time.ClearAndInputText("10:18"); filledDateRow.Save.Click(); filledDateRow.FieldValue.WaitTextContains("2014-12-13"); browser.WebDriver.Navigate().Refresh(); filledDateRow = businessObjectEditingPage.RootAccordion.FindField("DocumentDate"); filledDateRow.FieldValue.WaitTextContains("2014-12-13"); GetDocument(documentName, documentId).DocumentDate.Should().Be(new DateTimeOffset(2014, 12, 13, 10, 18, 00, 00, TimeSpan.Zero)); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent").ToggleButton.Click(); var unfilledDateRow = businessObjectEditingPage.RootAccordion.FindField("DocumentContent_DeliveryDate"); unfilledDateRow.FieldValue.WaitText("null"); unfilledDateRow.Edit.Click(); unfilledDateRow.FieldValue.Date.ClearAndInputText("14.12.2014"); unfilledDateRow.FieldValue.Time.ClearAndInputText("20:19"); unfilledDateRow.Save.Click(); unfilledDateRow.FieldValue.WaitText("2014-12-14T20:19:00Z"); browser.WebDriver.Navigate().Refresh(); businessObjectEditingPage.RootAccordion.FindAccordionToggle("DocumentContent").ToggleButton.Click(); unfilledDateRow = businessObjectEditingPage.RootAccordion.FindField("DocumentContent_DeliveryDate"); unfilledDateRow.FieldValue.WaitText("2014-12-14T20:19:00Z"); GetDocument(documentName, documentId).DocumentContent.DeliveryDate.Should().Be(new DateTime(2014, 12, 14, 20, 19, 00, 00, DateTimeKind.Utc)); }
public void TestContent() { var users = GenerateRandomUsersAndAssertCount(10); var scopeId = users[0].ScopeId; using var browser = new BrowserForTests(); var businessObjectPage = browser.SwitchTo <BusinessObjectTablePage>("UsersTable"); businessObjectPage.OpenFilter.Click(); businessObjectPage.FilterModal.ScopeId.ClearAndInputText(scopeId); businessObjectPage.FilterModal.Apply.Click(); var content = DownloadFile(browser, businessObjectPage); content.Length.Should().Be(12); var usersById = users.ToDictionary(x => x.Id.ToString(), x => x); var sep = ";"; var headerFields = new[] { "Id", "ScopeId", "LastModificationDateTime", "Email", "FirstName", "Surname", "Patronymic", "IsSuperUser" }; var header = string.Join(sep, headerFields.Select(FormatString)); content[0].Should().Be(header); content[11].Should().BeEmpty(); for (var i = 1; i < 11; i++) { var item = content[i].Split(new[] { sep }, StringSplitOptions.None); var key = item[0].Replace("\"", "").Replace("=", ""); var user = usersById[key]; var empty = FormatString(string.Empty); item[1].Should().Be(FormatString(scopeId)); DateTime.TryParseExact(item[2].Replace("\"", ""), "O", CultureInfo.InvariantCulture, DateTimeStyles.None, out _).Should().BeTrue(); item[3].Should().Be(FormatString(user.Email)); item[4].Should().Be(empty); item[5].Should().Be(FormatNumber("123")); item[6].Should().Be(FormatString("Some String")); item[7].Should().Be(FormatString("False")); } }