コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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"));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        private static void CreateCqlDocument(DocumentModel documentModel)
        {
            using var context = new CqlDbContext();
            var table = context.GetTable <CqlDocument>();

            table.Insert(documentModel.ToCqlDocument()).SetTimestamp(DateTimeOffset.UtcNow).Execute();
        }
コード例 #6
0
 public void Test()
 {
     using var context = new CqlDbContext();
     CreateTable <CqlDocumentMeta>(context, 100);
     CreateTable <CqlOrganizationInfo>(context, 1000);
     CreateTable <CqlUserInfo>(context, 1500);
     CreateTable <DocumentBindingsMeta>(context, 150);
     CreateTable <DocumentPrintingInfo>(context, 11000);
     CreateTable <CqlDocument>(context, 123);
 }
コード例 #7
0
 private CqlConnectorDeliveryContext[] GetConnectorDeliveryContext(CqlConnectorDeliveryContext deliveryContext)
 {
     using var context = new CqlDbContext();
     return(context.GetTable <CqlConnectorDeliveryContext>()
            .Where(x => x.TimeSliceId == deliveryContext.TimeSliceId &&
                   x.TimeSliceShardNumber == deliveryContext.TimeSliceShardNumber &&
                   x.ContextId == deliveryContext.ContextId)
            .Execute()
            .ToArray());
 }
コード例 #8
0
        private static void CreateApiClient(string objectId, string lastEventId)
        {
            using var context = new CqlDbContext();
            var table = context.GetTable <ApiClientThrift>();

            table.Insert(new ApiClientThrift
            {
                Id          = objectId,
                ScopeId     = "scopeId",
                ArrayIndex  = "arrayIndex",
                Description = lastEventId,
            }).SetTimestamp(DateTimeOffset.UtcNow).Execute();
        }
コード例 #9
0
 private DocumentBindingsMeta[] GetBindingMeta(DocumentBindingsMeta meta)
 {
     using var context = new CqlDbContext();
     return(context.GetTable <DocumentBindingsMeta>()
            .Where(x => x.BindingType == meta.BindingType &&
                   x.FirstPartnerPartyId == meta.FirstPartnerPartyId &&
                   x.SecondPartnerPartyId == meta.SecondPartnerPartyId &&
                   x.DocumentNumber == meta.DocumentNumber &&
                   x.DocumentDate == meta.DocumentDate &&
                   x.DocumentTime == meta.DocumentTime &&
                   x.DocumentType == meta.DocumentType &&
                   x.DocumentCirculationId == meta.DocumentCirculationId)
            .Execute()
            .ToArray());
 }
コード例 #10
0
        private void CreateTable <T>(CqlDbContext context, int count)
            where T : class
        {
            context.DropTable <T>();
            var table = context.GetTable <T>();

            var fixture = new Fixture();

            fixture.Register((DateTime dt) => dt.ToLocalDate());
            fixture.Register((DateTime dt) => CassandraPrimitivesExtensions.ToLocalTime(dt));

            for (var i = 0; i < count; i++)
            {
                table.Insert(Modify <T>(fixture)).SetTimestamp(DateTimeOffset.UtcNow).Execute();
            }
        }
コード例 #11
0
        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();
        }
コード例 #12
0
        public void TestDeleteDocumentWithClusteringKeyPart()
        {
            var documents             = CqlDocumentsForTests.GetCqlDocumentBindingMetaEntries(serializer);
            var firstPartnerPartyId   = documents[0].FirstPartnerPartyId;
            var secondPartnerPartyId  = documents[0].SecondPartnerPartyId;
            var documentType          = documents[0].DocumentType;
            var documentCirculationId = documents[0].DocumentCirculationId.ToString();

            using (var context = new CqlDbContext())
                context.InsertDocuments(documents);

            using var browser = new BrowserForTests();
            var showTableEntriesPage = browser.LoginAsSuperUser().SwitchTo <BusinessObjectTablePage>("DocumentBindingsMeta");

            showTableEntriesPage.OpenFilter.Click();
            showTableEntriesPage.FilterModal.GetFilter("BindingType").EnumSelect.SelectValueByText("ByPriceList");
            showTableEntriesPage.FilterModal.GetFilter("FirstPartnerPartyId").Input.ClearAndInputText(firstPartnerPartyId);
            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());
            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.BusinessObjectItems[0].Delete.Click();
            showTableEntriesPage.ConfirmDeleteObjectModal.Delete.Click();

            showTableEntriesPage = browser.RefreshUntil(showTableEntriesPage, x => x.NothingFound.IsPresent.Get());
            showTableEntriesPage.OpenFilter.Click();
            showTableEntriesPage.FilterModal.GetFilter("DocumentType").Input.Clear();
            showTableEntriesPage.FilterModal.GetFilter("DocumentCirculationId").Input.Clear();
            showTableEntriesPage.FilterModal.Apply.Click();
            showTableEntriesPage.BusinessObjectItems.WaitCount(9);

            GetBindingMeta(documents[0]).Length.Should().Be(0);
        }
コード例 #13
0
        public void TestLinkFromFindShouldReferToDetailPage()
        {
            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.LoginAsSuperUser().SwitchTo <BusinessObjectTablePage>("DocumentPrintingInfo");

            printingInfoPage.BusinessObjectItems.Count.Wait().That(Is.GreaterThan(0));
            printingInfoPage.OpenFilter.Click();
            printingInfoPage.FilterModal.GetFilter("Id").Input.ClearAndInputText(document.Id.ToString());
            printingInfoPage.FilterModal.Apply.Click();

            printingInfoPage.BusinessObjectItems.WaitCount(1);
            printingInfoPage.BusinessObjectItems[0].FindColumn("Id").WaitText(document.Id.ToString());
            var detailsPage = printingInfoPage.BusinessObjectItems[0].Details.ClickAndGoTo <BusinessObjectDetailsPage>();

            detailsPage.Header.WaitPresence();

            CheckDocumentPrintingInfoFields(detailsPage, document);
        }
コード例 #14
0
        public void TestSortDocuments()
        {
            var id        = Guid.NewGuid().ToString();
            var documents = Enumerable.Range(0, 100)
                            .Select(x => new CqlActiveBoxState {
                PartitionKey = id, BoxId = Guid.NewGuid()
            })
                            .ToArray();

            using (var context = new CqlDbContext())
                context.InsertDocuments(documents);

            using var browser = new BrowserForTests();
            var showTableEntriesPage = browser.SwitchTo <BusinessObjectTablePage>("CqlActiveBoxState");

            showTableEntriesPage.OpenFilter.Click();
            showTableEntriesPage.FilterModal.GetFilter("PartitionKey").Input.ClearAndInputText(id);
            showTableEntriesPage.FilterModal.Apply.Click();

            showTableEntriesPage.TableHeader.SortByColumn("Header_BoxId");
            showTableEntriesPage.TableHeader.SortByColumn("Header_BoxId");
            showTableEntriesPage.BusinessObjectItems.Wait(x => x.FindColumn("BoxId").Text).That(Is.EqualTo(GetBoxIds(documents)));

            showTableEntriesPage.Paging.GoToNextPage();
            showTableEntriesPage.BusinessObjectItems.Wait(x => x.FindColumn("BoxId").Text).That(Is.EqualTo(GetBoxIds(documents, skip: 20)));
            showTableEntriesPage.Paging.PagesCount.Wait().That(Is.EqualTo(5));

            showTableEntriesPage.CountDropdown.CurrentCount.Click();
            showTableEntriesPage.CountDropdown.Menu.GetItemByUniqueTid("##50Items").Click();
            showTableEntriesPage.BusinessObjectItems.Wait(x => x.FindColumn("BoxId").Text).That(Is.EqualTo(GetBoxIds(documents, take: 50)));
            showTableEntriesPage.Paging.PagesCount.Wait().That(Is.EqualTo(2));

            showTableEntriesPage.CountDropdown.CurrentCount.Click();
            showTableEntriesPage.CountDropdown.Menu.GetItemByUniqueTid("##100Items").Click();
            showTableEntriesPage.BusinessObjectItems.Wait(x => x.FindColumn("BoxId").Text).That(Is.EqualTo(GetBoxIds(documents, take: 100)));
            showTableEntriesPage.Paging.WaitAbsence();
        }
コード例 #15
0
 private void Write(params TestDbSearcherObject[] objects)
 {
     using var context = new CqlDbContext();
     context.InsertDocuments(objects);
 }
コード例 #16
0
        public void TestSuperUserCanEditOrDeleteObject()
        {
            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.LoginAsSuperUser().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>();

            var id = detailsPage.RootAccordion.FindField("Id");

            id.Edit.WaitAbsence();

            var partyId = detailsPage.RootAccordion.FindField("PartyId");

            partyId.Edit.WaitAbsence();

            var fileId = detailsPage.RootAccordion.FindField("FileId");

            fileId.Edit.Click();
            fileId.FieldValue.Input.ClearAndInputText("Abc");
            fileId.Save.Click();
            fileId.Value.WaitText("Abc");

            var status = detailsPage.RootAccordion.FindField("Status");

            status.Edit.Click();
            status.FieldValue.EnumSelect.WaitText("Finished");
            status.FieldValue.EnumSelect.WaitItems(new[] { "Unknown", "Pending", "Failed", "Finished" });
            status.FieldValue.EnumSelect.SelectValueByText("Failed");
            status.Save.Click();
            status.Value.WaitText("Failed");

            var timestamp = detailsPage.RootAccordion.FindField("Timestamp");

            timestamp.Edit.Click();
            timestamp.FieldValue.Date.ClearAndInputText("13.12.2013");
            timestamp.Save.Click();
            timestamp.Value.Text.Wait().That(Does.StartWith("2013-12-13"));

            document.FileId = "Abc";
            document.Status = DocumentPrintingStatus.Failed;

            detailsPage = browser.Refresh(detailsPage);
            CheckDocumentPrintingInfoFields(detailsPage, document);

            detailsPage.Delete.Click();
            printingInfoPage = detailsPage.ConfirmDeleteObjectModal.Delete.ClickAndGoTo <BusinessObjectTablePage>();
            printingInfoPage.OpenFilter.Click();
            printingInfoPage.FilterModal.GetFilter("Id").Input.ClearAndInputText(document.Id.ToString());
            printingInfoPage.FilterModal.Apply.Click();
            printingInfoPage.NothingFound.WaitPresence();
            printingInfoPage.BusinessObjectItems.WaitAbsence();
        }