public void FormatResult_Returns_InternalSearchResult()
        {
            // Arrange.
            const string ProcessDisplayName = "Test Process";
            const int TotalRowCount = 123;
            const int PageNumber = 3;

            var items = new InfoList<IInfoClass>
                            {
                                new InfoItem { Field1 = "Value 1.1", Field2 = "Value 1.2", Field3 = "Value 1.3" },
                                new InfoItem { Field1 = "Value 2.1", Field2 = "Value 2.2", Field3 = "Value 2.3" }
                            };
            items.TotalRowCount = TotalRowCount;
            items.PageNumber = PageNumber;

            var filters = new List<Filter> { new Filter(), new Filter() };
            var layouts = new List<LayoutMetadata> { new LayoutMetadata(), new LayoutMetadata() };
            var relatedProcesses = new List<ProcessMetadata> { new ProcessMetadata(), new ProcessMetadata() };
            var appliedFilter = new Filter();
            var appliedLayout = new LayoutMetadata();

            var searchResult = new SearchCommandResult
                                   {
                                       ProcessDisplayName = ProcessDisplayName,
                                       AppliedFilter = appliedFilter,
                                       FilterParametersRequired = false,
                                       AppliedLayout = appliedLayout,
                                       Items = items,
                                       ResultColumns = { CreateColumnMetadata("Field1"), CreateColumnMetadata("Field3") },
                                       Filters = filters,
                                       Layouts = layouts,
                                       RelatedProcesses = relatedProcesses
                                   };

            var formatter = new InternalSearchResultFormatter(_colorTranslator);

            // Act.
            var result = formatter.FormatResult(searchResult);

            // Assert.
            Assert.IsNotNull(result);
            Assert.AreEqual(ProcessDisplayName, result.ProcessDisplayName);
            Assert.AreSame(appliedFilter, result.AppliedFilter);
            Assert.IsFalse(result.FilterParametersRequired);
            Assert.AreSame(appliedLayout, result.AppliedLayout);
            Assert.AreEqual(PageNumber, result.CurrentPage);
            Assert.AreEqual(TotalRowCount, result.TotalRowCount);
            Assert.IsTrue(result.Filters.SequenceEqual(filters));
            Assert.IsTrue(result.Layouts.SequenceEqual(layouts));
            Assert.IsTrue(result.RelatedProcesses.SequenceEqual(relatedProcesses));

            Assert.IsNotNull(result.Items);
            Assert.AreEqual(2, result.Items.Count);
            Assert.IsTrue(result.Items[0].Values.SequenceEqual(new[] { "Value 1.1", "Value 1.3" }));
            Assert.IsTrue(result.Items[1].Values.SequenceEqual(new[] { "Value 2.1", "Value 2.3" }));
        }
Esempio n. 2
0
        public void WhenColumnsCollectionIsEmpty_JsonFormatter_ShouldNotSerializeColumns()
        {
            // Arrange.
            var layout1 = new LayoutMetadata();
            var layout2 = new LayoutMetadata { Columns = { new ColumnMetadata() } };

            // Act / Assert.
            Assert.IsFalse(layout1.ShouldSerializeColumns());
            Assert.IsTrue(layout2.ShouldSerializeColumns());
        }
Esempio n. 3
0
        /// <summary>
        /// Creates layout metadata.
        /// </summary>
        /// <param name="layout">
        /// The layout.
        /// </param>
        /// <param name="includeColumns">
        /// True to include column metadata; otherwise, false.
        /// </param>
        /// <returns>
        /// The <see cref="LayoutMetadata"/>.
        /// </returns>
        public LayoutMetadata CreateLayoutMetadata(ILayoutInfo layout, bool includeColumns)
        {
            var layoutMetadata = new LayoutMetadata { Id = layout.Id, Name = layout.Name, IsAdminLayout = layout.IsAdminLayout ?? false };

            if (includeColumns)
            {
                var processMetadata = ProcessMetadataRepository.GetProcessMetadata(layout.ProcessSystemName);

                foreach (var gridColumn in GetGridColumns(layout.LayoutDefinition))
                {
                    if (gridColumn.SystemName == Constants.DerivedProcessDisplayNameColumnName)
                    {
                        layoutMetadata.Columns.Add(CreateDerivedProcessDisplayNameColumnMetadata(gridColumn));
                        continue;
                    }

                    IFieldMetadata field;
                    if (!processMetadata.TryGetField(gridColumn.SystemName, out field))
                    {
                        continue;
                    }

                    layoutMetadata.Columns.Add(CreateColumnMetadata(gridColumn, field));

                    if (field.BackcolorField != null)
                    {
                        layoutMetadata.Columns.Add(CreateBackcolorColumnMetadata(field));
                    }

                    if (field.ColumnType == ColumnTypes.File)
                    {
                        layoutMetadata.Columns.Add(CreateFileUrlColumnMetadata(field));
                    }
                }
            }

            return layoutMetadata;
        }
        public void WhenItemsIsNull_FormatResult_ReturnsValidResult()
        {
            // Arrange.
            const string ProcessDisplayName = "Test Process";

            var filters = new List<Filter> { new Filter(), new Filter() };
            var layouts = new List<LayoutMetadata> { new LayoutMetadata(), new LayoutMetadata() };
            var relatedProcesses = new List<ProcessMetadata> { new ProcessMetadata(), new ProcessMetadata() };
            var appliedFilter = new Filter();
            var appliedLayout = new LayoutMetadata();

            var searchResult = new SearchCommandResult
                                   {
                                       ProcessDisplayName = ProcessDisplayName,
                                       AppliedFilter = appliedFilter,
                                       FilterParametersRequired = true,
                                       AppliedLayout = appliedLayout,
                                       Items = null,
                                       ResultColumns = { CreateColumnMetadata("Field1"), CreateColumnMetadata("Field3") },
                                       Filters = filters,
                                       Layouts = layouts,
                                       RelatedProcesses = relatedProcesses
                                   };

            var formatter = new PublicSearchResultFormatter();

            // Act.
            var result = formatter.FormatResult(searchResult) as PublicSearchResult;

            // Assert.
            Assert.IsNotNull(result);
            Assert.AreEqual(ProcessDisplayName, result.ProcessDisplayName);
            Assert.AreSame(appliedFilter, result.AppliedFilter);
            Assert.IsTrue(result.FilterParametersRequired);
            Assert.AreSame(appliedLayout, result.AppliedLayout);
            Assert.AreEqual(-1, result.CurrentPage);
            Assert.AreEqual(0, result.TotalRowCount);
            Assert.IsTrue(result.Filters.SequenceEqual(filters));
            Assert.IsTrue(result.Layouts.SequenceEqual(layouts));
            Assert.IsTrue(result.RelatedProcesses.SequenceEqual(relatedProcesses));
            Assert.IsNull(result.Items);
        }
Esempio n. 5
0
        public void GetProcessLayout_Returns_LayoutMetadata()
        {
            // Arrange.
            var layoutMetadata = new LayoutMetadata();

            Mock.Arrange(() => _searchUtils.GetLayoutMetadata(LayoutId, true)).Returns(layoutMetadata);

            var controller = CreateProcessController();

            // Act.
            var result = controller.GetProcessLayout(ProcessName, LayoutId) as OkNegotiatedContentResult<LayoutMetadata>;

            // Assert.
            Assert.IsNotNull(result);
            Assert.AreSame(layoutMetadata, result.Content);
        }
Esempio n. 6
0
        private SortList GetSortDescriptors(LayoutMetadata layoutDefinition)
        {
            if (ApplyLayoutSortDescriptors)
            {
                return
                    new SortList(
                        layoutDefinition.Columns.Where(c => c.SortDirection != SortDirection.None)
                                        .OrderBy(c => c.SortLevel)
                                        .Select(c => new SortDescriptor(c.SystemName, c.SortDirection)));
            }

            return new SortList(SortDescriptors);
        }
Esempio n. 7
0
        public void GetCurrentUserLayouts_Returns_CurrentUserLayouts()
        {
            // Arrange.
            var layoutInfo1 = CreateLayout(1, "Layout 1");
            var layoutInfo2 = CreateLayout(1, "Layout 2");
            var layoutInfo3 = CreateLayout(1, "Layout 3");

            Mock.Arrange(() => _layoutManager.GetCurrentUserLayouts(ProcessName))
                .Returns(() => new InfoList<ILayoutInfo> { layoutInfo1, layoutInfo2, layoutInfo3 });

            var layoutMetadata1 = new LayoutMetadata { Id = 1 };
            Mock.Arrange(() => _layoutMetadataFactory.CreateLayoutMetadata(layoutInfo1, false)).Returns(layoutMetadata1);
            var layoutMetadata2 = new LayoutMetadata { Id = 2 };
            Mock.Arrange(() => _layoutMetadataFactory.CreateLayoutMetadata(layoutInfo2, false)).Returns(layoutMetadata2);
            var layoutMetadata3 = new LayoutMetadata { Id = 3 };
            Mock.Arrange(() => _layoutMetadataFactory.CreateLayoutMetadata(layoutInfo3, false)).Returns(layoutMetadata3);

            var searchUtils = CreateSearchUtils();

            // Act.
            var result = searchUtils.GetCurrentUserLayouts(ProcessName).ToArray();

            // Assert.
            Assert.IsTrue(result.SequenceEqual(new[] { layoutMetadata1, layoutMetadata2, layoutMetadata3 }));
        }
Esempio n. 8
0
        public void GetLayoutMetadata_Returns_LayoutMetadata()
        {
            // Arrange.
            var layoutInfo = CreateLayout(LayoutId);
            var layoutMetadata = new LayoutMetadata();

            Mock.Arrange(() => _layoutManager.GetLayoutInfo(LayoutId)).Returns(layoutInfo);
            Mock.Arrange(() => _layoutMetadataFactory.CreateLayoutMetadata(layoutInfo, true)).Returns(layoutMetadata);

            var searchUtils = CreateSearchUtils();

            // Act.
            var result = searchUtils.GetLayoutMetadata(LayoutId, true);

            // Assert.
            Assert.AreSame(layoutMetadata, result);
        }